{"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-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2558357f66a203d4", "name": "Stray `console.log` in TS/JS \u2014 tests/integration/cross-adapter-contract.test.ts:157", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/integration/cross-adapter-contract.test.ts: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-33af7d047877cbc7", "name": "Stray `console.log` in TS/JS \u2014 tests/integration/drift-integration.test.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/integration/drift-integration.test.ts:52"}, "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-172e96fd9bebf793", "name": "Stray `console.log` in TS/JS \u2014 tests/production/all-exchanges.test.ts:157", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/production/all-exchanges.test.ts: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-6b3594f3e1881501", "name": "Stray `console.log` in TS/JS \u2014 tests/production/basic-flow.test.ts:170", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/production/basic-flow.test.ts:170"}, "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-290cb92c33d8e54f", "name": "Stray `console.log` in TS/JS \u2014 tests/production/stress-test.ts:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/production/stress-test.ts:99"}, "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-964939cd89434c70", "name": "Stray `console.log` in TS/JS \u2014 tests/production/websocket-stability.test.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/production/websocket-stability.test.ts:73"}, "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-93260e1fa3705e97", "name": "Stray `console.log` in TS/JS \u2014 tests/production/live-api-validation.ts:460", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/production/live-api-validation.ts:460"}, "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-0bed4c5b4deb5076", "name": "Stray `console.log` in TS/JS \u2014 tests/production/trading-simulation.test.ts:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/production/trading-simulation.test.ts:122"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0f1482a6932dc917", "name": "Stray `console.log` in TS/JS \u2014 tests/api-contracts/hyperliquid.contract.test.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/api-contracts/hyperliquid.contract.test.ts: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-4d32caa1996981e6", "name": "Stray `console.log` in TS/JS \u2014 tests/api-contracts/lighter.contract.test.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/api-contracts/lighter.contract.test.ts:48"}, "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-fa23b13dc258ae12", "name": "Stray `console.log` in TS/JS \u2014 tests/manual/lighter-private-api.test.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/manual/lighter-private-api.test.ts:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d853d9d0be808916", "name": "Stray `console.log` in TS/JS \u2014 tests/manual/api-verification.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/manual/api-verification.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-281609f6248c37f9", "name": "Stray `console.log` in TS/JS \u2014 tests/manual/api-verification-v2.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/manual/api-verification-v2.ts:9"}, "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-baf6b464e8d0132b", "name": "Stray `console.log` in TS/JS \u2014 scripts/quick-test.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/quick-test.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-5956414d3641a9e5", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-live-apis.ts:194", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-live-apis.ts:194"}, "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-38c7dbbb8c15b7a1", "name": "Stray `console.log` in TS/JS \u2014 scripts/smoke-test.ts:162", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-test.ts:162"}, "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-5278afc3d527fca8", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-api-compatibility.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-api-compatibility.ts:65"}, "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-01a075c1bbcfcbb9", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-exchanges.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-exchanges.ts:38"}, "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-0ace471bd16d01f6", "name": "Stray `console.log` in TS/JS \u2014 examples/websocket-streaming.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/websocket-streaming.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-201ede380311fa92", "name": "Stray `console.log` in TS/JS \u2014 examples/risk-management.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/risk-management.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-d09016090aeab930", "name": "Stray `console.log` in TS/JS \u2014 examples/dca-strategy.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/dca-strategy.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-a5da20c6670aa72e", "name": "Stray `console.log` in TS/JS \u2014 examples/03-error-handling.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/03-error-handling.ts:26"}, "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-3ed4c897caadba2a", "name": "Stray `console.log` in TS/JS \u2014 examples/portfolio-management.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/portfolio-management.ts:52"}, "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-b5a5c541263519a3", "name": "Stray `console.log` in TS/JS \u2014 examples/nado-basic.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/nado-basic.ts:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6733ed4866aa8686", "name": "Stray `console.log` in TS/JS \u2014 examples/04-health-monitoring.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/04-health-monitoring.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-cb016706eb8fcaf4", "name": "Stray `console.log` in TS/JS \u2014 examples/basic-trading.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/basic-trading.ts:26"}, "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-890e81dc497a7492", "name": "Stray `console.log` in TS/JS \u2014 examples/01-basic-trading.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/01-basic-trading.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-873fb70042257442", "name": "Stray `console.log` in TS/JS \u2014 examples/02-market-data.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/02-market-data.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-b75c02560d05619c", "name": "Stray `console.log` in TS/JS \u2014 examples/grvt-basic.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/grvt-basic.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-6fbd9bb679ae483d", "name": "Stray `console.log` in TS/JS \u2014 examples/lighter-trading.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/lighter-trading.ts:33"}, "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-c15a4d88c4acad6d", "name": "Stray `console.log` in TS/JS \u2014 examples/basic-usage.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/basic-usage.ts:23"}, "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-d6759fb80c60946d", "name": "Stray `console.log` in TS/JS \u2014 examples/extended-basic.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/extended-basic.ts:28"}, "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-992c45203885b953", "name": "Stray `console.log` in TS/JS \u2014 src/adapters/base/mixins/MetricsTrackerMixin.ts:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/base/mixins/MetricsTrackerMixin.ts:114"}, "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-4bb8303d08b8f111", "name": "Stray `console.log` in TS/JS \u2014 src/adapters/base/mixins/CacheManagerMixin.ts:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/base/mixins/CacheManagerMixin.ts:106"}, "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-25e42a3babd6d09d", "name": "Stray `console.log` in TS/JS \u2014 src/adapters/lighter/error-codes.ts:237", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/lighter/error-codes.ts:237"}, "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-a52647a443f9915f", "name": "Stray `console.log` in TS/JS \u2014 src/adapters/extended/ExtendedAdapter.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/extended/ExtendedAdapter.ts:41"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-31140cee9356c05b", "name": "Stray `console.log` in TS/JS \u2014 src/adapters/grvt/GRVTErrorMapper.ts:169", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/grvt/GRVTErrorMapper.ts:169"}, "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-bdd06db23a955adb", "name": "Stray `console.log` in TS/JS \u2014 src/adapters/backpack/error-codes.ts:155", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/backpack/error-codes.ts:155"}, "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-8a9237f512fb0150", "name": "Stray `console.log` in TS/JS \u2014 src/adapters/paradex/ParadexWebSocketWrapper.ts:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/paradex/ParadexWebSocketWrapper.ts:81"}, "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-9e5663cef0181bfa", "name": "Stray `console.log` in TS/JS \u2014 src/adapters/paradex/ParadexAdapter.ts:669", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/paradex/ParadexAdapter.ts:669"}, "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-fd0e69f1173ab907", "name": "Stray `console.log` in TS/JS \u2014 src/adapters/paradex/ParadexErrorMapper.ts:191", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/paradex/ParadexErrorMapper.ts:191"}, "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-36d57642252b0a40", "name": "Stray `console.log` in TS/JS \u2014 src/adapters/paradex/ParadexParaclearWrapper.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/paradex/ParadexParaclearWrapper.ts:46"}, "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-b86d5f67f9c2e44b", "name": "Stray `console.log` in TS/JS \u2014 src/adapters/nado/error-codes.ts:149", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/nado/error-codes.ts:149"}, "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-e33e9ba082a81b8b", "name": "Stray `console.log` in TS/JS \u2014 src/adapters/nado/NadoAdapter.ts:813", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/nado/NadoAdapter.ts:813"}, "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-553ec06764c695c0", "name": "Stray `console.log` in TS/JS \u2014 src/types/adapter.ts:182", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/types/adapter.ts:182"}, "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-55420dc0d866dbb5", "name": "Stray `console.log` in TS/JS \u2014 src/utils/config.ts:107", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/utils/config.ts:107"}, "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-c73592387609e338", "name": "Stray `console.log` in TS/JS \u2014 src/core/resilience.ts:88", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/core/resilience.ts:88"}, "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-6c0ea676cb727940", "name": "Stray `console.log` in TS/JS \u2014 src/core/retry.ts:135", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/core/retry.ts:135"}, "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-0200d8a10bcd549b", "name": "Stray `console.log` in TS/JS \u2014 src/core/logger.ts:295", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/core/logger.ts:295"}, "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-58c3b2824cc7d96c", "name": "Stray `console.log` in TS/JS \u2014 src/core/calculations/pnl.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/core/calculations/pnl.ts:20"}, "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-8c97845d9fbc71dc", "name": "Privileged port 15 in use", "shortDescription": {"text": "Privileged port 15 in use"}, "fullDescription": {"text": "Port 15 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-204f5e97f31c121e", "name": "Privileged port 4 in use", "shortDescription": {"text": "Privileged port 4 in use"}, "fullDescription": {"text": "Port 4 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb5addf1235c4c13", "name": "Possible secret in tests/integration/backpack-adapter.test.ts", "shortDescription": {"text": "Possible secret in tests/integration/backpack-adapter.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-108f49c2152a3352", "name": "Possible secret in tests/unit/pacifica-adapter.test.ts", "shortDescription": {"text": "Possible secret in tests/unit/pacifica-adapter.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-cc13ee495ee43266", "name": "Possible secret in tests/unit/loggerIntegration.test.ts", "shortDescription": {"text": "Possible secret in tests/unit/loggerIntegration.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-384bb395c12e0c49", "name": "Possible secret in tests/unit/config-adapter-alignment.test.ts", "shortDescription": {"text": "Possible secret in tests/unit/config-adapter-alignment.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-cf953aa77ea74293", "name": "Possible secret in tests/unit/backpack-adapter-extended.test.ts", "shortDescription": {"text": "Possible secret in tests/unit/backpack-adapter-extended.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-a107b8f4da05e1cf", "name": "Possible secret in tests/unit/logger.test.ts", "shortDescription": {"text": "Possible secret in tests/unit/logger.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-c1c97bc89be97da0", "name": "Possible secret in tests/unit/config.test.ts", "shortDescription": {"text": "Possible secret in tests/unit/config.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e400a7c2df12a0e0", "name": "Possible secret in tests/unit/auth-classes.test.ts", "shortDescription": {"text": "Possible secret in tests/unit/auth-classes.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4e4eb40fdbd9e7ca", "name": "Possible secret in tests/unit/backpack-adapter.test.ts", "shortDescription": {"text": "Possible secret in tests/unit/backpack-adapter.test.ts"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-278320a8c4784f23", "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-5684ea51c61781b0", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@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-c71f3272f502b242", "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-cb639d9a10a47b23", "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-f98655b984362e7c", "name": "Very large file: tests/unit/jupiter-adapter.test.ts (2012 lines)", "shortDescription": {"text": "Very large file: tests/unit/jupiter-adapter.test.ts (2012 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-fffe08326f4a0a8f", "name": "Very large file: tests/unit/dydx-adapter.test.ts (1948 lines)", "shortDescription": {"text": "Very large file: tests/unit/dydx-adapter.test.ts (1948 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-dbea33a385bf5748", "name": "Very large file: tests/unit/gmx-adapter.test.ts (1930 lines)", "shortDescription": {"text": "Very large file: tests/unit/gmx-adapter.test.ts (1930 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-9051a01a363d920f", "name": "Very large file: tests/unit/reya-adapter.test.ts (1587 lines)", "shortDescription": {"text": "Very large file: tests/unit/reya-adapter.test.ts (1587 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-31b8125e4195dd2d", "name": "Very large file: tests/unit/drift-adapter.test.ts (2304 lines)", "shortDescription": {"text": "Very large file: tests/unit/drift-adapter.test.ts (2304 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-b3ed68815bca2f8c", "name": "Node manifest has dependencies but no lockfile: package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: 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 744 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 15 placeholder/mock markers across 6 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-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f4a8d7b0765b3b1a", "name": "Commented-code block (5 lines) in tests/integration/cross-adapter-contract.test.ts:105", "shortDescription": {"text": "Commented-code block (5 lines) in tests/integration/cross-adapter-contract.test.ts:105"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-639172b7738a8bba", "name": "Commented-code block (5 lines) in tests/unit/paradex-websocket-wrapper.test.ts:62", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/paradex-websocket-wrapper.test.ts:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5c6dfec1053fe5cf", "name": "Commented-code block (5 lines) in tests/unit/gmx-adapter.test.ts:1414", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/gmx-adapter.test.ts:1414"}, "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-7630ee39467a5fa0", "name": "Commented-code block (6 lines) in scripts/check-pattern-a.ts:248", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/check-pattern-a.ts:248"}, "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-62c10a6194e68e14", "name": "Commented-code block (5 lines) in src/adapters/dydx/DydxAdapter.ts:142", "shortDescription": {"text": "Commented-code block (5 lines) in src/adapters/dydx/DydxAdapter.ts:142"}, "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-57bf6bfce2f75a3a", "name": "Commented-code block (6 lines) in src/adapters/gmx/GmxOrderBuilder.ts:268", "shortDescription": {"text": "Commented-code block (6 lines) in src/adapters/gmx/GmxOrderBuilder.ts:268"}, "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-f6cb1e95b324067a", "name": "Legacy-named symbol `lighterLegacy` in src/adapters/lighter/LighterAdapter.ts:96", "shortDescription": {"text": "Legacy-named symbol `lighterLegacy` in src/adapters/lighter/LighterAdapter.ts:96"}, "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-f58f6ea1b22a27dc", "name": "Commented-code block (8 lines) in src/adapters/lighter/signer/LighterSigner.ts:165", "shortDescription": {"text": "Commented-code block (8 lines) in src/adapters/lighter/signer/LighterSigner.ts:165"}, "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-042bb0825c08ca52", "name": "Commented-code block (5 lines) in src/adapters/standx/StandxAdapter.ts:406", "shortDescription": {"text": "Commented-code block (5 lines) in src/adapters/standx/StandxAdapter.ts:406"}, "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-d5240755ab22fc99", "name": "Commented-code block (5 lines) in src/adapters/extended/ExtendedAdapter.ts:152", "shortDescription": {"text": "Commented-code block (5 lines) in src/adapters/extended/ExtendedAdapter.ts:152"}, "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-9d5b0dad7da6167d", "name": "Commented-code block (5 lines) in src/adapters/extended/types.ts:479", "shortDescription": {"text": "Commented-code block (5 lines) in src/adapters/extended/types.ts:479"}, "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-a8b4ed59428c000a", "name": "Commented-code block (5 lines) in src/adapters/katana/KatanaAuth.ts:162", "shortDescription": {"text": "Commented-code block (5 lines) in src/adapters/katana/KatanaAuth.ts:162"}, "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-829dca07d5718ffe", "name": "Commented-code block (5 lines) in src/adapters/grvt/GRVTWebSocketWrapper.ts:87", "shortDescription": {"text": "Commented-code block (5 lines) in src/adapters/grvt/GRVTWebSocketWrapper.ts:87"}, "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-e607f97bb1041ca9", "name": "Commented-code block (6 lines) in src/adapters/backpack/BackpackAdapter.ts:522", "shortDescription": {"text": "Commented-code block (6 lines) in src/adapters/backpack/BackpackAdapter.ts:522"}, "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-14781db5c9cdd8e8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/adapters/nado/NadoAdapter.ts:257", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/adapters/nado/NadoAdapter.ts:257"}, "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-bdf0f0d638117436", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/core/resilience.ts:214", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/core/resilience.ts:214"}, "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-3482f7e5dd70cd1a", "name": "6 env vars used in code but missing from .env.example", "shortDescription": {"text": "6 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `EXTENDED_STARKNET_ACCOUNT_ADDRESS`, `EXTENDED_STARKNET_PRIVATE_KEY`, `LIGHTER_API_PRIVATE_KEY`, `PRIVATE_KEY`, `STARKNET_ACCOUNT_ADDRESS`, `STARKNET_PRIVATE_KEY`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/23767"}, "properties": {"repository": "0xarkstar/PD-AIO-SDK", "repoUrl": "https://github.com/0xarkstar/PD-AIO-SDK", "branch": "main"}, "results": [{"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-2558357f66a203d4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/integration/cross-adapter-contract.test.ts:157"}, "properties": {"repobilityId": "b26c9bf7c8094e4b", "scanner": "scanner-primary", "fingerprint": "2558357f66a203d4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33af7d047877cbc7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/integration/drift-integration.test.ts:52"}, "properties": {"repobilityId": "ea54e8a4e5579d2c", "scanner": "scanner-primary", "fingerprint": "33af7d047877cbc7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-172e96fd9bebf793", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/production/all-exchanges.test.ts:157"}, "properties": {"repobilityId": "6e6b254bbaca3b46", "scanner": "scanner-primary", "fingerprint": "172e96fd9bebf793", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6b3594f3e1881501", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/production/basic-flow.test.ts:170"}, "properties": {"repobilityId": "9768f9adc908460a", "scanner": "scanner-primary", "fingerprint": "6b3594f3e1881501", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-290cb92c33d8e54f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/production/stress-test.ts:99"}, "properties": {"repobilityId": "d3936f986a806ab3", "scanner": "scanner-primary", "fingerprint": "290cb92c33d8e54f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-964939cd89434c70", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/production/websocket-stability.test.ts:73"}, "properties": {"repobilityId": "be14db5a91194e3c", "scanner": "scanner-primary", "fingerprint": "964939cd89434c70", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-93260e1fa3705e97", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/production/live-api-validation.ts:460"}, "properties": {"repobilityId": "f56b22eb4dc6de68", "scanner": "scanner-primary", "fingerprint": "93260e1fa3705e97", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0bed4c5b4deb5076", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/production/trading-simulation.test.ts:122"}, "properties": {"repobilityId": "59523b0f1529ce40", "scanner": "scanner-primary", "fingerprint": "0bed4c5b4deb5076", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f1482a6932dc917", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/api-contracts/hyperliquid.contract.test.ts:47"}, "properties": {"repobilityId": "10ad56f1d84f63cc", "scanner": "scanner-primary", "fingerprint": "0f1482a6932dc917", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4d32caa1996981e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/api-contracts/lighter.contract.test.ts:48"}, "properties": {"repobilityId": "b33717b27af0f0f8", "scanner": "scanner-primary", "fingerprint": "4d32caa1996981e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fa23b13dc258ae12", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/manual/lighter-private-api.test.ts:25"}, "properties": {"repobilityId": "8aba8ede48388dc3", "scanner": "scanner-primary", "fingerprint": "fa23b13dc258ae12", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d853d9d0be808916", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/manual/api-verification.ts:32"}, "properties": {"repobilityId": "b21d6120f05588b0", "scanner": "scanner-primary", "fingerprint": "d853d9d0be808916", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-281609f6248c37f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/manual/api-verification-v2.ts:9"}, "properties": {"repobilityId": "09ef176f4cc8cc24", "scanner": "scanner-primary", "fingerprint": "281609f6248c37f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-baf6b464e8d0132b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/quick-test.ts:7"}, "properties": {"repobilityId": "e5f4f9a41a775193", "scanner": "scanner-primary", "fingerprint": "baf6b464e8d0132b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5956414d3641a9e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-live-apis.ts:194"}, "properties": {"repobilityId": "fde2ccf2688f5916", "scanner": "scanner-primary", "fingerprint": "5956414d3641a9e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-38c7dbbb8c15b7a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-test.ts:162"}, "properties": {"repobilityId": "5f2b372ac377e7d4", "scanner": "scanner-primary", "fingerprint": "38c7dbbb8c15b7a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5278afc3d527fca8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-api-compatibility.ts:65"}, "properties": {"repobilityId": "214da1fe1eb52732", "scanner": "scanner-primary", "fingerprint": "5278afc3d527fca8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-01a075c1bbcfcbb9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-exchanges.ts:38"}, "properties": {"repobilityId": "5274767464245658", "scanner": "scanner-primary", "fingerprint": "01a075c1bbcfcbb9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ace471bd16d01f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/websocket-streaming.ts:19"}, "properties": {"repobilityId": "39f4917c19a7304e", "scanner": "scanner-primary", "fingerprint": "0ace471bd16d01f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-201ede380311fa92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/risk-management.ts:32"}, "properties": {"repobilityId": "d6a59817e7352603", "scanner": "scanner-primary", "fingerprint": "201ede380311fa92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d09016090aeab930", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/dca-strategy.ts:32"}, "properties": {"repobilityId": "66f44aa5c43cf09c", "scanner": "scanner-primary", "fingerprint": "d09016090aeab930", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a5da20c6670aa72e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/03-error-handling.ts:26"}, "properties": {"repobilityId": "93f671c52932215d", "scanner": "scanner-primary", "fingerprint": "a5da20c6670aa72e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ed4c897caadba2a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/portfolio-management.ts:52"}, "properties": {"repobilityId": "872b9d2214f718c5", "scanner": "scanner-primary", "fingerprint": "3ed4c897caadba2a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5a5c541263519a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/nado-basic.ts:40"}, "properties": {"repobilityId": "1646c7a306102fdd", "scanner": "scanner-primary", "fingerprint": "b5a5c541263519a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6733ed4866aa8686", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/04-health-monitoring.ts:21"}, "properties": {"repobilityId": "35bc945625fbe2b8", "scanner": "scanner-primary", "fingerprint": "6733ed4866aa8686", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb016706eb8fcaf4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/basic-trading.ts:26"}, "properties": {"repobilityId": "bac9fbddb0e7dc70", "scanner": "scanner-primary", "fingerprint": "cb016706eb8fcaf4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-890e81dc497a7492", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/01-basic-trading.ts:22"}, "properties": {"repobilityId": "f4d0c8cf24067e1a", "scanner": "scanner-primary", "fingerprint": "890e81dc497a7492", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-873fb70042257442", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/02-market-data.ts:21"}, "properties": {"repobilityId": "67efc600affd828f", "scanner": "scanner-primary", "fingerprint": "873fb70042257442", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b75c02560d05619c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/grvt-basic.ts:21"}, "properties": {"repobilityId": "fb3c257e2c131413", "scanner": "scanner-primary", "fingerprint": "b75c02560d05619c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6fbd9bb679ae483d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/lighter-trading.ts:33"}, "properties": {"repobilityId": "53dc7fceba1c30db", "scanner": "scanner-primary", "fingerprint": "6fbd9bb679ae483d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c15a4d88c4acad6d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/basic-usage.ts:23"}, "properties": {"repobilityId": "03ee9e76d616dd83", "scanner": "scanner-primary", "fingerprint": "c15a4d88c4acad6d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d6759fb80c60946d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/extended-basic.ts:28"}, "properties": {"repobilityId": "27351ffecf013ac7", "scanner": "scanner-primary", "fingerprint": "d6759fb80c60946d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-992c45203885b953", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/base/mixins/MetricsTrackerMixin.ts:114"}, "properties": {"repobilityId": "36a1f38520784095", "scanner": "scanner-primary", "fingerprint": "992c45203885b953", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4bb8303d08b8f111", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/base/mixins/CacheManagerMixin.ts:106"}, "properties": {"repobilityId": "c0c83d35694c738a", "scanner": "scanner-primary", "fingerprint": "4bb8303d08b8f111", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-25e42a3babd6d09d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/lighter/error-codes.ts:237"}, "properties": {"repobilityId": "e30de220464079bc", "scanner": "scanner-primary", "fingerprint": "25e42a3babd6d09d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a52647a443f9915f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/extended/ExtendedAdapter.ts:41"}, "properties": {"repobilityId": "5558555594916aa6", "scanner": "scanner-primary", "fingerprint": "a52647a443f9915f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-31140cee9356c05b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/grvt/GRVTErrorMapper.ts:169"}, "properties": {"repobilityId": "ff1ee4ad6e6af249", "scanner": "scanner-primary", "fingerprint": "31140cee9356c05b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bdd06db23a955adb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/backpack/error-codes.ts:155"}, "properties": {"repobilityId": "ffa98faedfa51b1b", "scanner": "scanner-primary", "fingerprint": "bdd06db23a955adb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8a9237f512fb0150", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/paradex/ParadexWebSocketWrapper.ts:81"}, "properties": {"repobilityId": "a7ecc29e4f00f5d2", "scanner": "scanner-primary", "fingerprint": "8a9237f512fb0150", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e5663cef0181bfa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/paradex/ParadexAdapter.ts:669"}, "properties": {"repobilityId": "67fcb817944c5fbe", "scanner": "scanner-primary", "fingerprint": "9e5663cef0181bfa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fd0e69f1173ab907", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/paradex/ParadexErrorMapper.ts:191"}, "properties": {"repobilityId": "0fb977a8b70cd6ac", "scanner": "scanner-primary", "fingerprint": "fd0e69f1173ab907", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36d57642252b0a40", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/paradex/ParadexParaclearWrapper.ts:46"}, "properties": {"repobilityId": "dbfb7caf1902eb26", "scanner": "scanner-primary", "fingerprint": "36d57642252b0a40", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b86d5f67f9c2e44b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/nado/error-codes.ts:149"}, "properties": {"repobilityId": "3d74f70879a16cce", "scanner": "scanner-primary", "fingerprint": "b86d5f67f9c2e44b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e33e9ba082a81b8b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/adapters/nado/NadoAdapter.ts:813"}, "properties": {"repobilityId": "a243ec86748f2f78", "scanner": "scanner-primary", "fingerprint": "e33e9ba082a81b8b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-553ec06764c695c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/types/adapter.ts:182"}, "properties": {"repobilityId": "ae18f55e68592eb0", "scanner": "scanner-primary", "fingerprint": "553ec06764c695c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-55420dc0d866dbb5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/utils/config.ts:107"}, "properties": {"repobilityId": "ec91fd13389fe829", "scanner": "scanner-primary", "fingerprint": "55420dc0d866dbb5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c73592387609e338", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/core/resilience.ts:88"}, "properties": {"repobilityId": "17d1736cde7a668f", "scanner": "scanner-primary", "fingerprint": "c73592387609e338", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6c0ea676cb727940", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/core/retry.ts:135"}, "properties": {"repobilityId": "3ccf468e68d80298", "scanner": "scanner-primary", "fingerprint": "6c0ea676cb727940", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0200d8a10bcd549b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/core/logger.ts:295"}, "properties": {"repobilityId": "2238a1a1eb6424b3", "scanner": "scanner-primary", "fingerprint": "0200d8a10bcd549b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-58c3b2824cc7d96c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/core/calculations/pnl.ts:20"}, "properties": {"repobilityId": "be8657458033ccd3", "scanner": "scanner-primary", "fingerprint": "58c3b2824cc7d96c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8c97845d9fbc71dc", "level": "warning", "message": {"text": "Privileged port 15 in use"}, "properties": {"repobilityId": "3340f9a170f285cd", "scanner": "scanner-primary", "fingerprint": "8c97845d9fbc71dc", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "monitoring/alertmanager/config.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-204f5e97f31c121e", "level": "warning", "message": {"text": "Privileged port 4 in use"}, "properties": {"repobilityId": "1594bfeff919296e", "scanner": "scanner-primary", "fingerprint": "204f5e97f31c121e", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "monitoring/alertmanager/config.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-cb5addf1235c4c13", "level": "error", "message": {"text": "Possible secret in tests/integration/backpack-adapter.test.ts"}, "properties": {"repobilityId": "3b753a2b85b18e36", "scanner": "scanner-primary", "fingerprint": "cb5addf1235c4c13", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/integration/backpack-adapter.test.ts"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-108f49c2152a3352", "level": "error", "message": {"text": "Possible secret in tests/unit/pacifica-adapter.test.ts"}, "properties": {"repobilityId": "ff0b329fa29b61d3", "scanner": "scanner-primary", "fingerprint": "108f49c2152a3352", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/pacifica-adapter.test.ts"}, "region": {"startLine": 222}}}]}, {"ruleId": "scanner-108f49c2152a3352", "level": "error", "message": {"text": "Possible secret in tests/unit/pacifica-adapter.test.ts"}, "properties": {"repobilityId": "ff0b329fa29b61d3", "scanner": "scanner-primary", "fingerprint": "108f49c2152a3352", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/pacifica-adapter.test.ts"}, "region": {"startLine": 276}}}]}, {"ruleId": "scanner-108f49c2152a3352", "level": "error", "message": {"text": "Possible secret in tests/unit/pacifica-adapter.test.ts"}, "properties": {"repobilityId": "ff0b329fa29b61d3", "scanner": "scanner-primary", "fingerprint": "108f49c2152a3352", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/pacifica-adapter.test.ts"}, "region": {"startLine": 526}}}]}, {"ruleId": "scanner-108f49c2152a3352", "level": "error", "message": {"text": "Possible secret in tests/unit/pacifica-adapter.test.ts"}, "properties": {"repobilityId": "ff0b329fa29b61d3", "scanner": "scanner-primary", "fingerprint": "108f49c2152a3352", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/pacifica-adapter.test.ts"}, "region": {"startLine": 581}}}]}, {"ruleId": "scanner-108f49c2152a3352", "level": "error", "message": {"text": "Possible secret in tests/unit/pacifica-adapter.test.ts"}, "properties": {"repobilityId": "ff0b329fa29b61d3", "scanner": "scanner-primary", "fingerprint": "108f49c2152a3352", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/pacifica-adapter.test.ts"}, "region": {"startLine": 608}}}]}, {"ruleId": "scanner-108f49c2152a3352", "level": "error", "message": {"text": "Possible secret in tests/unit/pacifica-adapter.test.ts"}, "properties": {"repobilityId": "ff0b329fa29b61d3", "scanner": "scanner-primary", "fingerprint": "108f49c2152a3352", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/pacifica-adapter.test.ts"}, "region": {"startLine": 669}}}]}, {"ruleId": "scanner-108f49c2152a3352", "level": "error", "message": {"text": "Possible secret in tests/unit/pacifica-adapter.test.ts"}, "properties": {"repobilityId": "ff0b329fa29b61d3", "scanner": "scanner-primary", "fingerprint": "108f49c2152a3352", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/pacifica-adapter.test.ts"}, "region": {"startLine": 702}}}]}, {"ruleId": "scanner-108f49c2152a3352", "level": "error", "message": {"text": "Possible secret in tests/unit/pacifica-adapter.test.ts"}, "properties": {"repobilityId": "ff0b329fa29b61d3", "scanner": "scanner-primary", "fingerprint": "108f49c2152a3352", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/pacifica-adapter.test.ts"}, "region": {"startLine": 733}}}]}, {"ruleId": "scanner-108f49c2152a3352", "level": "error", "message": {"text": "Possible secret in tests/unit/pacifica-adapter.test.ts"}, "properties": {"repobilityId": "ff0b329fa29b61d3", "scanner": "scanner-primary", "fingerprint": "108f49c2152a3352", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/pacifica-adapter.test.ts"}, "region": {"startLine": 776}}}]}, {"ruleId": "scanner-108f49c2152a3352", "level": "error", "message": {"text": "Possible secret in tests/unit/pacifica-adapter.test.ts"}, "properties": {"repobilityId": "ff0b329fa29b61d3", "scanner": "scanner-primary", "fingerprint": "108f49c2152a3352", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/pacifica-adapter.test.ts"}, "region": {"startLine": 799}}}]}, {"ruleId": "scanner-108f49c2152a3352", "level": "error", "message": {"text": "Possible secret in tests/unit/pacifica-adapter.test.ts"}, "properties": {"repobilityId": "ff0b329fa29b61d3", "scanner": "scanner-primary", "fingerprint": "108f49c2152a3352", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/pacifica-adapter.test.ts"}, "region": {"startLine": 1179}}}]}, {"ruleId": "scanner-108f49c2152a3352", "level": "error", "message": {"text": "Possible secret in tests/unit/pacifica-adapter.test.ts"}, "properties": {"repobilityId": "ff0b329fa29b61d3", "scanner": "scanner-primary", "fingerprint": "108f49c2152a3352", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/pacifica-adapter.test.ts"}, "region": {"startLine": 1207}}}]}, {"ruleId": "scanner-108f49c2152a3352", "level": "error", "message": {"text": "Possible secret in tests/unit/pacifica-adapter.test.ts"}, "properties": {"repobilityId": "ff0b329fa29b61d3", "scanner": "scanner-primary", "fingerprint": "108f49c2152a3352", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/pacifica-adapter.test.ts"}, "region": {"startLine": 1235}}}]}, {"ruleId": "scanner-108f49c2152a3352", "level": "error", "message": {"text": "Possible secret in tests/unit/pacifica-adapter.test.ts"}, "properties": {"repobilityId": "ff0b329fa29b61d3", "scanner": "scanner-primary", "fingerprint": "108f49c2152a3352", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/pacifica-adapter.test.ts"}, "region": {"startLine": 1250}}}]}, {"ruleId": "scanner-cc13ee495ee43266", "level": "error", "message": {"text": "Possible secret in tests/unit/loggerIntegration.test.ts"}, "properties": {"repobilityId": "c3d0c25510f2e6cf", "scanner": "scanner-primary", "fingerprint": "cc13ee495ee43266", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/loggerIntegration.test.ts"}, "region": {"startLine": 265}}}]}, {"ruleId": "scanner-384bb395c12e0c49", "level": "error", "message": {"text": "Possible secret in tests/unit/config-adapter-alignment.test.ts"}, "properties": {"repobilityId": "cf6020ba0f524413", "scanner": "scanner-primary", "fingerprint": "384bb395c12e0c49", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/config-adapter-alignment.test.ts"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-384bb395c12e0c49", "level": "error", "message": {"text": "Possible secret in tests/unit/config-adapter-alignment.test.ts"}, "properties": {"repobilityId": "cf6020ba0f524413", "scanner": "scanner-primary", "fingerprint": "384bb395c12e0c49", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/config-adapter-alignment.test.ts"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-384bb395c12e0c49", "level": "error", "message": {"text": "Possible secret in tests/unit/config-adapter-alignment.test.ts"}, "properties": {"repobilityId": "cf6020ba0f524413", "scanner": "scanner-primary", "fingerprint": "384bb395c12e0c49", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/config-adapter-alignment.test.ts"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-384bb395c12e0c49", "level": "error", "message": {"text": "Possible secret in tests/unit/config-adapter-alignment.test.ts"}, "properties": {"repobilityId": "cf6020ba0f524413", "scanner": "scanner-primary", "fingerprint": "384bb395c12e0c49", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/config-adapter-alignment.test.ts"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-384bb395c12e0c49", "level": "error", "message": {"text": "Possible secret in tests/unit/config-adapter-alignment.test.ts"}, "properties": {"repobilityId": "cf6020ba0f524413", "scanner": "scanner-primary", "fingerprint": "384bb395c12e0c49", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/config-adapter-alignment.test.ts"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-cf953aa77ea74293", "level": "error", "message": {"text": "Possible secret in tests/unit/backpack-adapter-extended.test.ts"}, "properties": {"repobilityId": "c11df9ab5e274dae", "scanner": "scanner-primary", "fingerprint": "cf953aa77ea74293", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/backpack-adapter-extended.test.ts"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-a107b8f4da05e1cf", "level": "error", "message": {"text": "Possible secret in tests/unit/logger.test.ts"}, "properties": {"repobilityId": "1d06879a9c651e89", "scanner": "scanner-primary", "fingerprint": "a107b8f4da05e1cf", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/logger.test.ts"}, "region": {"startLine": 262}}}]}, {"ruleId": "scanner-a107b8f4da05e1cf", "level": "error", "message": {"text": "Possible secret in tests/unit/logger.test.ts"}, "properties": {"repobilityId": "1d06879a9c651e89", "scanner": "scanner-primary", "fingerprint": "a107b8f4da05e1cf", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/logger.test.ts"}, "region": {"startLine": 263}}}]}, {"ruleId": "scanner-c1c97bc89be97da0", "level": "error", "message": {"text": "Possible secret in tests/unit/config.test.ts"}, "properties": {"repobilityId": "32fd41821e7f81d9", "scanner": "scanner-primary", "fingerprint": "c1c97bc89be97da0", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/config.test.ts"}, "region": {"startLine": 291}}}]}, {"ruleId": "scanner-c1c97bc89be97da0", "level": "error", "message": {"text": "Possible secret in tests/unit/config.test.ts"}, "properties": {"repobilityId": "32fd41821e7f81d9", "scanner": "scanner-primary", "fingerprint": "c1c97bc89be97da0", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/config.test.ts"}, "region": {"startLine": 292}}}]}, {"ruleId": "scanner-c1c97bc89be97da0", "level": "error", "message": {"text": "Possible secret in tests/unit/config.test.ts"}, "properties": {"repobilityId": "32fd41821e7f81d9", "scanner": "scanner-primary", "fingerprint": "c1c97bc89be97da0", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/config.test.ts"}, "region": {"startLine": 305}}}]}, {"ruleId": "scanner-e400a7c2df12a0e0", "level": "error", "message": {"text": "Possible secret in tests/unit/auth-classes.test.ts"}, "properties": {"repobilityId": "01ebe277577d56bb", "scanner": "scanner-primary", "fingerprint": "e400a7c2df12a0e0", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/auth-classes.test.ts"}, "region": {"startLine": 119}}}]}, {"ruleId": "scanner-4e4eb40fdbd9e7ca", "level": "error", "message": {"text": "Possible secret in tests/unit/backpack-adapter.test.ts"}, "properties": {"repobilityId": "21011a6ca00e0690", "scanner": "scanner-primary", "fingerprint": "4e4eb40fdbd9e7ca", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/backpack-adapter.test.ts"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-4e4eb40fdbd9e7ca", "level": "error", "message": {"text": "Possible secret in tests/unit/backpack-adapter.test.ts"}, "properties": {"repobilityId": "21011a6ca00e0690", "scanner": "scanner-primary", "fingerprint": "4e4eb40fdbd9e7ca", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/backpack-adapter.test.ts"}, "region": {"startLine": 395}}}]}, {"ruleId": "scanner-278320a8c4784f23", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "edb5b4c9ca4368e6", "scanner": "scanner-primary", "fingerprint": "278320a8c4784f23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/api-compatibility.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-278320a8c4784f23", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e259615ea7e9e3da", "scanner": "scanner-primary", "fingerprint": "278320a8c4784f23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/api-compatibility.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-278320a8c4784f23", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0fc830580de72af4", "scanner": "scanner-primary", "fingerprint": "278320a8c4784f23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/api-compatibility.yml"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-278320a8c4784f23", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0dfd14d56f900db4", "scanner": "scanner-primary", "fingerprint": "278320a8c4784f23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/api-compatibility.yml"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-278320a8c4784f23", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0dfd14d56f900db4", "scanner": "scanner-primary", "fingerprint": "278320a8c4784f23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/api-compatibility.yml"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-5684ea51c61781b0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "61b4e5a8232cd242", "scanner": "scanner-primary", "fingerprint": "5684ea51c61781b0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-validation.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-c71f3272f502b242", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ce03dc754603bd91", "scanner": "scanner-primary", "fingerprint": "c71f3272f502b242", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/production-tests.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-c71f3272f502b242", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7b2afc8f4cf0af4f", "scanner": "scanner-primary", "fingerprint": "c71f3272f502b242", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/production-tests.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-c71f3272f502b242", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d333812744281057", "scanner": "scanner-primary", "fingerprint": "c71f3272f502b242", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/production-tests.yml"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-c71f3272f502b242", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8c688f553322bbd8", "scanner": "scanner-primary", "fingerprint": "c71f3272f502b242", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/production-tests.yml"}, "region": {"startLine": 180}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "b86179956da3a4a8", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f98655b984362e7c", "level": "note", "message": {"text": "Very large file: tests/unit/jupiter-adapter.test.ts (2012 lines)"}, "properties": {"repobilityId": "5ce4311817ea2745", "scanner": "scanner-primary", "fingerprint": "f98655b984362e7c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fffe08326f4a0a8f", "level": "note", "message": {"text": "Very large file: tests/unit/dydx-adapter.test.ts (1948 lines)"}, "properties": {"repobilityId": "798ff1a0eb4ac3b1", "scanner": "scanner-primary", "fingerprint": "fffe08326f4a0a8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dbea33a385bf5748", "level": "note", "message": {"text": "Very large file: tests/unit/gmx-adapter.test.ts (1930 lines)"}, "properties": {"repobilityId": "b924538c664cc2a8", "scanner": "scanner-primary", "fingerprint": "dbea33a385bf5748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9051a01a363d920f", "level": "note", "message": {"text": "Very large file: tests/unit/reya-adapter.test.ts (1587 lines)"}, "properties": {"repobilityId": "e64c22fee56d4ac6", "scanner": "scanner-primary", "fingerprint": "9051a01a363d920f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-31b8125e4195dd2d", "level": "note", "message": {"text": "Very large file: tests/unit/drift-adapter.test.ts (2304 lines)"}, "properties": {"repobilityId": "ded6126242025907", "scanner": "scanner-primary", "fingerprint": "31b8125e4195dd2d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b3ed68815bca2f8c", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: package.json"}, "properties": {"repobilityId": "7edae0550c126386", "scanner": "scanner-primary", "fingerprint": "b3ed68815bca2f8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "8a87e1f358ef1903", "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": "3f35a70a6dbee6c8", "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": "d11c92a8c93ec265", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "1b558242c2e333ed", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "98d71413d579408f", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-f4a8d7b0765b3b1a", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/integration/cross-adapter-contract.test.ts:105"}, "properties": {"repobilityId": "31316ab49cb79579", "scanner": "scanner-primary", "fingerprint": "f4a8d7b0765b3b1a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-639172b7738a8bba", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/paradex-websocket-wrapper.test.ts:62"}, "properties": {"repobilityId": "19c0e4282f00a092", "scanner": "scanner-primary", "fingerprint": "639172b7738a8bba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c6dfec1053fe5cf", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/gmx-adapter.test.ts:1414"}, "properties": {"repobilityId": "35d905d3adb72023", "scanner": "scanner-primary", "fingerprint": "5c6dfec1053fe5cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7630ee39467a5fa0", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/check-pattern-a.ts:248"}, "properties": {"repobilityId": "fb1b4c6631f8dfa2", "scanner": "scanner-primary", "fingerprint": "7630ee39467a5fa0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62c10a6194e68e14", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/adapters/dydx/DydxAdapter.ts:142"}, "properties": {"repobilityId": "813677bf2a6ec33a", "scanner": "scanner-primary", "fingerprint": "62c10a6194e68e14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57bf6bfce2f75a3a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/adapters/gmx/GmxOrderBuilder.ts:268"}, "properties": {"repobilityId": "df84c5914cfdfe88", "scanner": "scanner-primary", "fingerprint": "57bf6bfce2f75a3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6cb1e95b324067a", "level": "note", "message": {"text": "Legacy-named symbol `lighterLegacy` in src/adapters/lighter/LighterAdapter.ts:96"}, "properties": {"repobilityId": "0e3d475edb5a66ab", "scanner": "scanner-primary", "fingerprint": "f6cb1e95b324067a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f58f6ea1b22a27dc", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/adapters/lighter/signer/LighterSigner.ts:165"}, "properties": {"repobilityId": "f4bfdd93c7eb3b46", "scanner": "scanner-primary", "fingerprint": "f58f6ea1b22a27dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-042bb0825c08ca52", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/adapters/standx/StandxAdapter.ts:406"}, "properties": {"repobilityId": "f566d7b82f415822", "scanner": "scanner-primary", "fingerprint": "042bb0825c08ca52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5240755ab22fc99", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/adapters/extended/ExtendedAdapter.ts:152"}, "properties": {"repobilityId": "190b559715f4f3b7", "scanner": "scanner-primary", "fingerprint": "d5240755ab22fc99", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9d5b0dad7da6167d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/adapters/extended/types.ts:479"}, "properties": {"repobilityId": "d467c94eeb8f0737", "scanner": "scanner-primary", "fingerprint": "9d5b0dad7da6167d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8b4ed59428c000a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/adapters/katana/KatanaAuth.ts:162"}, "properties": {"repobilityId": "5ec3899aa0fc6106", "scanner": "scanner-primary", "fingerprint": "a8b4ed59428c000a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-829dca07d5718ffe", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/adapters/grvt/GRVTWebSocketWrapper.ts:87"}, "properties": {"repobilityId": "0177dd7d3c3fa469", "scanner": "scanner-primary", "fingerprint": "829dca07d5718ffe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e607f97bb1041ca9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/adapters/backpack/BackpackAdapter.ts:522"}, "properties": {"repobilityId": "5b0af016c76669f2", "scanner": "scanner-primary", "fingerprint": "e607f97bb1041ca9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-14781db5c9cdd8e8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/adapters/nado/NadoAdapter.ts:257"}, "properties": {"repobilityId": "a9a7fd256ca65c8b", "scanner": "scanner-primary", "fingerprint": "14781db5c9cdd8e8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bdf0f0d638117436", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/core/resilience.ts:214"}, "properties": {"repobilityId": "da9e4ed6fa98683e", "scanner": "scanner-primary", "fingerprint": "bdf0f0d638117436", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3482f7e5dd70cd1a", "level": "note", "message": {"text": "6 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "1da70f25aa46f6e9", "scanner": "scanner-primary", "fingerprint": "3482f7e5dd70cd1a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}