{"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-9f708e24dc22af4a", "name": "\"active\" state uses light bg in a dark theme \u2014 frontend/src/components/FullScreenChess.jsx:194", "shortDescription": {"text": "\"active\" state uses light bg in a dark theme \u2014 frontend/src/components/FullScreenChess.jsx:194"}, "fullDescription": {"text": "A ternary like `active ? 'bg-white' : '...'` (or bg-gray-100/200) on a dark theme produces jarring white pills. Use a dark-emphasized active state instead \u2014 border + ring or slightly brighter dark bg. Example: `active ? 'bg-gray-800 border-gray-500 ring-1 ring-blue-500/30' : '\u2026'`.\n\nWhy: P-E in CHECKLIST.md \u2014 light bg in a dark theme is a class of regression.\nRule id: fq.active-light-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a30ce2f1b8fd22e0", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/WalletButton.jsx:82", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/WalletButton.jsx:82"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-10d194d3287859d3", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CovexTerminal.jsx:2471", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CovexTerminal.jsx:2471"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9477303e8ca97e38", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/components/CovexTerminal.jsx:1687", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/components/CovexTerminal.jsx:1687"}, "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-dacf4637199d06ae", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/DesignStudio.jsx:97", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/DesignStudio.jsx:97"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e062b91da667e0d1", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/FullScreenPoker.jsx:517", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/FullScreenPoker.jsx:517"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4a9d3249bbc7aa1a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/LiveTicker.jsx:74", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/LiveTicker.jsx:74"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ac26f45a0090cef", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/components/CovenantPreview.jsx:51", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/components/CovenantPreview.jsx:51"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-92403ec8c5c31545", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CircuitSelector.jsx:81", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CircuitSelector.jsx:81"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-95c240bfa81b30db", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/lib/sdk/CovexClient.ts:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/lib/sdk/CovexClient.ts:92"}, "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-837ee1a95b1ed181", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/Explorer.jsx:526", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/Explorer.jsx:526"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dab698c04b081d41", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CovenantStudio.jsx:104", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CovenantStudio.jsx:104"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-60efed8a867e74dc", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CovenantFix.jsx:449", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CovenantFix.jsx:449"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fc59321a56c2120e", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/Treasury.jsx:79", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/Treasury.jsx:79"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bbafb2b472939283", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CovenantInteractive.jsx:810", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CovenantInteractive.jsx:810"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5905046ef1c10126", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/TemplateLibrary.jsx:308", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/TemplateLibrary.jsx:308"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ce4fd7decc846eed", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/PaidBuilder.jsx:355", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/PaidBuilder.jsx:355"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e18a0c24e62947fa", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/AddressPortfolio.jsx:79", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/AddressPortfolio.jsx:79"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e878cea675cb0ad", "name": "Stray `console.log` in TS/JS \u2014 scripts/deploy-covenant.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-covenant.js: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-5c47ececb89f7df6", "name": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_turn_timer.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_turn_timer.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9b5dd0d9a19c8535", "name": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_relative_timelock.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_relative_timelock.js:36"}, "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-186e7cdf405f9906", "name": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_hash_preimage.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_hash_preimage.js: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-8dcbcbd4fc2db15d", "name": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_nullifier_set.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_nullifier_set.js:36"}, "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-037e9dad755c5e76", "name": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_vrf_random.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_vrf_random.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7680887d50b1acd3", "name": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_timelock.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_timelock.js: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-f774e83170ebbe66", "name": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_basic_utxo_ownership.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_basic_utxo_ownership.js:36"}, "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-d7494668d200dcb9", "name": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_script_constraint.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_script_constraint.js:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c3875445bb62135", "name": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_vrf_dice_roll.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_vrf_dice_roll.js:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c4531f97bf7247c9", "name": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_pot_split_math.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_pot_split_math.js:36"}, "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-d26dbc78f4349e07", "name": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_turn_timer.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_turn_timer.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ab6bea4a9a1a15c6", "name": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_relative_timelock.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_relative_timelock.js:36"}, "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-1ba36f0e6304b5bb", "name": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_hash_preimage.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_hash_preimage.js: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-aa2dc265739af950", "name": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_nullifier_set.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_nullifier_set.js:36"}, "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-8fccaf706943685e", "name": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_vrf_random.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_vrf_random.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-263ad2f1cbe4d760", "name": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/verify_onchain_sig.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/verify_onchain_sig.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a297a3b3625c0e4d", "name": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_timelock.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_timelock.js: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-d25a5e2acd31cb65", "name": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_basic_utxo_ownership.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_basic_utxo_ownership.js:36"}, "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-e6833dd5d21d72ff", "name": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_script_constraint.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_script_constraint.js:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2e0fe5e3f763c89", "name": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_vrf_dice_roll.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_vrf_dice_roll.js:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-791ed8d92b2cce95", "name": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_pot_split_math.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_pot_split_math.js:36"}, "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-2c08a7c00b5bf393", "name": "Stray `console.log` in TS/JS \u2014 examples/vrf/prove_vrf_random.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf/prove_vrf_random.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d24fa07625eb721b", "name": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_turn_timer.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_turn_timer.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd4d0e36e68e3127", "name": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_relative_timelock.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_relative_timelock.js:36"}, "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-4e6d6e9784955593", "name": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_hash_preimage.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_hash_preimage.js: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-87bea9bf6c95f015", "name": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_nullifier_set.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_nullifier_set.js:36"}, "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-9ac07406603466df", "name": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_vrf_random.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_vrf_random.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b6cd119bbb133c0", "name": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_timelock.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_timelock.js: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-68cc74a99cda4e2c", "name": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_basic_utxo_ownership.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_basic_utxo_ownership.js:36"}, "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-6b102dc158dc06e4", "name": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_script_constraint.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_script_constraint.js:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2be7fcacc8f62cf2", "name": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_vrf_dice_roll.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_vrf_dice_roll.js:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f4b4db6910c0b462", "name": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_pot_split_math.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_pot_split_math.js:36"}, "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-5f0515235ab7628b", "name": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_turn_timer.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_turn_timer.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5f4a3c7dfb466e5a", "name": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_relative_timelock.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_relative_timelock.js:36"}, "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-d5890dc909129f40", "name": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_hash_preimage.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_hash_preimage.js: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-ab88231e79845eb2", "name": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_nullifier_set.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_nullifier_set.js:36"}, "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-04b2ba44bda03e7b", "name": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_vrf_random.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_vrf_random.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-37ff2de803f764be", "name": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_timelock.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_timelock.js: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-b1fbed9edb49d3d8", "name": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_basic_utxo_ownership.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_basic_utxo_ownership.js:36"}, "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-61a73aeebc412f58", "name": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_script_constraint.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_script_constraint.js:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d08818705d339274", "name": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_vrf_dice_roll.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_vrf_dice_roll.js:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ddefaac0a7d10f8a", "name": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_pot_split_math.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_pot_split_math.js:36"}, "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-2331b46ebb33cf91", "name": "Stray `console.log` in TS/JS \u2014 examples/script-constraint/prove_script_constraint.js:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/script-constraint/prove_script_constraint.js:41"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b5e638c169439d4e", "name": "Stray `console.log` in TS/JS \u2014 examples/utxo-ownership/prove_basic_utxo_ownership.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/utxo-ownership/prove_basic_utxo_ownership.js:36"}, "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-871f1d9ef57909fb", "name": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_turn_timer.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_turn_timer.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0925b5171c5c8f07", "name": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_relative_timelock.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_relative_timelock.js:36"}, "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-6e7901d7f8904f51", "name": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_hash_preimage.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_hash_preimage.js: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-7929283f4bbeffca", "name": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_nullifier_set.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_nullifier_set.js:36"}, "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-f2184a304b14482e", "name": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_vrf_random.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_vrf_random.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-05a3c4b09f0bdea8", "name": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_timelock.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_timelock.js: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-f26ed1ab2d555639", "name": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_basic_utxo_ownership.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_basic_utxo_ownership.js:36"}, "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-d77644b2bd067d34", "name": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_script_constraint.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_script_constraint.js:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-693c240658652130", "name": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_vrf_dice_roll.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_vrf_dice_roll.js:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0c11501f87b75af7", "name": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_pot_split_math.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_pot_split_math.js:36"}, "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-3f970ab1de0f74a2", "name": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_turn_timer.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_turn_timer.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8aac28154ef43c74", "name": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_relative_timelock.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_relative_timelock.js:36"}, "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-2cda19f01ef29024", "name": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_hash_preimage.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_hash_preimage.js: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-81978e68adecbf09", "name": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_nullifier_set.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_nullifier_set.js:36"}, "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-cb372f1740febe44", "name": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_vrf_random.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_vrf_random.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f0141c757a79afe5", "name": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_timelock.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_timelock.js: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-af5fa3ab237a2ae7", "name": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_basic_utxo_ownership.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_basic_utxo_ownership.js:36"}, "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-f394f502cc0781af", "name": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_script_constraint.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_script_constraint.js:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4dc8f4748cc08546", "name": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_vrf_dice_roll.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_vrf_dice_roll.js:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2fb52e7c7bfcc0c0", "name": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_pot_split_math.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_pot_split_math.js:36"}, "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-cb5ed67903733401", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_ml_inference_stub.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_ml_inference_stub.js:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b0c73026c25470d3", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_age_verification.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_age_verification.js: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-92c1e9876a0223aa", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_election_feed.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_election_feed.js:13"}, "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-19411002c0bd87c4", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_range.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_range.js:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3643becb2f855c9f", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_black_scholes_approx.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_black_scholes_approx.js: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-821a4e71cc647f27", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_poker_vrf_deal.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_poker_vrf_deal.js:13"}, "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-1fa2a9e0d46b5cc8", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_poker_vrf_deal.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_poker_vrf_deal.js: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-3cb2b787df2bb898", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_auction_clearing.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_auction_clearing.js:27"}, "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-f1f11cb184c048ae", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_escrow_2party.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_escrow_2party.js: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-b89019a26245c34f", "name": "Stray `console.log` in TS/JS \u2014 zk/covenant-helper.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/covenant-helper.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-39c8d9b282682abe", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_privacy_mixer.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_privacy_mixer.js:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-15ab634e83d7d420", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_relative_timelock.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_relative_timelock.js:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c600248dcec102f7", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_vrf_random.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_vrf_random.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-161c0df26e9a11d4", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_collateral_liquidation.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_collateral_liquidation.js: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-92367459168814dd", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_collateral_liquidation.js:3", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_collateral_liquidation.js:3"}, "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-5645acd070cf2961", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_turn_timer.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_turn_timer.js:27"}, "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-a923ccee29a897da", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_relative_timelock.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_relative_timelock.js: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-b13269b12fa3c6d5", "name": "Stray `console.log` in TS/JS \u2014 zk/test_range_proof.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/test_range_proof.js:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-14cecc23002efe7c", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_pot_split_math.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_pot_split_math.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1e6048cfab3ecead", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_onchain_sig_verify.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_onchain_sig_verify.js:24"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6f97def93547c2f9", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_auction_clearing.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_auction_clearing.js: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-96b9981177c63e93", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_vrf_dice_roll.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_vrf_dice_roll.js:17"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eaab69499198a01f", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_hash_preimage.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_hash_preimage.js: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-0917a8b52a607c4e", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_connect4.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_connect4.js:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2135372897a92dd7", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_nullifier_set.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_nullifier_set.js:27"}, "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-feabab90aa797590", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_attested.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_attested.js: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-acb3f4b05412ee7a", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_vrf_random.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_vrf_random.js:29"}, "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-067387562e305148", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_tictactoe.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_tictactoe.js:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c48fb885cf3ecca9", "name": "Stray `console.log` in TS/JS \u2014 zk/decentralized_liveness_stub.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/decentralized_liveness_stub.js:11"}, "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-8c0b11412acda1ed", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_onchain_sig.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_onchain_sig.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5f9fc805ee112ad2", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_loan_health.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_loan_health.js: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-857c0a83405c2f85", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_script_constraint.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_script_constraint.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a231118cf1a23a5", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_basic_utxo_ownership.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_basic_utxo_ownership.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-87463172e4670294", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_nullifier_v1.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_nullifier_v1.js: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-89f9618439d80b9f", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_poker_equity.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_poker_equity.js: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-fa236b71de00cd17", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_timelock.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_timelock.js: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-f4f6d3cc41644916", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_basic_utxo_ownership.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_basic_utxo_ownership.js: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-472c86aa16018542", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_script_constraint.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_script_constraint.js:29"}, "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-4603668c42402bf2", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_timelock.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_timelock.js:12"}, "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-a20350ef489c4390", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_black_scholes.js:3", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_black_scholes.js:3"}, "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-1be9388e7a9297c0", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_vrf_dice_roll.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_vrf_dice_roll.js: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-cabddc4ae8b9a59b", "name": "Stray `console.log` in TS/JS \u2014 zk/verify.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify.js:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-08c9e21a580480da", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_turn_timer.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_turn_timer.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-454b0240b34863a2", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_nullifier_set.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_nullifier_set.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-05c3750d5e56fc01", "name": "Stray `console.log` in TS/JS \u2014 zk/test_e2e_full_zk.js:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/test_e2e_full_zk.js:62"}, "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-3a8d966550839bd7", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_collateral_ltv.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_collateral_ltv.js: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-f2522fab5ea3f480", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_financial_formula.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_financial_formula.js: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-fed858c304d238ad", "name": "Stray `console.log` in TS/JS \u2014 zk/verify_hash_preimage.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_hash_preimage.js:12"}, "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-9f3c3ec0b59f0a95", "name": "Stray `console.log` in TS/JS \u2014 zk/prove_pot_split_math.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_pot_split_math.js: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-7832fdd66dd2d460", "name": "Stray `console.log` in TS/JS \u2014 zk/election_feed_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/election_feed_js/generate_witness.js:5"}, "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-de4aab2b836173d9", "name": "Stray `console.log` in TS/JS \u2014 zk/election_feed_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/election_feed_js/witness_calculator.js: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-50cde1799514b3d6", "name": "Stray `console.log` in TS/JS \u2014 zk/mimc_output/mimc_test_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/mimc_output/mimc_test_js/generate_witness.js:5"}, "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-8942430d7517d608", "name": "Stray `console.log` in TS/JS \u2014 zk/mimc_output/mimc_test_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/mimc_output/mimc_test_js/witness_calculator.js: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-568e14cb1d5d4d18", "name": "Stray `console.log` in TS/JS \u2014 zk/nullifier/nullifier_v1_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/nullifier/nullifier_v1_js/generate_witness.js:5"}, "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-9a4845b48fcc0b97", "name": "Stray `console.log` in TS/JS \u2014 zk/nullifier/nullifier_v1_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/nullifier/nullifier_v1_js/witness_calculator.js: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-a72cde61ca45f199", "name": "Stray `console.log` in TS/JS \u2014 zk/nullifier_set_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/nullifier_set_js/generate_witness.js:5"}, "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-d95cdc841366a8ce", "name": "Stray `console.log` in TS/JS \u2014 zk/nullifier_set_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/nullifier_set_js/witness_calculator.js: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-ce01eae366137caa", "name": "Stray `console.log` in TS/JS \u2014 zk/games/connect4/scripts/prove_move.js:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/games/connect4/scripts/prove_move.js:61"}, "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-b3bcb0e58d173aa1", "name": "Stray `console.log` in TS/JS \u2014 zk/games/tictactoe/scripts/prove_move.js:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/games/tictactoe/scripts/prove_move.js:55"}, "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-4de5e399c607c273", "name": "Stray `console.log` in TS/JS \u2014 zk/turn_timer_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/turn_timer_js/generate_witness.js:5"}, "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-fdb66e8f90590105", "name": "Stray `console.log` in TS/JS \u2014 zk/turn_timer_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/turn_timer_js/witness_calculator.js: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-2b748dab579f269f", "name": "Stray `console.log` in TS/JS \u2014 zk/black_scholes_approx_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/black_scholes_approx_js/generate_witness.js:5"}, "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-c6839b87b1c1f116", "name": "Stray `console.log` in TS/JS \u2014 zk/black_scholes_approx_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/black_scholes_approx_js/witness_calculator.js: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-27737dffe25f8356", "name": "Stray `console.log` in TS/JS \u2014 zk/poker_vrf_deal_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/poker_vrf_deal_js/generate_witness.js:5"}, "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-1de02f4ed6a85ae0", "name": "Stray `console.log` in TS/JS \u2014 zk/poker_vrf_deal_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/poker_vrf_deal_js/witness_calculator.js: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-2332946cbf5970a1", "name": "Stray `console.log` in TS/JS \u2014 zk/age_verification_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/age_verification_js/generate_witness.js:5"}, "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-5fa6b7a9b2a3399c", "name": "Stray `console.log` in TS/JS \u2014 zk/age_verification_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/age_verification_js/witness_calculator.js: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-bad5ff3fc659f178", "name": "Stray `console.log` in TS/JS \u2014 zk/escrow_2party_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/escrow_2party_js/generate_witness.js:5"}, "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-6d04d2a65986385a", "name": "Stray `console.log` in TS/JS \u2014 zk/escrow_2party_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/escrow_2party_js/witness_calculator.js: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-1926cc0681577714", "name": "Stray `console.log` in TS/JS \u2014 zk/financial_formula_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/financial_formula_js/generate_witness.js:5"}, "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-51fdf2c58ef50475", "name": "Stray `console.log` in TS/JS \u2014 zk/financial_formula_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/financial_formula_js/witness_calculator.js: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-99214f08f8304e45", "name": "Stray `console.log` in TS/JS \u2014 zk/test_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/test_js/generate_witness.js:5"}, "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-f9d71d4bcfc3de3e", "name": "Stray `console.log` in TS/JS \u2014 zk/test_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/test_js/witness_calculator.js: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-39b31ba5847ed484", "name": "Stray `console.log` in TS/JS \u2014 zk/pot_split_math_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/pot_split_math_js/generate_witness.js:5"}, "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-df67affb3b944d84", "name": "Stray `console.log` in TS/JS \u2014 zk/pot_split_math_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/pot_split_math_js/witness_calculator.js: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-e4f130d33a89133e", "name": "Stray `console.log` in TS/JS \u2014 zk/merkle_membership_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/merkle_membership_js/generate_witness.js:5"}, "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-f9e7a6e1e05f66af", "name": "Stray `console.log` in TS/JS \u2014 zk/merkle_membership_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/merkle_membership_js/witness_calculator.js: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-ea9fc90657bc6a5d", "name": "Stray `console.log` in TS/JS \u2014 zk/weather_feed_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/weather_feed_js/generate_witness.js:5"}, "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-b0b60112e101ffeb", "name": "Stray `console.log` in TS/JS \u2014 zk/weather_feed_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/weather_feed_js/witness_calculator.js: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-c23d24d1bf66ebae", "name": "Stray `console.log` in TS/JS \u2014 zk/script_constraint_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/script_constraint_js/generate_witness.js:5"}, "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-2d0a9ddbf2ed0366", "name": "Stray `console.log` in TS/JS \u2014 zk/script_constraint_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/script_constraint_js/witness_calculator.js: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-222843bec27268c1", "name": "Stray `console.log` in TS/JS \u2014 zk/multi_sig_gating_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/multi_sig_gating_js/generate_witness.js:5"}, "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-7a71a4fae254563f", "name": "Stray `console.log` in TS/JS \u2014 zk/multi_sig_gating_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/multi_sig_gating_js/witness_calculator.js: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-d3314bdba9c647c3", "name": "Stray `console.log` in TS/JS \u2014 zk/sorting_proof_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/sorting_proof_js/generate_witness.js:5"}, "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-4e76a496a5fcb165", "name": "Stray `console.log` in TS/JS \u2014 zk/sorting_proof_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/sorting_proof_js/witness_calculator.js: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-e455cdcb478f9e79", "name": "Stray `console.log` in TS/JS \u2014 zk/collateral_liquidation_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/collateral_liquidation_js/generate_witness.js:5"}, "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-017d0ca8a69b75c7", "name": "Stray `console.log` in TS/JS \u2014 zk/collateral_liquidation_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/collateral_liquidation_js/witness_calculator.js: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-30ce1db712044e5f", "name": "Stray `console.log` in TS/JS \u2014 zk/lib/verify_groth16_hybrid.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/lib/verify_groth16_hybrid.js:8"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e39c735a836bda77", "name": "Stray `console.log` in TS/JS \u2014 zk/vrf_dice_roll_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/vrf_dice_roll_js/generate_witness.js:5"}, "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-710bb2ea72e2aab5", "name": "Stray `console.log` in TS/JS \u2014 zk/vrf_dice_roll_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/vrf_dice_roll_js/witness_calculator.js: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-a6cec0d8e2bada84", "name": "Stray `console.log` in TS/JS \u2014 zk/hash_helper_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/hash_helper_js/generate_witness.js:5"}, "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-289b126439621c73", "name": "Stray `console.log` in TS/JS \u2014 zk/hash_helper_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/hash_helper_js/witness_calculator.js: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-1ca5385c61b2f25b", "name": "Stray `console.log` in TS/JS \u2014 zk/auction_clearing_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/auction_clearing_js/generate_witness.js:5"}, "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-4b6bb80fb8ec3e90", "name": "Stray `console.log` in TS/JS \u2014 zk/auction_clearing_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/auction_clearing_js/witness_calculator.js: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-2e697a654c7dd3d5", "name": "Stray `console.log` in TS/JS \u2014 zk/range_proof/output/range_proof_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/range_proof/output/range_proof_js/generate_witness.js:5"}, "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-006a53d936fcf082", "name": "Stray `console.log` in TS/JS \u2014 zk/range_proof/output/range_proof_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/range_proof/output/range_proof_js/witness_calculator.js: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-06cf1f57d5551127", "name": "Stray `console.log` in TS/JS \u2014 zk/collateral_ltv_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/collateral_ltv_js/generate_witness.js:5"}, "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-1e2af72706738287", "name": "Stray `console.log` in TS/JS \u2014 zk/collateral_ltv_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/collateral_ltv_js/witness_calculator.js: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-2eaff62ceb2c006a", "name": "Stray `console.log` in TS/JS \u2014 zk/verifiable_poker_solver_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verifiable_poker_solver_js/generate_witness.js:5"}, "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-b1c29cbf9b1d1f74", "name": "Stray `console.log` in TS/JS \u2014 zk/verifiable_poker_solver_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/verifiable_poker_solver_js/witness_calculator.js: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-b4813fd92b6b7c70", "name": "Stray `console.log` in TS/JS \u2014 zk/basic_utxo_ownership_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/basic_utxo_ownership_js/generate_witness.js:5"}, "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-754185bcb1bf7464", "name": "Stray `console.log` in TS/JS \u2014 zk/basic_utxo_ownership_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/basic_utxo_ownership_js/witness_calculator.js: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-f6a9a946295bd37e", "name": "Stray `console.log` in TS/JS \u2014 zk/poker_equity_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/poker_equity_js/generate_witness.js:5"}, "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-09ada65904069627", "name": "Stray `console.log` in TS/JS \u2014 zk/poker_equity_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/poker_equity_js/witness_calculator.js: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-c83f9b33d1af0099", "name": "Stray `console.log` in TS/JS \u2014 zk/onchain_sig_verify_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/onchain_sig_verify_js/generate_witness.js:5"}, "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-ef70eba3660cf656", "name": "Stray `console.log` in TS/JS \u2014 zk/onchain_sig_verify_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/onchain_sig_verify_js/witness_calculator.js: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-2cad21aff553a682", "name": "Stray `console.log` in TS/JS \u2014 zk/privacy_mixer/test_e2e.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/privacy_mixer/test_e2e.js:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8da90c373bf3b4dd", "name": "Stray `console.log` in TS/JS \u2014 zk/privacy_mixer/scripts/prove_deposit.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/privacy_mixer/scripts/prove_deposit.js:13"}, "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-6f4a768a40c2bf1e", "name": "Stray `console.log` in TS/JS \u2014 zk/privacy_mixer/scripts/prove_withdraw.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/privacy_mixer/scripts/prove_withdraw.js:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fee9f4cb10a1dd5f", "name": "Stray `console.log` in TS/JS \u2014 zk/anon_credential_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/anon_credential_js/generate_witness.js:5"}, "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-d60cce442cbb1db4", "name": "Stray `console.log` in TS/JS \u2014 zk/anon_credential_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/anon_credential_js/witness_calculator.js: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-c7f072b64a965b51", "name": "Stray `console.log` in TS/JS \u2014 zk/output/merkle_membership_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/output/merkle_membership_js/generate_witness.js:5"}, "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-5f892f276c95ac3f", "name": "Stray `console.log` in TS/JS \u2014 zk/output/merkle_membership_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/output/merkle_membership_js/witness_calculator.js: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-e472089926143697", "name": "Stray `console.log` in TS/JS \u2014 zk/ml_inference_stub_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/ml_inference_stub_js/generate_witness.js:5"}, "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-81005fb17b33b9d3", "name": "Stray `console.log` in TS/JS \u2014 zk/ml_inference_stub_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/ml_inference_stub_js/witness_calculator.js: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-41cbcfd7aff5d85e", "name": "Stray `console.log` in TS/JS \u2014 zk/loan_health_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/loan_health_js/generate_witness.js:5"}, "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-060713a415ab2845", "name": "Stray `console.log` in TS/JS \u2014 zk/loan_health_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/loan_health_js/witness_calculator.js: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-464592b4b921a828", "name": "Stray `console.log` in TS/JS \u2014 zk/vrf_random_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/vrf_random_js/generate_witness.js:5"}, "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-75b5715560902a53", "name": "Stray `console.log` in TS/JS \u2014 zk/vrf_random_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/vrf_random_js/witness_calculator.js: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-0b45435fe79ef295", "name": "Stray `console.log` in TS/JS \u2014 zk/mimc_test_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/mimc_test_js/generate_witness.js:5"}, "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-cf319da04fc841f1", "name": "Stray `console.log` in TS/JS \u2014 zk/mimc_test_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/mimc_test_js/witness_calculator.js: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-82754e6371c48d72", "name": "Stray `console.log` in TS/JS \u2014 zk/relative_timelock_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/relative_timelock_js/generate_witness.js:5"}, "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-f9036f5c3daf04a7", "name": "Stray `console.log` in TS/JS \u2014 zk/relative_timelock_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/relative_timelock_js/witness_calculator.js: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-bedd2eb22c100abc", "name": "Stray `console.log` in TS/JS \u2014 zk/hash_output/hash_helper_js/generate_witness.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/hash_output/hash_helper_js/generate_witness.js:5"}, "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-3c02c8818f42524d", "name": "Stray `console.log` in TS/JS \u2014 zk/hash_output/hash_helper_js/witness_calculator.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 zk/hash_output/hash_helper_js/witness_calculator.js: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-8d371ae861881df8", "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-d0ef7f833df5dab7", "name": "Privileged port 17 in use", "shortDescription": {"text": "Privileged port 17 in use"}, "fullDescription": {"text": "Port 17 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-ed91a855cd5779fe", "name": "Privileged port 3 in use", "shortDescription": {"text": "Privileged port 3 in use"}, "fullDescription": {"text": "Port 3 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-98ac71e9d0d2d991", "name": "Possible secret in DEPLOY_TO_HIGHTABLE.sh", "shortDescription": {"text": "Possible secret in DEPLOY_TO_HIGHTABLE.sh"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-aef55a5280b083e3", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/index.html:71", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/index.html:71"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b842555511686d0b", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/components/CovenantPreview.jsx:51", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/components/CovenantPreview.jsx:51"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f197e6fd124c4832", "name": "Insecure pattern 'eval_used' in zk/circuit_registry.json:175", "shortDescription": {"text": "Insecure pattern 'eval_used' in zk/circuit_registry.json:175"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fdec5a8b0d914081", "name": "Very large file: frontend/src/components/CovexTerminal.jsx (4238 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/CovexTerminal.jsx (4238 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-9ba7e39eb5e47b68", "name": "Very large file: frontend/src/pages/CovenantInteractive.jsx (1685 lines)", "shortDescription": {"text": "Very large file: frontend/src/pages/CovenantInteractive.jsx (1685 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-84a92a12a1f52802", "name": "Very large file: backend/src/main.rs (2074 lines)", "shortDescription": {"text": "Very large file: backend/src/main.rs (2074 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-ffaf437a8448d091", "name": "Very large file: backend/src/covenant_builder.rs (3502 lines)", "shortDescription": {"text": "Very large file: backend/src/covenant_builder.rs (3502 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-fb1b4f7e6289d129", "name": "Very large file: backend/src/db.rs (1747 lines)", "shortDescription": {"text": "Very large file: backend/src/db.rs (1747 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-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "12 test file(s) for 329 source file(s) (ratio 0.04). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c6f2d410af528a3", "name": "Node manifest has dependencies but no lockfile: tools/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: tools/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 539 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 95 placeholder/mock markers across 31 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-2c5f98b152cddb6d", "name": "Agent authority lacks a verifier contract: .claude/launch.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8750ba28fbb0d3a6", "name": "Commented-code block (6 lines) in frontend/scripts/poker-e2e.mjs:1", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/scripts/poker-e2e.mjs:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2fb9496b61f7b334", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/scripts/poker-e2e.mjs:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/scripts/poker-e2e.mjs:26"}, "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-21e84ae0343c5e3d", "name": "Commented-code block (7 lines) in frontend/scripts/check-sandbox.mjs:2", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/scripts/check-sandbox.mjs:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1a90f59373c1792b", "name": "Commented-code block (5 lines) in frontend/public/sw.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/public/sw.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bd841e06c52dc19a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/public/sw.js:40", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/public/sw.js:40"}, "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-47da46f0efd8b08b", "name": "Legacy-named symbol `chess_v1` in frontend/src/components/GamePreview.jsx:29", "shortDescription": {"text": "Legacy-named symbol `chess_v1` in frontend/src/components/GamePreview.jsx:29"}, "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-045c7d9514899ee9", "name": "Commented-code block (5 lines) in frontend/src/components/ToastContext.jsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/ToastContext.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-226e2eae4625b0e0", "name": "Legacy-named symbol `privacy_mixer_v1` in frontend/src/components/PrivacyMixerPanel.jsx:86", "shortDescription": {"text": "Legacy-named symbol `privacy_mixer_v1` in frontend/src/components/PrivacyMixerPanel.jsx:86"}, "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-babc10a261b31523", "name": "Commented-code block (5 lines) in frontend/src/components/WalletContext.jsx:702", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/WalletContext.jsx:702"}, "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-36c347ef5be0e6cf", "name": "Commented-code block (5 lines) in frontend/src/components/SandboxCircuitPreview.jsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/SandboxCircuitPreview.jsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a08e5db8908cb7c", "name": "Legacy-named symbol `reversi_v1` in frontend/src/components/FullScreenReversi.jsx:254", "shortDescription": {"text": "Legacy-named symbol `reversi_v1` in frontend/src/components/FullScreenReversi.jsx:254"}, "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-8fabdd467c4764e4", "name": "Commented-code block (5 lines) in frontend/src/components/FullScreenReversi.jsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/FullScreenReversi.jsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-23398554d9ea167b", "name": "Legacy-named symbol `chess_v1` in frontend/src/components/CovexTerminal.jsx:66", "shortDescription": {"text": "Legacy-named symbol `chess_v1` in frontend/src/components/CovexTerminal.jsx:66"}, "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-f420a0b5e2d85d23", "name": "Commented-code block (10 lines) in frontend/src/components/CovexTerminal.jsx:48", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/src/components/CovexTerminal.jsx:48"}, "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-3aca71f2dbbfe937", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/CovexTerminal.jsx:1726", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/CovexTerminal.jsx:1726"}, "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-d046a428a40720b9", "name": "Legacy-named symbol `connect4_v1` in frontend/src/components/FullScreenConnect4.jsx:175", "shortDescription": {"text": "Legacy-named symbol `connect4_v1` in frontend/src/components/FullScreenConnect4.jsx:175"}, "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-9a0b505c29732c50", "name": "Legacy-named symbol `poker_v1` in frontend/src/components/FullScreenPoker.jsx:416", "shortDescription": {"text": "Legacy-named symbol `poker_v1` in frontend/src/components/FullScreenPoker.jsx:416"}, "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-157ff70dbd63428a", "name": "Commented-code block (6 lines) in frontend/src/components/FullScreenPoker.jsx:10", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/FullScreenPoker.jsx:10"}, "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-a01416b1e6305564", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/FullScreenPoker.jsx:320", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/FullScreenPoker.jsx:320"}, "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-14cd9acee51f53fe", "name": "Legacy-named symbol `blackjack_v1` in frontend/src/components/FullScreenBlackjack.jsx:276", "shortDescription": {"text": "Legacy-named symbol `blackjack_v1` in frontend/src/components/FullScreenBlackjack.jsx:276"}, "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-ed9d1ac2b153ce72", "name": "Commented-code block (5 lines) in frontend/src/components/FullScreenBlackjack.jsx:10", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/FullScreenBlackjack.jsx:10"}, "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-4905296b85dc47a8", "name": "Legacy-named symbol `tictactoe_v1` in frontend/src/components/FullScreenTicTacToe.jsx:140", "shortDescription": {"text": "Legacy-named symbol `tictactoe_v1` in frontend/src/components/FullScreenTicTacToe.jsx:140"}, "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-bf68127588c9cbab", "name": "Legacy-named symbol `rps_v1` in frontend/src/components/FullScreenRPS.jsx:249", "shortDescription": {"text": "Legacy-named symbol `rps_v1` in frontend/src/components/FullScreenRPS.jsx:249"}, "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-29a64fed52ba105e", "name": "Commented-code block (6 lines) in frontend/src/components/FullScreenRPS.jsx:8", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/FullScreenRPS.jsx:8"}, "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-e9159394b0777166", "name": "Legacy-named symbol `checkers_v1` in frontend/src/components/FullScreenCheckers.jsx:341", "shortDescription": {"text": "Legacy-named symbol `checkers_v1` in frontend/src/components/FullScreenCheckers.jsx:341"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b23d93a165195dae", "name": "Commented-code block (5 lines) in frontend/src/components/FullScreenCheckers.jsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/FullScreenCheckers.jsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0a72bc536b0f1bdd", "name": "Commented-code block (5 lines) in frontend/src/lib/ownership.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/lib/ownership.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6d72e708f9addd3c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/ownership.js:17", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/ownership.js:17"}, "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-a931a2788284304a", "name": "Commented-code block (5 lines) in frontend/src/lib/circuitIcon.jsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/lib/circuitIcon.jsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ccb2f95657678c39", "name": "Legacy-named symbol `chess_v1` in frontend/src/lib/covenant-config/covenant-config.ts:16", "shortDescription": {"text": "Legacy-named symbol `chess_v1` in frontend/src/lib/covenant-config/covenant-config.ts:16"}, "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-9fb8bbcfdf9d207c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/sdk/CovexClient.ts:60", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/sdk/CovexClient.ts:60"}, "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-63ecbb04431c2ce9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/Explorer.jsx:196", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/Explorer.jsx:196"}, "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-f173b6bf73ba25c6", "name": "Commented-code block (6 lines) in frontend/src/pages/EnforcedDeploy.jsx:177", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/pages/EnforcedDeploy.jsx:177"}, "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-65027cef2a454d32", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/EnforcedDeploy.jsx:116", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/EnforcedDeploy.jsx:116"}, "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-b0481ce043267c01", "name": "Legacy-named symbol `chess_v1` in frontend/src/pages/CovenantFix.jsx:117", "shortDescription": {"text": "Legacy-named symbol `chess_v1` in frontend/src/pages/CovenantFix.jsx:117"}, "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-58237a5055494ace", "name": "Commented-code block (5 lines) in frontend/src/pages/CovenantFix.jsx:267", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/CovenantFix.jsx:267"}, "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-f83d4d415afab054", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/CovenantFix.jsx:217", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/CovenantFix.jsx:217"}, "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-653fb6281b3bd38f", "name": "Legacy-named symbol `chess_v1` in frontend/src/pages/PremiumBuilder.jsx:116", "shortDescription": {"text": "Legacy-named symbol `chess_v1` in frontend/src/pages/PremiumBuilder.jsx:116"}, "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-f910db0212bb72b3", "name": "Commented-code block (5 lines) in frontend/src/pages/PremiumBuilder.jsx:181", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/PremiumBuilder.jsx:181"}, "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-ad7449474e4253c2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/PremiumBuilder.jsx:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/PremiumBuilder.jsx:70"}, "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-43fb2916c30d0b89", "name": "Commented-code block (6 lines) in frontend/src/pages/Pricing.jsx:162", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/pages/Pricing.jsx: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-0392302e1332c4df", "name": "Legacy-named symbol `chess_v1` in frontend/src/pages/CovenantInteractive.jsx:904", "shortDescription": {"text": "Legacy-named symbol `chess_v1` in frontend/src/pages/CovenantInteractive.jsx:904"}, "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-4018d003e07637f0", "name": "Commented-code block (7 lines) in frontend/src/pages/CovenantInteractive.jsx:394", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/pages/CovenantInteractive.jsx:394"}, "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-0e79c34e6971c19f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/AdvancedComposer.jsx:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/AdvancedComposer.jsx:28"}, "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-ddb08a969143457d", "name": "Commented-code block (8 lines) in frontend/src/pages/PaidBuilder.jsx:59", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/pages/PaidBuilder.jsx:59"}, "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-54791a5e87b46d21", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/PaidBuilder.jsx:95", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/PaidBuilder.jsx:95"}, "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-b8894ca0cd5c32d4", "name": "Legacy-named symbol `chess_v1` in shared/covenant-config/covenant-config.ts:22", "shortDescription": {"text": "Legacy-named symbol `chess_v1` in shared/covenant-config/covenant-config.ts:22"}, "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-f6f3b615be5335cb", "name": "Commented-code block (5 lines) in scripts/deploy-covenant.js:28", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/deploy-covenant.js:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d73173a94b389232", "name": "Network/subprocess call without timeout or try/except \u2014 deploy/apply_csp.py:33", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 deploy/apply_csp.py:33"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-271a797bd532b4f8", "name": "Legacy-named symbol `nullifier_v1` in examples/nullifier/prove_nullifier_set.js:6", "shortDescription": {"text": "Legacy-named symbol `nullifier_v1` in examples/nullifier/prove_nullifier_set.js:6"}, "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-78abeebe12197b69", "name": "Legacy-named symbol `nullifier_v1` in examples/onchain-sig/prove_nullifier_set.js:6", "shortDescription": {"text": "Legacy-named symbol `nullifier_v1` in examples/onchain-sig/prove_nullifier_set.js:6"}, "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-3dc278b8209ea91e", "name": "Legacy-named symbol `nullifier_v1` in examples/vrf-dice/prove_nullifier_set.js:6", "shortDescription": {"text": "Legacy-named symbol `nullifier_v1` in examples/vrf-dice/prove_nullifier_set.js:6"}, "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-9230261b8fef14d2", "name": "Legacy-named symbol `nullifier_v1` in examples/collateral-defi/prove_nullifier_set.js:6", "shortDescription": {"text": "Legacy-named symbol `nullifier_v1` in examples/collateral-defi/prove_nullifier_set.js:6"}, "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-13b4419961811c34", "name": "Legacy-named symbol `nullifier_v1` in examples/turn-timer/prove_nullifier_set.js:6", "shortDescription": {"text": "Legacy-named symbol `nullifier_v1` in examples/turn-timer/prove_nullifier_set.js:6"}, "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-5c91b9d94dc9cbb2", "name": "Legacy-named symbol `nullifier_v1` in examples/pot-split/prove_nullifier_set.js:6", "shortDescription": {"text": "Legacy-named symbol `nullifier_v1` in examples/pot-split/prove_nullifier_set.js:6"}, "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-f26f9076e5f6d511", "name": "`fetch()` without try/.catch or AbortSignal \u2014 tools/recover-covenant.mjs:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tools/recover-covenant.mjs:83"}, "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-5ea17513c8ad0b3a", "name": "Commented-code block (5 lines) in zk/oracle_liveness_stub.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in zk/oracle_liveness_stub.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d256b8a8c16b50f8", "name": "Legacy-named symbol `privacy_mixer_v1` in zk/verify_privacy_mixer.js:27", "shortDescription": {"text": "Legacy-named symbol `privacy_mixer_v1` in zk/verify_privacy_mixer.js:27"}, "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-bab9e3fda93ab0c2", "name": "Legacy-named symbol `connect4_v1` in zk/verify_connect4.js:25", "shortDescription": {"text": "Legacy-named symbol `connect4_v1` in zk/verify_connect4.js:25"}, "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-e900252cacf867f4", "name": "Legacy-named symbol `tictactoe_v1` in zk/verify_tictactoe.js:25", "shortDescription": {"text": "Legacy-named symbol `tictactoe_v1` in zk/verify_tictactoe.js:25"}, "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-fd443b5b64dfd166", "name": "Legacy-named symbol `nullifier_v1` in zk/prove_nullifier_v1.js:8", "shortDescription": {"text": "Legacy-named symbol `nullifier_v1` in zk/prove_nullifier_v1.js:8"}, "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-6dad1ad44117d8d1", "name": "Legacy-named symbol `tictactoe_v1` in zk/test_e2e_full_zk.js:20", "shortDescription": {"text": "Legacy-named symbol `tictactoe_v1` in zk/test_e2e_full_zk.js:20"}, "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-ca4ac3e86a6e4538", "name": "Commented-code block (6 lines) in zk/election_feed_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/election_feed_js/witness_calculator.js:70"}, "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-c46363d3170da0fb", "name": "Commented-code block (6 lines) in zk/mimc_output/mimc_test_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/mimc_output/mimc_test_js/witness_calculator.js:70"}, "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-681ce169763a10f2", "name": "Commented-code block (6 lines) in zk/nullifier/nullifier_v1_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/nullifier/nullifier_v1_js/witness_calculator.js:70"}, "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-f8bea8aebc7f7975", "name": "Commented-code block (6 lines) in zk/nullifier_set_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/nullifier_set_js/witness_calculator.js:70"}, "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-615294046e899ed5", "name": "Legacy-named symbol `connect4_v1` in zk/games/connect4/scripts/prove_move.js:9", "shortDescription": {"text": "Legacy-named symbol `connect4_v1` in zk/games/connect4/scripts/prove_move.js:9"}, "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-a9c42b8266f28d7b", "name": "Legacy-named symbol `tictactoe_v1` in zk/games/tictactoe/scripts/prove_move.js:9", "shortDescription": {"text": "Legacy-named symbol `tictactoe_v1` in zk/games/tictactoe/scripts/prove_move.js:9"}, "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-06665e54373e0060", "name": "Commented-code block (6 lines) in zk/turn_timer_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/turn_timer_js/witness_calculator.js:70"}, "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-deedfb0ec0491bf3", "name": "Commented-code block (6 lines) in zk/black_scholes_approx_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/black_scholes_approx_js/witness_calculator.js:70"}, "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-119a8a03a5acaf11", "name": "Commented-code block (6 lines) in zk/poker_vrf_deal_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/poker_vrf_deal_js/witness_calculator.js:70"}, "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-3f1c0fe7a3524165", "name": "Commented-code block (6 lines) in zk/age_verification_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/age_verification_js/witness_calculator.js:70"}, "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-b4863ed0bd406a94", "name": "Commented-code block (6 lines) in zk/escrow_2party_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/escrow_2party_js/witness_calculator.js:70"}, "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-b36f8d11b3b55452", "name": "Commented-code block (6 lines) in zk/financial_formula_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/financial_formula_js/witness_calculator.js:70"}, "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-2c4eb8cf9aca43c9", "name": "Commented-code block (6 lines) in zk/test_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/test_js/witness_calculator.js:70"}, "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-cc4f3a5c6bc89190", "name": "Commented-code block (6 lines) in zk/pot_split_math_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/pot_split_math_js/witness_calculator.js:70"}, "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-64dfa946872c5f31", "name": "Commented-code block (6 lines) in zk/merkle_membership_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/merkle_membership_js/witness_calculator.js:70"}, "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-0966bb64cc8a0d43", "name": "Commented-code block (6 lines) in zk/weather_feed_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/weather_feed_js/witness_calculator.js:70"}, "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-5fa2a477e5eed091", "name": "Commented-code block (6 lines) in zk/script_constraint_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/script_constraint_js/witness_calculator.js:70"}, "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-593f6338d5726b82", "name": "Commented-code block (6 lines) in zk/multi_sig_gating_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/multi_sig_gating_js/witness_calculator.js:70"}, "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-b8ae55764d22029d", "name": "Commented-code block (6 lines) in zk/sorting_proof_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/sorting_proof_js/witness_calculator.js:70"}, "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-38e45fc74d236292", "name": "Commented-code block (6 lines) in zk/collateral_liquidation_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/collateral_liquidation_js/witness_calculator.js:70"}, "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-cbc2efb492962bf2", "name": "Commented-code block (5 lines) in zk/lib/verify_groth16_hybrid.js:43", "shortDescription": {"text": "Commented-code block (5 lines) in zk/lib/verify_groth16_hybrid.js:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-33f0a111de6af9b7", "name": "Commented-code block (6 lines) in zk/vrf_dice_roll_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/vrf_dice_roll_js/witness_calculator.js:70"}, "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-ea9a1bd3f97121db", "name": "Commented-code block (6 lines) in zk/hash_helper_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/hash_helper_js/witness_calculator.js:70"}, "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-6446394be9acfe49", "name": "Commented-code block (6 lines) in zk/auction_clearing_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/auction_clearing_js/witness_calculator.js:70"}, "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-780782171f2e173c", "name": "Commented-code block (6 lines) in zk/range_proof/output/range_proof_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/range_proof/output/range_proof_js/witness_calculator.js:70"}, "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-c8b9f6f66ada1186", "name": "Commented-code block (6 lines) in zk/collateral_ltv_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/collateral_ltv_js/witness_calculator.js:70"}, "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-b3ca528517f25164", "name": "Commented-code block (6 lines) in zk/verifiable_poker_solver_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/verifiable_poker_solver_js/witness_calculator.js:70"}, "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-557094643b810210", "name": "Commented-code block (6 lines) in zk/basic_utxo_ownership_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/basic_utxo_ownership_js/witness_calculator.js:70"}, "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-6032c2655dfdb946", "name": "Commented-code block (6 lines) in zk/poker_equity_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/poker_equity_js/witness_calculator.js:70"}, "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-b6a31508450e9af7", "name": "Commented-code block (6 lines) in zk/onchain_sig_verify_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/onchain_sig_verify_js/witness_calculator.js:70"}, "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-4eb749c49c5b7dfc", "name": "Legacy-named symbol `privacy_mixer_v1` in zk/privacy_mixer/scripts/prove_withdraw.js:9", "shortDescription": {"text": "Legacy-named symbol `privacy_mixer_v1` in zk/privacy_mixer/scripts/prove_withdraw.js:9"}, "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-59115ebabf16346b", "name": "Legacy-named symbol `privacy_mixer_v1` in zk/privacy_mixer/lib/tree.js:3", "shortDescription": {"text": "Legacy-named symbol `privacy_mixer_v1` in zk/privacy_mixer/lib/tree.js:3"}, "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-3932fee581502e48", "name": "Commented-code block (6 lines) in zk/anon_credential_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/anon_credential_js/witness_calculator.js:70"}, "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-7fa9e5d6d50b7024", "name": "Commented-code block (6 lines) in zk/output/merkle_membership_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/output/merkle_membership_js/witness_calculator.js:70"}, "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-afcca27cf44cd647", "name": "Commented-code block (6 lines) in zk/ml_inference_stub_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/ml_inference_stub_js/witness_calculator.js:70"}, "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-1045353c0d70b1bf", "name": "Commented-code block (6 lines) in zk/loan_health_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/loan_health_js/witness_calculator.js:70"}, "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-f2acbc26b925622b", "name": "Commented-code block (6 lines) in zk/vrf_random_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/vrf_random_js/witness_calculator.js:70"}, "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-1c6388bd3ec13e93", "name": "Commented-code block (6 lines) in zk/mimc_test_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/mimc_test_js/witness_calculator.js:70"}, "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-ccbdfa3b26939f06", "name": "Commented-code block (6 lines) in zk/relative_timelock_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/relative_timelock_js/witness_calculator.js:70"}, "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-96b0c8e9127f8489", "name": "Commented-code block (6 lines) in zk/hash_output/hash_helper_js/witness_calculator.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in zk/hash_output/hash_helper_js/witness_calculator.js:70"}, "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-319e66a630e14977", "name": "2 env vars used in code but missing from .env.example", "shortDescription": {"text": "2 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `KASPA_WASM_DIR`, `SIMULATE_LIVENESS`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-abbdfbd3ba096b0b", "name": "Frontend route `/covenant` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/covenant` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a9b7f008e4d35977", "name": "Frontend route `/covenant/:id` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/covenant/:id` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-905de61dc431f682", "name": "Frontend route `/covenant/:id/fix` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/covenant/:id/fix` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-03167c5906fe0d81", "name": "Frontend route `/deploy` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/deploy` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b4f565f7d8901682", "name": "Frontend route `/deploy/paid` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/deploy/paid` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-08aa377f240e4f72", "name": "Frontend route `/address/:addr` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/address/:addr` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-77dc70d5445bbc6a", "name": "Frontend route `/covenant/:id/studio` has no Link/navigate to it \u2014 frontend/src/App.jsx", "shortDescription": {"text": "Frontend route `/covenant/:id/studio` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4eb7de56e70e652f", "name": "Dangling fetch: POST /api/auth-session (frontend/src/App.jsx:91)", "shortDescription": {"text": "Dangling fetch: POST /api/auth-session (frontend/src/App.jsx:91)"}, "fullDescription": {"text": "`frontend/src/App.jsx:91` calls `POST /api/auth-session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth-session`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f0106f7465e5f9e9", "name": "Dangling fetch: POST /api/auth-session (frontend/src/App.jsx:115)", "shortDescription": {"text": "Dangling fetch: POST /api/auth-session (frontend/src/App.jsx:115)"}, "fullDescription": {"text": "`frontend/src/App.jsx:115` calls `POST /api/auth-session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth-session`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2ecb893e9bb24bc5", "name": "Dangling fetch: GET /api/balance/${encodeURIComponent(addr)}?network=${encodeURIComponent(net)} (frontend/src/components", "shortDescription": {"text": "Dangling fetch: GET /api/balance/${encodeURIComponent(addr)}?network=${encodeURIComponent(net)} (frontend/src/components/WalletContext.jsx:541)"}, "fullDescription": {"text": "`frontend/src/components/WalletContext.jsx:541` calls `GET /api/balance/${encodeURIComponent(addr)}?network=${encodeURIComponent(net)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/balance/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-313360e5d405fa98", "name": "Dangling fetch: POST /api/sign-and-broadcast (frontend/src/components/WalletContext.jsx:723)", "shortDescription": {"text": "Dangling fetch: POST /api/sign-and-broadcast (frontend/src/components/WalletContext.jsx:723)"}, "fullDescription": {"text": "`frontend/src/components/WalletContext.jsx:723` calls `POST /api/sign-and-broadcast` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/sign-and-broadcast`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f303c63e79b6abce", "name": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenReversi.jsx:254)", "shortDescription": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenReversi.jsx:254)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenReversi.jsx:254` calls `POST /api/oracle/verify-and-sign` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/oracle/verify-and-sign`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ea66e995a6a242db", "name": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenReversi.jsx:267)", "shortDescription": {"text": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenReversi.jsx:267)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenReversi.jsx:267` calls `POST /api/covenant/${covenantId}/compute-payout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant/<p>/compute-payout`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ec5409efd240b18", "name": "Dangling fetch: GET /api/paid-status?address=${encodeURIComponent(connectedAddress)}&network=${net} (frontend/src/compon", "shortDescription": {"text": "Dangling fetch: GET /api/paid-status?address=${encodeURIComponent(connectedAddress)}&network=${net} (frontend/src/components/CovexTerminal.jsx:851)"}, "fullDescription": {"text": "`frontend/src/components/CovexTerminal.jsx:851` calls `GET /api/paid-status?address=${encodeURIComponent(connectedAddress)}&network=${net}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/paid-status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-864ba3c22292f244", "name": "Dangling fetch: GET /api/paid-status?address=${encodeURIComponent(connectedAddress)}&network=${net} (frontend/src/compon", "shortDescription": {"text": "Dangling fetch: GET /api/paid-status?address=${encodeURIComponent(connectedAddress)}&network=${net} (frontend/src/components/CovexTerminal.jsx:958)"}, "fullDescription": {"text": "`frontend/src/components/CovexTerminal.jsx:958` calls `GET /api/paid-status?address=${encodeURIComponent(connectedAddress)}&network=${net}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/paid-status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d181d0eaa3bc1696", "name": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/CovexTerminal.jsx:1675)", "shortDescription": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/CovexTerminal.jsx:1675)"}, "fullDescription": {"text": "`frontend/src/components/CovexTerminal.jsx:1675` calls `POST /api/oracle/verify-and-sign` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/oracle/verify-and-sign`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-faf63d7ac0faf57b", "name": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/CovexTerminal.jsx:1726)", "shortDescription": {"text": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/CovexTerminal.jsx:1726)"}, "fullDescription": {"text": "`frontend/src/components/CovexTerminal.jsx:1726` calls `POST /api/covenant/${covenantId}/compute-payout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant/<p>/compute-payout`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-203a16d0fcc0e334", "name": "Dangling fetch: GET /api/terminal-config/${covenantId} (frontend/src/components/CovexTerminal.jsx:1785)", "shortDescription": {"text": "Dangling fetch: GET /api/terminal-config/${covenantId} (frontend/src/components/CovexTerminal.jsx:1785)"}, "fullDescription": {"text": "`frontend/src/components/CovexTerminal.jsx:1785` calls `GET /api/terminal-config/${covenantId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/terminal-config/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b76ab19a7e92a14e", "name": "Dangling fetch: POST /api/terminal-config/${covenantId} (frontend/src/components/CovexTerminal.jsx:1922)", "shortDescription": {"text": "Dangling fetch: POST /api/terminal-config/${covenantId} (frontend/src/components/CovexTerminal.jsx:1922)"}, "fullDescription": {"text": "`frontend/src/components/CovexTerminal.jsx:1922` calls `POST /api/terminal-config/${covenantId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/terminal-config/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b394ffcf8125d1c3", "name": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/CovexTerminal.jsx:1929)", "shortDescription": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/CovexTerminal.jsx:1929)"}, "fullDescription": {"text": "`frontend/src/components/CovexTerminal.jsx:1929` calls `POST /api/oracle/verify-and-sign` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/oracle/verify-and-sign`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-be18849467ca1b57", "name": "Dangling fetch: GET /api/terminal-config-challenge/${covenantId} (frontend/src/components/CovexTerminal.jsx:1962)", "shortDescription": {"text": "Dangling fetch: GET /api/terminal-config-challenge/${covenantId} (frontend/src/components/CovexTerminal.jsx:1962)"}, "fullDescription": {"text": "`frontend/src/components/CovexTerminal.jsx:1962` calls `GET /api/terminal-config-challenge/${covenantId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/terminal-config-challenge/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-95a47ab0bd055ea5", "name": "Dangling fetch: POST /api/terminal-config/${covenantId} (frontend/src/components/CovexTerminal.jsx:2014)", "shortDescription": {"text": "Dangling fetch: POST /api/terminal-config/${covenantId} (frontend/src/components/CovexTerminal.jsx:2014)"}, "fullDescription": {"text": "`frontend/src/components/CovexTerminal.jsx:2014` calls `POST /api/terminal-config/${covenantId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/terminal-config/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-85edc86b71e9aeaa", "name": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenConnect4.jsx:170)", "shortDescription": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenConnect4.jsx:170)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenConnect4.jsx:170` calls `POST /api/oracle/verify-and-sign` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/oracle/verify-and-sign`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d7e93bd1e671dfde", "name": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenConnect4.jsx:197)", "shortDescription": {"text": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenConnect4.jsx:197)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenConnect4.jsx:197` calls `POST /api/covenant/${covenantId}/compute-payout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant/<p>/compute-payout`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c089ffc9e440812", "name": "Dangling fetch: GET /api/poker/${encodeURIComponent(covenantId)}/state (frontend/src/components/FullScreenPoker.jsx:284)", "shortDescription": {"text": "Dangling fetch: GET /api/poker/${encodeURIComponent(covenantId)}/state (frontend/src/components/FullScreenPoker.jsx:284)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenPoker.jsx:284` calls `GET /api/poker/${encodeURIComponent(covenantId)}/state` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/poker/<p>/state`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f60ef8cfec145114", "name": "Dangling fetch: GET /api/poker/${encodeURIComponent(covenantId)}/challenge?address=${encodeURIComponent(address)} (front", "shortDescription": {"text": "Dangling fetch: GET /api/poker/${encodeURIComponent(covenantId)}/challenge?address=${encodeURIComponent(address)} (frontend/src/components/FullScreenPoker.jsx:317)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenPoker.jsx:317` calls `GET /api/poker/${encodeURIComponent(covenantId)}/challenge?address=${encodeURIComponent(address)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/poker/<p>/challenge`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d3f6c11967adc623", "name": "Dangling fetch: POST /api/poker/${encodeURIComponent(covenantId)}/session (frontend/src/components/FullScreenPoker.jsx:3", "shortDescription": {"text": "Dangling fetch: POST /api/poker/${encodeURIComponent(covenantId)}/session (frontend/src/components/FullScreenPoker.jsx:320)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenPoker.jsx:320` calls `POST /api/poker/${encodeURIComponent(covenantId)}/session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/poker/<p>/session`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8e6c4d6b8bbc67fb", "name": "Dangling fetch: POST /api/poker/${encodeURIComponent(covenantId)}/hole (frontend/src/components/FullScreenPoker.jsx:339)", "shortDescription": {"text": "Dangling fetch: POST /api/poker/${encodeURIComponent(covenantId)}/hole (frontend/src/components/FullScreenPoker.jsx:339)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenPoker.jsx:339` calls `POST /api/poker/${encodeURIComponent(covenantId)}/hole` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/poker/<p>/hole`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-03ccb5f41b2dbf7a", "name": "Dangling fetch: POST /api/poker/${encodeURIComponent(covenantId)}/${path} (frontend/src/components/FullScreenPoker.jsx:3", "shortDescription": {"text": "Dangling fetch: POST /api/poker/${encodeURIComponent(covenantId)}/${path} (frontend/src/components/FullScreenPoker.jsx:367)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenPoker.jsx:367` calls `POST /api/poker/${encodeURIComponent(covenantId)}/${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/poker/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c40d9bb826aaf388", "name": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenPoker.jsx:413)", "shortDescription": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenPoker.jsx:413)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenPoker.jsx:413` calls `POST /api/oracle/verify-and-sign` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/oracle/verify-and-sign`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f04b6d5c8ebcad1d", "name": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenPoker.jsx:433)", "shortDescription": {"text": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenPoker.jsx:433)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenPoker.jsx:433` calls `POST /api/covenant/${covenantId}/compute-payout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant/<p>/compute-payout`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dacd8d74c07a3227", "name": "Dangling fetch: GET /api/events?network=${network}&limit=20 (frontend/src/components/LiveTicker.jsx:35)", "shortDescription": {"text": "Dangling fetch: GET /api/events?network=${network}&limit=20 (frontend/src/components/LiveTicker.jsx:35)"}, "fullDescription": {"text": "`frontend/src/components/LiveTicker.jsx:35` calls `GET /api/events?network=${network}&limit=20` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dd1c95e633532db1", "name": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenBlackjack.jsx:271)", "shortDescription": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenBlackjack.jsx:271)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenBlackjack.jsx:271` calls `POST /api/oracle/verify-and-sign` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/oracle/verify-and-sign`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-918db62d12092070", "name": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenBlackjack.jsx:309)", "shortDescription": {"text": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenBlackjack.jsx:309)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenBlackjack.jsx:309` calls `POST /api/covenant/${covenantId}/compute-payout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant/<p>/compute-payout`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7040b8054b8c28f0", "name": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenTicTacToe.jsx:138)", "shortDescription": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenTicTacToe.jsx:138)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenTicTacToe.jsx:138` calls `POST /api/oracle/verify-and-sign` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/oracle/verify-and-sign`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c3b155ec4436bc2", "name": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenTicTacToe.jsx:154)", "shortDescription": {"text": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenTicTacToe.jsx:154)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenTicTacToe.jsx:154` calls `POST /api/covenant/${covenantId}/compute-payout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant/<p>/compute-payout`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f13a43673c4da6f4", "name": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenRPS.jsx:249)", "shortDescription": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenRPS.jsx:249)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenRPS.jsx:249` calls `POST /api/oracle/verify-and-sign` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/oracle/verify-and-sign`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-00e1909b65ff4f33", "name": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenRPS.jsx:262)", "shortDescription": {"text": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenRPS.jsx:262)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenRPS.jsx:262` calls `POST /api/covenant/${covenantId}/compute-payout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant/<p>/compute-payout`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-07f2c749457aba44", "name": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenCheckers.jsx:336)", "shortDescription": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenCheckers.jsx:336)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenCheckers.jsx:336` calls `POST /api/oracle/verify-and-sign` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/oracle/verify-and-sign`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0bd350ffcfe5f499", "name": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenCheckers.jsx:367)", "shortDescription": {"text": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenCheckers.jsx:367)"}, "fullDescription": {"text": "`frontend/src/components/FullScreenCheckers.jsx:367` calls `POST /api/covenant/${covenantId}/compute-payout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant/<p>/compute-payout`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-02ab9c6826cc148a", "name": "Dangling fetch: GET /api/terminal-config-challenge/${encodeURIComponent(covenantId)} (frontend/src/lib/ownership.js:17)", "shortDescription": {"text": "Dangling fetch: GET /api/terminal-config-challenge/${encodeURIComponent(covenantId)} (frontend/src/lib/ownership.js:17)"}, "fullDescription": {"text": "`frontend/src/lib/ownership.js:17` calls `GET /api/terminal-config-challenge/${encodeURIComponent(covenantId)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/terminal-config-challenge/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-df980d6edd818971", "name": "Dangling fetch: GET /api/games?status=waiting&limit=24 (frontend/src/pages/Explorer.jsx:253)", "shortDescription": {"text": "Dangling fetch: GET /api/games?status=waiting&limit=24 (frontend/src/pages/Explorer.jsx:253)"}, "fullDescription": {"text": "`frontend/src/pages/Explorer.jsx:253` calls `GET /api/games?status=waiting&limit=24` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/games`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9f3d280a4aef2de2", "name": "Dangling fetch: GET /api/covenants/${encodeURIComponent(q)} (frontend/src/pages/Explorer.jsx:288)", "shortDescription": {"text": "Dangling fetch: GET /api/covenants/${encodeURIComponent(q)} (frontend/src/pages/Explorer.jsx:288)"}, "fullDescription": {"text": "`frontend/src/pages/Explorer.jsx:288` calls `GET /api/covenants/${encodeURIComponent(q)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenants/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ed97f4a67a987bb", "name": "Dangling fetch: GET /api/covenants?network=${kaspaNetwork}&creator=${encodeURIComponent(q)}&limit=200 (frontend/src/page", "shortDescription": {"text": "Dangling fetch: GET /api/covenants?network=${kaspaNetwork}&creator=${encodeURIComponent(q)}&limit=200 (frontend/src/pages/Explorer.jsx:297)"}, "fullDescription": {"text": "`frontend/src/pages/Explorer.jsx:297` calls `GET /api/covenants?network=${kaspaNetwork}&creator=${encodeURIComponent(q)}&limit=200` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a6238fa2eea9ce0e", "name": "Dangling fetch: GET /api/covenants?network=${kaspaNetwork}&q=${encodeURIComponent(q)}&limit=100 (frontend/src/pages/Expl", "shortDescription": {"text": "Dangling fetch: GET /api/covenants?network=${kaspaNetwork}&q=${encodeURIComponent(q)}&limit=100 (frontend/src/pages/Explorer.jsx:308)"}, "fullDescription": {"text": "`frontend/src/pages/Explorer.jsx:308` calls `GET /api/covenants?network=${kaspaNetwork}&q=${encodeURIComponent(q)}&limit=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1949aa8593085632", "name": "Dangling fetch: GET /api/covenants/${encodeURIComponent(id)} (frontend/src/pages/CovenantStudio.jsx:33)", "shortDescription": {"text": "Dangling fetch: GET /api/covenants/${encodeURIComponent(id)} (frontend/src/pages/CovenantStudio.jsx:33)"}, "fullDescription": {"text": "`frontend/src/pages/CovenantStudio.jsx:33` calls `GET /api/covenants/${encodeURIComponent(id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenants/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-de3521e35a08497e", "name": "Dangling fetch: POST /api/terminal-config/${encodeURIComponent(id)} (frontend/src/pages/CovenantStudio.jsx:52)", "shortDescription": {"text": "Dangling fetch: POST /api/terminal-config/${encodeURIComponent(id)} (frontend/src/pages/CovenantStudio.jsx:52)"}, "fullDescription": {"text": "`frontend/src/pages/CovenantStudio.jsx:52` calls `POST /api/terminal-config/${encodeURIComponent(id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/terminal-config/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-048630bd6d7ff3be", "name": "Dangling fetch: GET /api/covenant/catalog (frontend/src/pages/EnforcedDeploy.jsx:61)", "shortDescription": {"text": "Dangling fetch: GET /api/covenant/catalog (frontend/src/pages/EnforcedDeploy.jsx:61)"}, "fullDescription": {"text": "`frontend/src/pages/EnforcedDeploy.jsx:61` calls `GET /api/covenant/catalog` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant/catalog`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2366875addbc37d3", "name": "Dangling fetch: GET /api/status (frontend/src/pages/EnforcedDeploy.jsx:62)", "shortDescription": {"text": "Dangling fetch: GET /api/status (frontend/src/pages/EnforcedDeploy.jsx:62)"}, "fullDescription": {"text": "`frontend/src/pages/EnforcedDeploy.jsx:62` calls `GET /api/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2e6671449e8e7c8b", "name": "Dangling fetch: POST /api/covenant/p2sh/prepare-deploy (frontend/src/pages/EnforcedDeploy.jsx:116)", "shortDescription": {"text": "Dangling fetch: POST /api/covenant/p2sh/prepare-deploy (frontend/src/pages/EnforcedDeploy.jsx:116)"}, "fullDescription": {"text": "`frontend/src/pages/EnforcedDeploy.jsx:116` calls `POST /api/covenant/p2sh/prepare-deploy` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant/p2sh/prepare-deploy`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90a0f79d5db2c789", "name": "Dangling fetch: POST /api/covenant/p2sh/submit-deploy (frontend/src/pages/EnforcedDeploy.jsx:127)", "shortDescription": {"text": "Dangling fetch: POST /api/covenant/p2sh/submit-deploy (frontend/src/pages/EnforcedDeploy.jsx:127)"}, "fullDescription": {"text": "`frontend/src/pages/EnforcedDeploy.jsx:127` calls `POST /api/covenant/p2sh/submit-deploy` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant/p2sh/submit-deploy`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-34affa825d58ef39", "name": "Dangling fetch: POST /api/covenant/p2sh/deploy (frontend/src/pages/EnforcedDeploy.jsx:143)", "shortDescription": {"text": "Dangling fetch: POST /api/covenant/p2sh/deploy (frontend/src/pages/EnforcedDeploy.jsx:143)"}, "fullDescription": {"text": "`frontend/src/pages/EnforcedDeploy.jsx:143` calls `POST /api/covenant/p2sh/deploy` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant/p2sh/deploy`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-db7e983d327a1b7c", "name": "Dangling fetch: POST /api/covenant/p2sh/prepare-spend (frontend/src/pages/EnforcedDeploy.jsx:184)", "shortDescription": {"text": "Dangling fetch: POST /api/covenant/p2sh/prepare-spend (frontend/src/pages/EnforcedDeploy.jsx:184)"}, "fullDescription": {"text": "`frontend/src/pages/EnforcedDeploy.jsx:184` calls `POST /api/covenant/p2sh/prepare-spend` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant/p2sh/prepare-spend`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-722041de85eb0f92", "name": "Dangling fetch: POST /api/covenant/p2sh/submit-signed (frontend/src/pages/EnforcedDeploy.jsx:217)", "shortDescription": {"text": "Dangling fetch: POST /api/covenant/p2sh/submit-signed (frontend/src/pages/EnforcedDeploy.jsx:217)"}, "fullDescription": {"text": "`frontend/src/pages/EnforcedDeploy.jsx:217` calls `POST /api/covenant/p2sh/submit-signed` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant/p2sh/submit-signed`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a883576652c77c45", "name": "Dangling fetch: POST /api/covenant/p2sh/spend (frontend/src/pages/EnforcedDeploy.jsx:243)", "shortDescription": {"text": "Dangling fetch: POST /api/covenant/p2sh/spend (frontend/src/pages/EnforcedDeploy.jsx:243)"}, "fullDescription": {"text": "`frontend/src/pages/EnforcedDeploy.jsx:243` calls `POST /api/covenant/p2sh/spend` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant/p2sh/spend`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3717779cf2d17701", "name": "Dangling fetch: GET /api/terminal-config/${encodeURIComponent(selected.tx_id)} (frontend/src/pages/CovenantFix.jsx:275)", "shortDescription": {"text": "Dangling fetch: GET /api/terminal-config/${encodeURIComponent(selected.tx_id)} (frontend/src/pages/CovenantFix.jsx:275)"}, "fullDescription": {"text": "`frontend/src/pages/CovenantFix.jsx:275` calls `GET /api/terminal-config/${encodeURIComponent(selected.tx_id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/terminal-config/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-97600ca31ea88ef1", "name": "Dangling fetch: POST /api/terminal-config/${selected.tx_id} (frontend/src/pages/CovenantFix.jsx:347)", "shortDescription": {"text": "Dangling fetch: POST /api/terminal-config/${selected.tx_id} (frontend/src/pages/CovenantFix.jsx:347)"}, "fullDescription": {"text": "`frontend/src/pages/CovenantFix.jsx:347` calls `POST /api/terminal-config/${selected.tx_id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/terminal-config/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-110475fad5df83c6", "name": "Dangling fetch: GET /api/balance/${encodeURIComponent(treasury)}?network=${network} (frontend/src/pages/Treasury.jsx:23)", "shortDescription": {"text": "Dangling fetch: GET /api/balance/${encodeURIComponent(treasury)}?network=${network} (frontend/src/pages/Treasury.jsx:23)"}, "fullDescription": {"text": "`frontend/src/pages/Treasury.jsx:23` calls `GET /api/balance/${encodeURIComponent(treasury)}?network=${network}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/balance/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-40cc4ec74be857d7", "name": "Dangling fetch: GET /api/events?network=${network}&limit=100 (frontend/src/pages/Treasury.jsx:27)", "shortDescription": {"text": "Dangling fetch: GET /api/events?network=${network}&limit=100 (frontend/src/pages/Treasury.jsx:27)"}, "fullDescription": {"text": "`frontend/src/pages/Treasury.jsx:27` calls `GET /api/events?network=${network}&limit=100` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1a8550353f33bbb2", "name": "Dangling fetch: POST /api/auth-session (frontend/src/pages/PremiumBuilder.jsx:70)", "shortDescription": {"text": "Dangling fetch: POST /api/auth-session (frontend/src/pages/PremiumBuilder.jsx:70)"}, "fullDescription": {"text": "`frontend/src/pages/PremiumBuilder.jsx:70` calls `POST /api/auth-session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth-session`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4412b23ae005502d", "name": "Dangling fetch: GET /api/status (frontend/src/pages/PremiumBuilder.jsx:107)", "shortDescription": {"text": "Dangling fetch: GET /api/status (frontend/src/pages/PremiumBuilder.jsx:107)"}, "fullDescription": {"text": "`frontend/src/pages/PremiumBuilder.jsx:107` calls `GET /api/status` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/status`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cbb899a4cd7a9d8a", "name": "Dangling fetch: POST /api/covenant/p2sh/deploy (frontend/src/pages/PremiumBuilder.jsx:219)", "shortDescription": {"text": "Dangling fetch: POST /api/covenant/p2sh/deploy (frontend/src/pages/PremiumBuilder.jsx:219)"}, "fullDescription": {"text": "`frontend/src/pages/PremiumBuilder.jsx:219` calls `POST /api/covenant/p2sh/deploy` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant/p2sh/deploy`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-15b6dc9efe13b3d6", "name": "Dangling fetch: POST /api/terminal-config/${encodeURIComponent(covId)} (frontend/src/pages/PremiumBuilder.jsx:248)", "shortDescription": {"text": "Dangling fetch: POST /api/terminal-config/${encodeURIComponent(covId)} (frontend/src/pages/PremiumBuilder.jsx:248)"}, "fullDescription": {"text": "`frontend/src/pages/PremiumBuilder.jsx:248` calls `POST /api/terminal-config/${encodeURIComponent(covId)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/terminal-config/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a6fb9db945182455", "name": "Dangling fetch: POST /api/covenant-metadata (frontend/src/pages/PremiumBuilder.jsx:268)", "shortDescription": {"text": "Dangling fetch: POST /api/covenant-metadata (frontend/src/pages/PremiumBuilder.jsx:268)"}, "fullDescription": {"text": "`frontend/src/pages/PremiumBuilder.jsx:268` calls `POST /api/covenant-metadata` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant-metadata`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3a97bd9abd7052bb", "name": "Dangling fetch: POST /api/auth-session (frontend/src/pages/CovenantInteractive.jsx:159)", "shortDescription": {"text": "Dangling fetch: POST /api/auth-session (frontend/src/pages/CovenantInteractive.jsx:159)"}, "fullDescription": {"text": "`frontend/src/pages/CovenantInteractive.jsx:159` calls `POST /api/auth-session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth-session`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-87cbdef25c106291", "name": "Dangling fetch: POST /api/covenant/p2sh/claim (frontend/src/pages/CovenantInteractive.jsx:254)", "shortDescription": {"text": "Dangling fetch: POST /api/covenant/p2sh/claim (frontend/src/pages/CovenantInteractive.jsx:254)"}, "fullDescription": {"text": "`frontend/src/pages/CovenantInteractive.jsx:254` calls `POST /api/covenant/p2sh/claim` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenant/p2sh/claim`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4615a5be4c0e330e", "name": "Dangling fetch: GET /api/covenants/${encodeURIComponent(id)} (frontend/src/pages/CovenantInteractive.jsx:262)", "shortDescription": {"text": "Dangling fetch: GET /api/covenants/${encodeURIComponent(id)} (frontend/src/pages/CovenantInteractive.jsx:262)"}, "fullDescription": {"text": "`frontend/src/pages/CovenantInteractive.jsx:262` calls `GET /api/covenants/${encodeURIComponent(id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenants/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-60b01b64e038a585", "name": "Dangling fetch: GET /api/covenants/${encodeURIComponent(id)}/actions (frontend/src/pages/CovenantInteractive.jsx:330)", "shortDescription": {"text": "Dangling fetch: GET /api/covenants/${encodeURIComponent(id)}/actions (frontend/src/pages/CovenantInteractive.jsx:330)"}, "fullDescription": {"text": "`frontend/src/pages/CovenantInteractive.jsx:330` calls `GET /api/covenants/${encodeURIComponent(id)}/actions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenants/<p>/actions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2fde645cc3b42101", "name": "Dangling fetch: GET /api/covenants/${encodeURIComponent(id)} (frontend/src/pages/CovenantInteractive.jsx:338)", "shortDescription": {"text": "Dangling fetch: GET /api/covenants/${encodeURIComponent(id)} (frontend/src/pages/CovenantInteractive.jsx:338)"}, "fullDescription": {"text": "`frontend/src/pages/CovenantInteractive.jsx:338` calls `GET /api/covenants/${encodeURIComponent(id)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/covenants/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7465e5923e300e14", "name": "Dangling fetch: POST /api/terminal-config/${id} (frontend/src/pages/CovenantInteractive.jsx:594)", "shortDescription": {"text": "Dangling fetch: POST /api/terminal-config/${id} (frontend/src/pages/CovenantInteractive.jsx:594)"}, "fullDescription": {"text": "`frontend/src/pages/CovenantInteractive.jsx:594` calls `POST /api/terminal-config/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/terminal-config/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a33dfe0efa595915", "name": "Dangling fetch: GET /api/marketplace/templates (frontend/src/pages/TemplateLibrary.jsx:32)", "shortDescription": {"text": "Dangling fetch: GET /api/marketplace/templates (frontend/src/pages/TemplateLibrary.jsx:32)"}, "fullDescription": {"text": "`frontend/src/pages/TemplateLibrary.jsx:32` calls `GET /api/marketplace/templates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/marketplace/templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9339b1f60aa03eaf", "name": "Dangling fetch: GET /api/marketplace/templates (frontend/src/pages/TemplateLibrary.jsx:287)", "shortDescription": {"text": "Dangling fetch: GET /api/marketplace/templates (frontend/src/pages/TemplateLibrary.jsx:287)"}, "fullDescription": {"text": "`frontend/src/pages/TemplateLibrary.jsx:287` calls `GET /api/marketplace/templates` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/marketplace/templates`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c835d35cbc6b90dd", "name": "Dangling fetch: GET /api/openapi.json (frontend/src/pages/ApiDocs.jsx:37)", "shortDescription": {"text": "Dangling fetch: GET /api/openapi.json (frontend/src/pages/ApiDocs.jsx:37)"}, "fullDescription": {"text": "`frontend/src/pages/ApiDocs.jsx:37` calls `GET /api/openapi.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/openapi.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aeadafee07ae3328", "name": "Dangling fetch: POST /api/auth-session (frontend/src/pages/AdvancedComposer.jsx:28)", "shortDescription": {"text": "Dangling fetch: POST /api/auth-session (frontend/src/pages/AdvancedComposer.jsx:28)"}, "fullDescription": {"text": "`frontend/src/pages/AdvancedComposer.jsx:28` calls `POST /api/auth-session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth-session`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a371b33a8e834729", "name": "Dangling fetch: POST /api/auth-session (frontend/src/pages/PaidBuilder.jsx:95)", "shortDescription": {"text": "Dangling fetch: POST /api/auth-session (frontend/src/pages/PaidBuilder.jsx:95)"}, "fullDescription": {"text": "`frontend/src/pages/PaidBuilder.jsx:95` calls `POST /api/auth-session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth-session`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d948b754186e2e86", "name": "Dangling fetch: GET /api/stats?network=${network} (frontend/src/pages/Stats.jsx:118)", "shortDescription": {"text": "Dangling fetch: GET /api/stats?network=${network} (frontend/src/pages/Stats.jsx:118)"}, "fullDescription": {"text": "`frontend/src/pages/Stats.jsx:118` calls `GET /api/stats?network=${network}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/stats`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-71ef4f5f5e4a9d30", "name": "Dangling fetch: GET /api/address/${encodeURIComponent(addr)}?network=${network} (frontend/src/pages/AddressPortfolio.jsx", "shortDescription": {"text": "Dangling fetch: GET /api/address/${encodeURIComponent(addr)}?network=${network} (frontend/src/pages/AddressPortfolio.jsx:15)"}, "fullDescription": {"text": "`frontend/src/pages/AddressPortfolio.jsx:15` calls `GET /api/address/${encodeURIComponent(addr)}?network=${network}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/address/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4c70c23afdfb82c7", "name": "Dangling fetch: POST /api/games/${encodeURIComponent(covenantId)}/claim-timeout (frontend/src/hooks/useGameSync.js:64)", "shortDescription": {"text": "Dangling fetch: POST /api/games/${encodeURIComponent(covenantId)}/claim-timeout (frontend/src/hooks/useGameSync.js:64)"}, "fullDescription": {"text": "`frontend/src/hooks/useGameSync.js:64` calls `POST /api/games/${encodeURIComponent(covenantId)}/claim-timeout` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/games/<p>/claim-timeout`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5162c53ae17a5caa", "name": "Dangling fetch: GET /api/games/${encodeURIComponent(covenantId)} (frontend/src/hooks/useGameSync.js:101)", "shortDescription": {"text": "Dangling fetch: GET /api/games/${encodeURIComponent(covenantId)} (frontend/src/hooks/useGameSync.js:101)"}, "fullDescription": {"text": "`frontend/src/hooks/useGameSync.js:101` calls `GET /api/games/${encodeURIComponent(covenantId)}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/games/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-36e5a3b32317d580", "name": "Dangling fetch: POST /api/games/${encodeURIComponent(covenantId)}/join (frontend/src/hooks/useGameSync.js:140)", "shortDescription": {"text": "Dangling fetch: POST /api/games/${encodeURIComponent(covenantId)}/join (frontend/src/hooks/useGameSync.js:140)"}, "fullDescription": {"text": "`frontend/src/hooks/useGameSync.js:140` calls `POST /api/games/${encodeURIComponent(covenantId)}/join` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/games/<p>/join`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9a253374e4137570", "name": "Dangling fetch: POST /api/games/${encodeURIComponent(covenantId)}/move (frontend/src/hooks/useGameSync.js:166)", "shortDescription": {"text": "Dangling fetch: POST /api/games/${encodeURIComponent(covenantId)}/move (frontend/src/hooks/useGameSync.js:166)"}, "fullDescription": {"text": "`frontend/src/hooks/useGameSync.js:166` calls `POST /api/games/${encodeURIComponent(covenantId)}/move` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/games/<p>/move`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f3cdc0916f26639", "name": "Dangling fetch: POST /api/games/${encodeURIComponent(covenantId)}/resign (frontend/src/hooks/useGameSync.js:187)", "shortDescription": {"text": "Dangling fetch: POST /api/games/${encodeURIComponent(covenantId)}/resign (frontend/src/hooks/useGameSync.js:187)"}, "fullDescription": {"text": "`frontend/src/hooks/useGameSync.js:187` calls `POST /api/games/${encodeURIComponent(covenantId)}/resign` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/games/<p>/resign`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-597c3cb7e3d1017b", "name": "Dangling fetch: GET /api/covenants?${query} (frontend/src/lib/sdk/CovexClient.ts:78)", "shortDescription": {"text": "Dangling fetch: GET /api/covenants?${query} (frontend/src/lib/sdk/CovexClient.ts:78)"}, "fullDescription": {"text": "`frontend/src/lib/sdk/CovexClient.ts:78` calls `GET /api/covenants?${query}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/covenants`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1e56c8fc4035191e", "name": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/lib/sdk/CovexClient.ts:83)", "shortDescription": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/lib/sdk/CovexClient.ts:83)"}, "fullDescription": {"text": "`frontend/src/lib/sdk/CovexClient.ts:83` calls `POST /api/oracle/verify-and-sign` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/oracle/verify-and-sign`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-65be3cad99a6cf99", "name": "Dangling fetch: GET /api/analytics${query} (frontend/src/lib/sdk/CovexClient.ts:104)", "shortDescription": {"text": "Dangling fetch: GET /api/analytics${query} (frontend/src/lib/sdk/CovexClient.ts:104)"}, "fullDescription": {"text": "`frontend/src/lib/sdk/CovexClient.ts:104` calls `GET /api/analytics${query}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/analytics/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5a6965a349e7cf8f", "name": "Unused endpoint: PUT /index.html", "shortDescription": {"text": "Unused endpoint: PUT /index.html"}, "fullDescription": {"text": "`frontend/public/sw.js` declares `PUT /index.html` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/21250"}, "properties": {"repository": "THTProtocol/Covex27", "repoUrl": "https://github.com/THTProtocol/Covex27", "branch": "main"}, "results": [{"ruleId": "scanner-9f708e24dc22af4a", "level": "note", "message": {"text": "\"active\" state uses light bg in a dark theme \u2014 frontend/src/components/FullScreenChess.jsx:194"}, "properties": {"repobilityId": "ef371e7e7626d785", "scanner": "scanner-primary", "fingerprint": "9f708e24dc22af4a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.active-light-bg"]}}, {"ruleId": "scanner-a30ce2f1b8fd22e0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/WalletButton.jsx:82"}, "properties": {"repobilityId": "6b94c36458d49164", "scanner": "scanner-primary", "fingerprint": "a30ce2f1b8fd22e0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-10d194d3287859d3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CovexTerminal.jsx:2471"}, "properties": {"repobilityId": "bf93e761109bca1b", "scanner": "scanner-primary", "fingerprint": "10d194d3287859d3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9477303e8ca97e38", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/components/CovexTerminal.jsx:1687"}, "properties": {"repobilityId": "e83ef6e9e54b4489", "scanner": "scanner-primary", "fingerprint": "9477303e8ca97e38", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dacf4637199d06ae", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/DesignStudio.jsx:97"}, "properties": {"repobilityId": "a6aaa40691d3a70e", "scanner": "scanner-primary", "fingerprint": "dacf4637199d06ae", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e062b91da667e0d1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/FullScreenPoker.jsx:517"}, "properties": {"repobilityId": "67e7a485d9a78131", "scanner": "scanner-primary", "fingerprint": "e062b91da667e0d1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4a9d3249bbc7aa1a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/LiveTicker.jsx:74"}, "properties": {"repobilityId": "df100ae34c52aadb", "scanner": "scanner-primary", "fingerprint": "4a9d3249bbc7aa1a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3ac26f45a0090cef", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/components/CovenantPreview.jsx:51"}, "properties": {"repobilityId": "75422b328c78b714", "scanner": "scanner-primary", "fingerprint": "3ac26f45a0090cef", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-92403ec8c5c31545", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/CircuitSelector.jsx:81"}, "properties": {"repobilityId": "297a160b9dcba0d1", "scanner": "scanner-primary", "fingerprint": "92403ec8c5c31545", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-95c240bfa81b30db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/lib/sdk/CovexClient.ts:92"}, "properties": {"repobilityId": "2c6e0f7359902721", "scanner": "scanner-primary", "fingerprint": "95c240bfa81b30db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-837ee1a95b1ed181", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/Explorer.jsx:526"}, "properties": {"repobilityId": "0774e10af1916b75", "scanner": "scanner-primary", "fingerprint": "837ee1a95b1ed181", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dab698c04b081d41", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CovenantStudio.jsx:104"}, "properties": {"repobilityId": "8c78fb1bd4f05169", "scanner": "scanner-primary", "fingerprint": "dab698c04b081d41", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-60efed8a867e74dc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CovenantFix.jsx:449"}, "properties": {"repobilityId": "55cfa34370a76240", "scanner": "scanner-primary", "fingerprint": "60efed8a867e74dc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fc59321a56c2120e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/Treasury.jsx:79"}, "properties": {"repobilityId": "0def5c8d8d5930f8", "scanner": "scanner-primary", "fingerprint": "fc59321a56c2120e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bbafb2b472939283", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/CovenantInteractive.jsx:810"}, "properties": {"repobilityId": "02abd59463781319", "scanner": "scanner-primary", "fingerprint": "bbafb2b472939283", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5905046ef1c10126", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/TemplateLibrary.jsx:308"}, "properties": {"repobilityId": "90eb304a79f92dda", "scanner": "scanner-primary", "fingerprint": "5905046ef1c10126", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ce4fd7decc846eed", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/PaidBuilder.jsx:355"}, "properties": {"repobilityId": "4f80bfc7dc3eb766", "scanner": "scanner-primary", "fingerprint": "ce4fd7decc846eed", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e18a0c24e62947fa", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/pages/AddressPortfolio.jsx:79"}, "properties": {"repobilityId": "cf74219e1e6b59c1", "scanner": "scanner-primary", "fingerprint": "e18a0c24e62947fa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1e878cea675cb0ad", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-covenant.js:25"}, "properties": {"repobilityId": "13040ba2c901be7b", "scanner": "scanner-primary", "fingerprint": "1e878cea675cb0ad", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5c47ececb89f7df6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_turn_timer.js:39"}, "properties": {"repobilityId": "76cdcacb41c7a4e5", "scanner": "scanner-primary", "fingerprint": "5c47ececb89f7df6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9b5dd0d9a19c8535", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_relative_timelock.js:36"}, "properties": {"repobilityId": "db4715901d130177", "scanner": "scanner-primary", "fingerprint": "9b5dd0d9a19c8535", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-186e7cdf405f9906", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_hash_preimage.js:25"}, "properties": {"repobilityId": "876c1d78a676f61a", "scanner": "scanner-primary", "fingerprint": "186e7cdf405f9906", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8dcbcbd4fc2db15d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_nullifier_set.js:36"}, "properties": {"repobilityId": "9fd222e9f5789f55", "scanner": "scanner-primary", "fingerprint": "8dcbcbd4fc2db15d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-037e9dad755c5e76", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_vrf_random.js:37"}, "properties": {"repobilityId": "461915ad2eb080ed", "scanner": "scanner-primary", "fingerprint": "037e9dad755c5e76", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7680887d50b1acd3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_timelock.js:23"}, "properties": {"repobilityId": "542cf9e7d1b7a147", "scanner": "scanner-primary", "fingerprint": "7680887d50b1acd3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f774e83170ebbe66", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_basic_utxo_ownership.js:36"}, "properties": {"repobilityId": "b78b680cdb226422", "scanner": "scanner-primary", "fingerprint": "f774e83170ebbe66", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d7494668d200dcb9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_script_constraint.js:42"}, "properties": {"repobilityId": "eafcc4a49feace44", "scanner": "scanner-primary", "fingerprint": "d7494668d200dcb9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c3875445bb62135", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_vrf_dice_roll.js:40"}, "properties": {"repobilityId": "1af47970d8217cca", "scanner": "scanner-primary", "fingerprint": "3c3875445bb62135", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4531f97bf7247c9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/nullifier/prove_pot_split_math.js:36"}, "properties": {"repobilityId": "afc14570ab8d9817", "scanner": "scanner-primary", "fingerprint": "c4531f97bf7247c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d26dbc78f4349e07", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_turn_timer.js:39"}, "properties": {"repobilityId": "db561b313d7e014d", "scanner": "scanner-primary", "fingerprint": "d26dbc78f4349e07", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab6bea4a9a1a15c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_relative_timelock.js:36"}, "properties": {"repobilityId": "9dac77fdc5ba9c60", "scanner": "scanner-primary", "fingerprint": "ab6bea4a9a1a15c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1ba36f0e6304b5bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_hash_preimage.js:25"}, "properties": {"repobilityId": "cc990a49d425a12e", "scanner": "scanner-primary", "fingerprint": "1ba36f0e6304b5bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa2dc265739af950", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_nullifier_set.js:36"}, "properties": {"repobilityId": "95b4c6f7e820dc56", "scanner": "scanner-primary", "fingerprint": "aa2dc265739af950", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8fccaf706943685e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_vrf_random.js:37"}, "properties": {"repobilityId": "e87799342f9fa3b2", "scanner": "scanner-primary", "fingerprint": "8fccaf706943685e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-263ad2f1cbe4d760", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/verify_onchain_sig.js:16"}, "properties": {"repobilityId": "757e93a331225126", "scanner": "scanner-primary", "fingerprint": "263ad2f1cbe4d760", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a297a3b3625c0e4d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_timelock.js:23"}, "properties": {"repobilityId": "7af42fb5e7c8b880", "scanner": "scanner-primary", "fingerprint": "a297a3b3625c0e4d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d25a5e2acd31cb65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_basic_utxo_ownership.js:36"}, "properties": {"repobilityId": "e7a9cfcd1e1db7c9", "scanner": "scanner-primary", "fingerprint": "d25a5e2acd31cb65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e6833dd5d21d72ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_script_constraint.js:42"}, "properties": {"repobilityId": "a0f0bd916638ccbd", "scanner": "scanner-primary", "fingerprint": "e6833dd5d21d72ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2e0fe5e3f763c89", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_vrf_dice_roll.js:40"}, "properties": {"repobilityId": "d7859f8c6259ccd7", "scanner": "scanner-primary", "fingerprint": "b2e0fe5e3f763c89", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-791ed8d92b2cce95", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/onchain-sig/prove_pot_split_math.js:36"}, "properties": {"repobilityId": "08c63c066d4d141a", "scanner": "scanner-primary", "fingerprint": "791ed8d92b2cce95", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c08a7c00b5bf393", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf/prove_vrf_random.js:37"}, "properties": {"repobilityId": "32f73a1bb868e6ec", "scanner": "scanner-primary", "fingerprint": "2c08a7c00b5bf393", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d24fa07625eb721b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_turn_timer.js:39"}, "properties": {"repobilityId": "e8e025edfe08d313", "scanner": "scanner-primary", "fingerprint": "d24fa07625eb721b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd4d0e36e68e3127", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_relative_timelock.js:36"}, "properties": {"repobilityId": "bc1c482256122998", "scanner": "scanner-primary", "fingerprint": "bd4d0e36e68e3127", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4e6d6e9784955593", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_hash_preimage.js:25"}, "properties": {"repobilityId": "de2c5b12effa39f0", "scanner": "scanner-primary", "fingerprint": "4e6d6e9784955593", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-87bea9bf6c95f015", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_nullifier_set.js:36"}, "properties": {"repobilityId": "650218ff46c49a3f", "scanner": "scanner-primary", "fingerprint": "87bea9bf6c95f015", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9ac07406603466df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_vrf_random.js:37"}, "properties": {"repobilityId": "4bd14addc286072e", "scanner": "scanner-primary", "fingerprint": "9ac07406603466df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b6cd119bbb133c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_timelock.js:23"}, "properties": {"repobilityId": "584e213564477811", "scanner": "scanner-primary", "fingerprint": "3b6cd119bbb133c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-68cc74a99cda4e2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_basic_utxo_ownership.js:36"}, "properties": {"repobilityId": "759bc23802a6eb39", "scanner": "scanner-primary", "fingerprint": "68cc74a99cda4e2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6b102dc158dc06e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_script_constraint.js:42"}, "properties": {"repobilityId": "4cc34cba14af106c", "scanner": "scanner-primary", "fingerprint": "6b102dc158dc06e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2be7fcacc8f62cf2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_vrf_dice_roll.js:40"}, "properties": {"repobilityId": "6e94358cfc76b7d2", "scanner": "scanner-primary", "fingerprint": "2be7fcacc8f62cf2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f4b4db6910c0b462", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/vrf-dice/prove_pot_split_math.js:36"}, "properties": {"repobilityId": "30f1859eccd48b6e", "scanner": "scanner-primary", "fingerprint": "f4b4db6910c0b462", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f0515235ab7628b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_turn_timer.js:39"}, "properties": {"repobilityId": "3080f0fd5bb86651", "scanner": "scanner-primary", "fingerprint": "5f0515235ab7628b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f4a3c7dfb466e5a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_relative_timelock.js:36"}, "properties": {"repobilityId": "f2a94fd5396003ea", "scanner": "scanner-primary", "fingerprint": "5f4a3c7dfb466e5a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d5890dc909129f40", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_hash_preimage.js:25"}, "properties": {"repobilityId": "3083367db2cc8cf0", "scanner": "scanner-primary", "fingerprint": "d5890dc909129f40", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab88231e79845eb2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_nullifier_set.js:36"}, "properties": {"repobilityId": "66f3b850dbe47391", "scanner": "scanner-primary", "fingerprint": "ab88231e79845eb2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04b2ba44bda03e7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_vrf_random.js:37"}, "properties": {"repobilityId": "9cb5a5421a412bb9", "scanner": "scanner-primary", "fingerprint": "04b2ba44bda03e7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-37ff2de803f764be", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_timelock.js:23"}, "properties": {"repobilityId": "e0d37c99e84b80cd", "scanner": "scanner-primary", "fingerprint": "37ff2de803f764be", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1fbed9edb49d3d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_basic_utxo_ownership.js:36"}, "properties": {"repobilityId": "678a72d7e934f091", "scanner": "scanner-primary", "fingerprint": "b1fbed9edb49d3d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-61a73aeebc412f58", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_script_constraint.js:42"}, "properties": {"repobilityId": "8ba32e8e5e9faea1", "scanner": "scanner-primary", "fingerprint": "61a73aeebc412f58", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d08818705d339274", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_vrf_dice_roll.js:40"}, "properties": {"repobilityId": "6b92fefa9e6e3c6d", "scanner": "scanner-primary", "fingerprint": "d08818705d339274", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ddefaac0a7d10f8a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/collateral-defi/prove_pot_split_math.js:36"}, "properties": {"repobilityId": "a6681a314c5462a7", "scanner": "scanner-primary", "fingerprint": "ddefaac0a7d10f8a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2331b46ebb33cf91", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/script-constraint/prove_script_constraint.js:41"}, "properties": {"repobilityId": "5007cf29e3ec6d3f", "scanner": "scanner-primary", "fingerprint": "2331b46ebb33cf91", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5e638c169439d4e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/utxo-ownership/prove_basic_utxo_ownership.js:36"}, "properties": {"repobilityId": "a3493eba10469044", "scanner": "scanner-primary", "fingerprint": "b5e638c169439d4e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-871f1d9ef57909fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_turn_timer.js:39"}, "properties": {"repobilityId": "16915fd0928c8e11", "scanner": "scanner-primary", "fingerprint": "871f1d9ef57909fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0925b5171c5c8f07", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_relative_timelock.js:36"}, "properties": {"repobilityId": "28526f119c74f1a5", "scanner": "scanner-primary", "fingerprint": "0925b5171c5c8f07", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6e7901d7f8904f51", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_hash_preimage.js:25"}, "properties": {"repobilityId": "60b8b76541cca296", "scanner": "scanner-primary", "fingerprint": "6e7901d7f8904f51", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7929283f4bbeffca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_nullifier_set.js:36"}, "properties": {"repobilityId": "f093af0c633f028f", "scanner": "scanner-primary", "fingerprint": "7929283f4bbeffca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f2184a304b14482e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_vrf_random.js:37"}, "properties": {"repobilityId": "33cbf7071cb6b380", "scanner": "scanner-primary", "fingerprint": "f2184a304b14482e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05a3c4b09f0bdea8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_timelock.js:23"}, "properties": {"repobilityId": "42d1a9e753540321", "scanner": "scanner-primary", "fingerprint": "05a3c4b09f0bdea8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f26ed1ab2d555639", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_basic_utxo_ownership.js:36"}, "properties": {"repobilityId": "7534baf5673b3187", "scanner": "scanner-primary", "fingerprint": "f26ed1ab2d555639", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d77644b2bd067d34", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_script_constraint.js:42"}, "properties": {"repobilityId": "1babd75786329184", "scanner": "scanner-primary", "fingerprint": "d77644b2bd067d34", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-693c240658652130", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_vrf_dice_roll.js:40"}, "properties": {"repobilityId": "863bd6086c7dc69d", "scanner": "scanner-primary", "fingerprint": "693c240658652130", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0c11501f87b75af7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/turn-timer/prove_pot_split_math.js:36"}, "properties": {"repobilityId": "fa6d816574e94413", "scanner": "scanner-primary", "fingerprint": "0c11501f87b75af7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f970ab1de0f74a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_turn_timer.js:39"}, "properties": {"repobilityId": "2961f0fcd0b507a4", "scanner": "scanner-primary", "fingerprint": "3f970ab1de0f74a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8aac28154ef43c74", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_relative_timelock.js:36"}, "properties": {"repobilityId": "5a34db081acceabe", "scanner": "scanner-primary", "fingerprint": "8aac28154ef43c74", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2cda19f01ef29024", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_hash_preimage.js:25"}, "properties": {"repobilityId": "7b5edcb0dd91f784", "scanner": "scanner-primary", "fingerprint": "2cda19f01ef29024", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-81978e68adecbf09", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_nullifier_set.js:36"}, "properties": {"repobilityId": "2324d85d962741d2", "scanner": "scanner-primary", "fingerprint": "81978e68adecbf09", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb372f1740febe44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_vrf_random.js:37"}, "properties": {"repobilityId": "d5a6fdebb914970f", "scanner": "scanner-primary", "fingerprint": "cb372f1740febe44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f0141c757a79afe5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_timelock.js:23"}, "properties": {"repobilityId": "399f68b18aa9fa1a", "scanner": "scanner-primary", "fingerprint": "f0141c757a79afe5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af5fa3ab237a2ae7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_basic_utxo_ownership.js:36"}, "properties": {"repobilityId": "9c08a520aa3bcd4d", "scanner": "scanner-primary", "fingerprint": "af5fa3ab237a2ae7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f394f502cc0781af", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_script_constraint.js:42"}, "properties": {"repobilityId": "e5d4bdb49154f96b", "scanner": "scanner-primary", "fingerprint": "f394f502cc0781af", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4dc8f4748cc08546", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_vrf_dice_roll.js:40"}, "properties": {"repobilityId": "48e14c127b7fcfd3", "scanner": "scanner-primary", "fingerprint": "4dc8f4748cc08546", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2fb52e7c7bfcc0c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 examples/pot-split/prove_pot_split_math.js:36"}, "properties": {"repobilityId": "f8c483928d3eb749", "scanner": "scanner-primary", "fingerprint": "2fb52e7c7bfcc0c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb5ed67903733401", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_ml_inference_stub.js:22"}, "properties": {"repobilityId": "63e927db566c4aa6", "scanner": "scanner-primary", "fingerprint": "cb5ed67903733401", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b0c73026c25470d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_age_verification.js:28"}, "properties": {"repobilityId": "db166bb96c2ad9fd", "scanner": "scanner-primary", "fingerprint": "b0c73026c25470d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-92c1e9876a0223aa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_election_feed.js:13"}, "properties": {"repobilityId": "6f17e27a560fcd2b", "scanner": "scanner-primary", "fingerprint": "92c1e9876a0223aa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-19411002c0bd87c4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_range.js:22"}, "properties": {"repobilityId": "187cd56e8534d8f0", "scanner": "scanner-primary", "fingerprint": "19411002c0bd87c4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3643becb2f855c9f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_black_scholes_approx.js:25"}, "properties": {"repobilityId": "9df91d4ee0673a61", "scanner": "scanner-primary", "fingerprint": "3643becb2f855c9f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-821a4e71cc647f27", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_poker_vrf_deal.js:13"}, "properties": {"repobilityId": "cfb6789f314ade00", "scanner": "scanner-primary", "fingerprint": "821a4e71cc647f27", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1fa2a9e0d46b5cc8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_poker_vrf_deal.js:21"}, "properties": {"repobilityId": "9eb4fbe1c70e579c", "scanner": "scanner-primary", "fingerprint": "1fa2a9e0d46b5cc8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3cb2b787df2bb898", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_auction_clearing.js:27"}, "properties": {"repobilityId": "c9fadd4d520b9834", "scanner": "scanner-primary", "fingerprint": "3cb2b787df2bb898", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f1f11cb184c048ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_escrow_2party.js:21"}, "properties": {"repobilityId": "249b24ca29eafada", "scanner": "scanner-primary", "fingerprint": "f1f11cb184c048ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b89019a26245c34f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/covenant-helper.js:16"}, "properties": {"repobilityId": "37870c7b6b7b73d7", "scanner": "scanner-primary", "fingerprint": "b89019a26245c34f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-39c8d9b282682abe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_privacy_mixer.js:14"}, "properties": {"repobilityId": "5b8e227a87038d7a", "scanner": "scanner-primary", "fingerprint": "39c8d9b282682abe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-15ab634e83d7d420", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_relative_timelock.js:18"}, "properties": {"repobilityId": "b129f787d030d01b", "scanner": "scanner-primary", "fingerprint": "15ab634e83d7d420", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c600248dcec102f7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_vrf_random.js:16"}, "properties": {"repobilityId": "e78de35ba7d69b60", "scanner": "scanner-primary", "fingerprint": "c600248dcec102f7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-161c0df26e9a11d4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_collateral_liquidation.js:21"}, "properties": {"repobilityId": "a32f0babd86d9b70", "scanner": "scanner-primary", "fingerprint": "161c0df26e9a11d4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-92367459168814dd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_collateral_liquidation.js:3"}, "properties": {"repobilityId": "c95bac0bf4d8c43a", "scanner": "scanner-primary", "fingerprint": "92367459168814dd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5645acd070cf2961", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_turn_timer.js:27"}, "properties": {"repobilityId": "7ab6fff0ab396c72", "scanner": "scanner-primary", "fingerprint": "5645acd070cf2961", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a923ccee29a897da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_relative_timelock.js:26"}, "properties": {"repobilityId": "5650641a25251fb1", "scanner": "scanner-primary", "fingerprint": "a923ccee29a897da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b13269b12fa3c6d5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/test_range_proof.js:22"}, "properties": {"repobilityId": "a209c6123fa17ea7", "scanner": "scanner-primary", "fingerprint": "b13269b12fa3c6d5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-14cecc23002efe7c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_pot_split_math.js:16"}, "properties": {"repobilityId": "c305077dbd97233b", "scanner": "scanner-primary", "fingerprint": "14cecc23002efe7c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e6048cfab3ecead", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_onchain_sig_verify.js:24"}, "properties": {"repobilityId": "78053fec5ef448ab", "scanner": "scanner-primary", "fingerprint": "1e6048cfab3ecead", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6f97def93547c2f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_auction_clearing.js:21"}, "properties": {"repobilityId": "fe5c45e6d7620320", "scanner": "scanner-primary", "fingerprint": "6f97def93547c2f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-96b9981177c63e93", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_vrf_dice_roll.js:17"}, "properties": {"repobilityId": "9021571241ffd451", "scanner": "scanner-primary", "fingerprint": "96b9981177c63e93", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eaab69499198a01f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_hash_preimage.js:25"}, "properties": {"repobilityId": "05af49d46223f7dc", "scanner": "scanner-primary", "fingerprint": "eaab69499198a01f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0917a8b52a607c4e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_connect4.js:14"}, "properties": {"repobilityId": "d3e507aa4e36d057", "scanner": "scanner-primary", "fingerprint": "0917a8b52a607c4e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2135372897a92dd7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_nullifier_set.js:27"}, "properties": {"repobilityId": "d271cdcccecf2de4", "scanner": "scanner-primary", "fingerprint": "2135372897a92dd7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-feabab90aa797590", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_attested.js:23"}, "properties": {"repobilityId": "b921c5b6d7dd66ac", "scanner": "scanner-primary", "fingerprint": "feabab90aa797590", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-acb3f4b05412ee7a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_vrf_random.js:29"}, "properties": {"repobilityId": "13e790c901165f14", "scanner": "scanner-primary", "fingerprint": "acb3f4b05412ee7a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-067387562e305148", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_tictactoe.js:14"}, "properties": {"repobilityId": "c2a7a439557406d1", "scanner": "scanner-primary", "fingerprint": "067387562e305148", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c48fb885cf3ecca9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/decentralized_liveness_stub.js:11"}, "properties": {"repobilityId": "0be7c781d154a5ca", "scanner": "scanner-primary", "fingerprint": "c48fb885cf3ecca9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8c0b11412acda1ed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_onchain_sig.js:16"}, "properties": {"repobilityId": "4e96ad3511bcd8e7", "scanner": "scanner-primary", "fingerprint": "8c0b11412acda1ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f9fc805ee112ad2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_loan_health.js:21"}, "properties": {"repobilityId": "43968528ea42883a", "scanner": "scanner-primary", "fingerprint": "5f9fc805ee112ad2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-857c0a83405c2f85", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_script_constraint.js:16"}, "properties": {"repobilityId": "0f9ff2c20d04d68a", "scanner": "scanner-primary", "fingerprint": "857c0a83405c2f85", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a231118cf1a23a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_basic_utxo_ownership.js:16"}, "properties": {"repobilityId": "a640566543c87431", "scanner": "scanner-primary", "fingerprint": "7a231118cf1a23a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-87463172e4670294", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_nullifier_v1.js:25"}, "properties": {"repobilityId": "5e02e51f2e110e31", "scanner": "scanner-primary", "fingerprint": "87463172e4670294", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-89f9618439d80b9f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_poker_equity.js:23"}, "properties": {"repobilityId": "842f163d54a54e65", "scanner": "scanner-primary", "fingerprint": "89f9618439d80b9f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fa236b71de00cd17", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_timelock.js:23"}, "properties": {"repobilityId": "5fd7a12e3d1294e4", "scanner": "scanner-primary", "fingerprint": "fa236b71de00cd17", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f4f6d3cc41644916", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_basic_utxo_ownership.js:33"}, "properties": {"repobilityId": "adfa890ca1083106", "scanner": "scanner-primary", "fingerprint": "f4f6d3cc41644916", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-472c86aa16018542", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_script_constraint.js:29"}, "properties": {"repobilityId": "e933d94a58c568ab", "scanner": "scanner-primary", "fingerprint": "472c86aa16018542", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4603668c42402bf2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_timelock.js:12"}, "properties": {"repobilityId": "827c2c2800ed8003", "scanner": "scanner-primary", "fingerprint": "4603668c42402bf2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a20350ef489c4390", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_black_scholes.js:3"}, "properties": {"repobilityId": "ece3cddf1641ef0e", "scanner": "scanner-primary", "fingerprint": "a20350ef489c4390", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1be9388e7a9297c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_vrf_dice_roll.js:32"}, "properties": {"repobilityId": "0a0cb3154e9cc2f4", "scanner": "scanner-primary", "fingerprint": "1be9388e7a9297c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cabddc4ae8b9a59b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify.js:22"}, "properties": {"repobilityId": "8c0829b0da852bc4", "scanner": "scanner-primary", "fingerprint": "cabddc4ae8b9a59b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-08c9e21a580480da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_turn_timer.js:16"}, "properties": {"repobilityId": "0f7fc8b9687d3fd6", "scanner": "scanner-primary", "fingerprint": "08c9e21a580480da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-454b0240b34863a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_nullifier_set.js:16"}, "properties": {"repobilityId": "171971e5c26d90df", "scanner": "scanner-primary", "fingerprint": "454b0240b34863a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05c3750d5e56fc01", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/test_e2e_full_zk.js:62"}, "properties": {"repobilityId": "2a588dd409b2e929", "scanner": "scanner-primary", "fingerprint": "05c3750d5e56fc01", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a8d966550839bd7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_collateral_ltv.js:21"}, "properties": {"repobilityId": "0a47478d67f2a7b5", "scanner": "scanner-primary", "fingerprint": "3a8d966550839bd7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f2522fab5ea3f480", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_financial_formula.js:21"}, "properties": {"repobilityId": "8e312b9f1ca231f1", "scanner": "scanner-primary", "fingerprint": "f2522fab5ea3f480", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fed858c304d238ad", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verify_hash_preimage.js:12"}, "properties": {"repobilityId": "f1740817d7fdda2d", "scanner": "scanner-primary", "fingerprint": "fed858c304d238ad", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9f3c3ec0b59f0a95", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/prove_pot_split_math.js:32"}, "properties": {"repobilityId": "dc300a267e40697b", "scanner": "scanner-primary", "fingerprint": "9f3c3ec0b59f0a95", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7832fdd66dd2d460", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/election_feed_js/generate_witness.js:5"}, "properties": {"repobilityId": "4a16a22e441b6510", "scanner": "scanner-primary", "fingerprint": "7832fdd66dd2d460", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de4aab2b836173d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/election_feed_js/witness_calculator.js:9"}, "properties": {"repobilityId": "e7ab4f9ceba9d178", "scanner": "scanner-primary", "fingerprint": "de4aab2b836173d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-50cde1799514b3d6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/mimc_output/mimc_test_js/generate_witness.js:5"}, "properties": {"repobilityId": "d2c6b742ac7408a5", "scanner": "scanner-primary", "fingerprint": "50cde1799514b3d6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8942430d7517d608", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/mimc_output/mimc_test_js/witness_calculator.js:9"}, "properties": {"repobilityId": "b36426a6572df411", "scanner": "scanner-primary", "fingerprint": "8942430d7517d608", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-568e14cb1d5d4d18", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/nullifier/nullifier_v1_js/generate_witness.js:5"}, "properties": {"repobilityId": "fcbab29ace5be37a", "scanner": "scanner-primary", "fingerprint": "568e14cb1d5d4d18", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a4845b48fcc0b97", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/nullifier/nullifier_v1_js/witness_calculator.js:9"}, "properties": {"repobilityId": "237acd2d64e33081", "scanner": "scanner-primary", "fingerprint": "9a4845b48fcc0b97", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a72cde61ca45f199", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/nullifier_set_js/generate_witness.js:5"}, "properties": {"repobilityId": "883a01e1a611c625", "scanner": "scanner-primary", "fingerprint": "a72cde61ca45f199", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d95cdc841366a8ce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/nullifier_set_js/witness_calculator.js:9"}, "properties": {"repobilityId": "9437aea6a7549959", "scanner": "scanner-primary", "fingerprint": "d95cdc841366a8ce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ce01eae366137caa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/games/connect4/scripts/prove_move.js:61"}, "properties": {"repobilityId": "5ca082ada0a7f85b", "scanner": "scanner-primary", "fingerprint": "ce01eae366137caa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b3bcb0e58d173aa1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/games/tictactoe/scripts/prove_move.js:55"}, "properties": {"repobilityId": "f7a1076f55da356b", "scanner": "scanner-primary", "fingerprint": "b3bcb0e58d173aa1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4de5e399c607c273", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/turn_timer_js/generate_witness.js:5"}, "properties": {"repobilityId": "42a91efda8b9a110", "scanner": "scanner-primary", "fingerprint": "4de5e399c607c273", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fdb66e8f90590105", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/turn_timer_js/witness_calculator.js:9"}, "properties": {"repobilityId": "057dbaf94fdb3271", "scanner": "scanner-primary", "fingerprint": "fdb66e8f90590105", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b748dab579f269f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/black_scholes_approx_js/generate_witness.js:5"}, "properties": {"repobilityId": "7becf82592c4d215", "scanner": "scanner-primary", "fingerprint": "2b748dab579f269f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c6839b87b1c1f116", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/black_scholes_approx_js/witness_calculator.js:9"}, "properties": {"repobilityId": "78a8d4a1d9cc3d7c", "scanner": "scanner-primary", "fingerprint": "c6839b87b1c1f116", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27737dffe25f8356", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/poker_vrf_deal_js/generate_witness.js:5"}, "properties": {"repobilityId": "d14fec59c42aa9a6", "scanner": "scanner-primary", "fingerprint": "27737dffe25f8356", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1de02f4ed6a85ae0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/poker_vrf_deal_js/witness_calculator.js:9"}, "properties": {"repobilityId": "cb4c1cf1f706bcdc", "scanner": "scanner-primary", "fingerprint": "1de02f4ed6a85ae0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2332946cbf5970a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/age_verification_js/generate_witness.js:5"}, "properties": {"repobilityId": "97557cb21a58592a", "scanner": "scanner-primary", "fingerprint": "2332946cbf5970a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5fa6b7a9b2a3399c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/age_verification_js/witness_calculator.js:9"}, "properties": {"repobilityId": "736e7d6a35a0be9a", "scanner": "scanner-primary", "fingerprint": "5fa6b7a9b2a3399c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bad5ff3fc659f178", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/escrow_2party_js/generate_witness.js:5"}, "properties": {"repobilityId": "63cc8c09f610811e", "scanner": "scanner-primary", "fingerprint": "bad5ff3fc659f178", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6d04d2a65986385a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/escrow_2party_js/witness_calculator.js:9"}, "properties": {"repobilityId": "76016dca17330522", "scanner": "scanner-primary", "fingerprint": "6d04d2a65986385a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1926cc0681577714", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/financial_formula_js/generate_witness.js:5"}, "properties": {"repobilityId": "dc82a3230a82f45a", "scanner": "scanner-primary", "fingerprint": "1926cc0681577714", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-51fdf2c58ef50475", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/financial_formula_js/witness_calculator.js:9"}, "properties": {"repobilityId": "670dd82e70347fb7", "scanner": "scanner-primary", "fingerprint": "51fdf2c58ef50475", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-99214f08f8304e45", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/test_js/generate_witness.js:5"}, "properties": {"repobilityId": "3b6c0244e99f1b21", "scanner": "scanner-primary", "fingerprint": "99214f08f8304e45", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f9d71d4bcfc3de3e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/test_js/witness_calculator.js:9"}, "properties": {"repobilityId": "ae13dbbe196d30e5", "scanner": "scanner-primary", "fingerprint": "f9d71d4bcfc3de3e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-39b31ba5847ed484", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/pot_split_math_js/generate_witness.js:5"}, "properties": {"repobilityId": "b113cc89be3d956f", "scanner": "scanner-primary", "fingerprint": "39b31ba5847ed484", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df67affb3b944d84", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/pot_split_math_js/witness_calculator.js:9"}, "properties": {"repobilityId": "e6a27c64364e3c15", "scanner": "scanner-primary", "fingerprint": "df67affb3b944d84", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e4f130d33a89133e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/merkle_membership_js/generate_witness.js:5"}, "properties": {"repobilityId": "c03c5e1c1d7c254d", "scanner": "scanner-primary", "fingerprint": "e4f130d33a89133e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f9e7a6e1e05f66af", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/merkle_membership_js/witness_calculator.js:9"}, "properties": {"repobilityId": "49d2075e7ad7a6b9", "scanner": "scanner-primary", "fingerprint": "f9e7a6e1e05f66af", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea9fc90657bc6a5d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/weather_feed_js/generate_witness.js:5"}, "properties": {"repobilityId": "4c7a672cc547612c", "scanner": "scanner-primary", "fingerprint": "ea9fc90657bc6a5d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b0b60112e101ffeb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/weather_feed_js/witness_calculator.js:9"}, "properties": {"repobilityId": "7680b3ee466e9ae6", "scanner": "scanner-primary", "fingerprint": "b0b60112e101ffeb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c23d24d1bf66ebae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/script_constraint_js/generate_witness.js:5"}, "properties": {"repobilityId": "f92852aa5a19022b", "scanner": "scanner-primary", "fingerprint": "c23d24d1bf66ebae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2d0a9ddbf2ed0366", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/script_constraint_js/witness_calculator.js:9"}, "properties": {"repobilityId": "f29b0a51b64634a3", "scanner": "scanner-primary", "fingerprint": "2d0a9ddbf2ed0366", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-222843bec27268c1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/multi_sig_gating_js/generate_witness.js:5"}, "properties": {"repobilityId": "abbf603d689eb704", "scanner": "scanner-primary", "fingerprint": "222843bec27268c1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a71a4fae254563f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/multi_sig_gating_js/witness_calculator.js:9"}, "properties": {"repobilityId": "64b681eb1fa541c0", "scanner": "scanner-primary", "fingerprint": "7a71a4fae254563f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3314bdba9c647c3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/sorting_proof_js/generate_witness.js:5"}, "properties": {"repobilityId": "c1a6605c65109b54", "scanner": "scanner-primary", "fingerprint": "d3314bdba9c647c3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4e76a496a5fcb165", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/sorting_proof_js/witness_calculator.js:9"}, "properties": {"repobilityId": "af20eb14d59bf1f4", "scanner": "scanner-primary", "fingerprint": "4e76a496a5fcb165", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e455cdcb478f9e79", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/collateral_liquidation_js/generate_witness.js:5"}, "properties": {"repobilityId": "79b10fdca692e9ea", "scanner": "scanner-primary", "fingerprint": "e455cdcb478f9e79", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-017d0ca8a69b75c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/collateral_liquidation_js/witness_calculator.js:9"}, "properties": {"repobilityId": "232944f7c8567cb0", "scanner": "scanner-primary", "fingerprint": "017d0ca8a69b75c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30ce1db712044e5f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/lib/verify_groth16_hybrid.js:8"}, "properties": {"repobilityId": "352dda7e19f93067", "scanner": "scanner-primary", "fingerprint": "30ce1db712044e5f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e39c735a836bda77", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/vrf_dice_roll_js/generate_witness.js:5"}, "properties": {"repobilityId": "dc7971ab18c599ed", "scanner": "scanner-primary", "fingerprint": "e39c735a836bda77", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-710bb2ea72e2aab5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/vrf_dice_roll_js/witness_calculator.js:9"}, "properties": {"repobilityId": "f0e15129cae87008", "scanner": "scanner-primary", "fingerprint": "710bb2ea72e2aab5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a6cec0d8e2bada84", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/hash_helper_js/generate_witness.js:5"}, "properties": {"repobilityId": "1140252d7817b148", "scanner": "scanner-primary", "fingerprint": "a6cec0d8e2bada84", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-289b126439621c73", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/hash_helper_js/witness_calculator.js:9"}, "properties": {"repobilityId": "356ea3ca4d1d2728", "scanner": "scanner-primary", "fingerprint": "289b126439621c73", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1ca5385c61b2f25b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/auction_clearing_js/generate_witness.js:5"}, "properties": {"repobilityId": "2fc4eb7f3ee7bfb7", "scanner": "scanner-primary", "fingerprint": "1ca5385c61b2f25b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4b6bb80fb8ec3e90", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/auction_clearing_js/witness_calculator.js:9"}, "properties": {"repobilityId": "d17994c0200e012b", "scanner": "scanner-primary", "fingerprint": "4b6bb80fb8ec3e90", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2e697a654c7dd3d5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/range_proof/output/range_proof_js/generate_witness.js:5"}, "properties": {"repobilityId": "0df98fede41f2186", "scanner": "scanner-primary", "fingerprint": "2e697a654c7dd3d5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-006a53d936fcf082", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/range_proof/output/range_proof_js/witness_calculator.js:9"}, "properties": {"repobilityId": "7168e5475022b584", "scanner": "scanner-primary", "fingerprint": "006a53d936fcf082", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-06cf1f57d5551127", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/collateral_ltv_js/generate_witness.js:5"}, "properties": {"repobilityId": "5f8be589afd42faa", "scanner": "scanner-primary", "fingerprint": "06cf1f57d5551127", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e2af72706738287", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/collateral_ltv_js/witness_calculator.js:9"}, "properties": {"repobilityId": "58eefc5a35a8b4df", "scanner": "scanner-primary", "fingerprint": "1e2af72706738287", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2eaff62ceb2c006a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verifiable_poker_solver_js/generate_witness.js:5"}, "properties": {"repobilityId": "8f930e03ab663826", "scanner": "scanner-primary", "fingerprint": "2eaff62ceb2c006a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1c29cbf9b1d1f74", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/verifiable_poker_solver_js/witness_calculator.js:9"}, "properties": {"repobilityId": "fe4374ef88b40917", "scanner": "scanner-primary", "fingerprint": "b1c29cbf9b1d1f74", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b4813fd92b6b7c70", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/basic_utxo_ownership_js/generate_witness.js:5"}, "properties": {"repobilityId": "44a2cef157cd5884", "scanner": "scanner-primary", "fingerprint": "b4813fd92b6b7c70", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-754185bcb1bf7464", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/basic_utxo_ownership_js/witness_calculator.js:9"}, "properties": {"repobilityId": "5985981a930baff0", "scanner": "scanner-primary", "fingerprint": "754185bcb1bf7464", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f6a9a946295bd37e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/poker_equity_js/generate_witness.js:5"}, "properties": {"repobilityId": "aafbbdd936db0fc9", "scanner": "scanner-primary", "fingerprint": "f6a9a946295bd37e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09ada65904069627", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/poker_equity_js/witness_calculator.js:9"}, "properties": {"repobilityId": "99871fcc9c00e9a7", "scanner": "scanner-primary", "fingerprint": "09ada65904069627", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c83f9b33d1af0099", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/onchain_sig_verify_js/generate_witness.js:5"}, "properties": {"repobilityId": "3bbc664cb9e46e0c", "scanner": "scanner-primary", "fingerprint": "c83f9b33d1af0099", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef70eba3660cf656", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/onchain_sig_verify_js/witness_calculator.js:9"}, "properties": {"repobilityId": "cff29808ead8d951", "scanner": "scanner-primary", "fingerprint": "ef70eba3660cf656", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2cad21aff553a682", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/privacy_mixer/test_e2e.js:15"}, "properties": {"repobilityId": "5dbe07ffe7ab194c", "scanner": "scanner-primary", "fingerprint": "2cad21aff553a682", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8da90c373bf3b4dd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/privacy_mixer/scripts/prove_deposit.js:13"}, "properties": {"repobilityId": "e4dfd7c98146f812", "scanner": "scanner-primary", "fingerprint": "8da90c373bf3b4dd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6f4a768a40c2bf1e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/privacy_mixer/scripts/prove_withdraw.js:44"}, "properties": {"repobilityId": "b790b97435ad906e", "scanner": "scanner-primary", "fingerprint": "6f4a768a40c2bf1e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fee9f4cb10a1dd5f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/anon_credential_js/generate_witness.js:5"}, "properties": {"repobilityId": "afdc5d45a7b09ba0", "scanner": "scanner-primary", "fingerprint": "fee9f4cb10a1dd5f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d60cce442cbb1db4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/anon_credential_js/witness_calculator.js:9"}, "properties": {"repobilityId": "d6e368f349aadc98", "scanner": "scanner-primary", "fingerprint": "d60cce442cbb1db4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7f072b64a965b51", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/output/merkle_membership_js/generate_witness.js:5"}, "properties": {"repobilityId": "1fa1fc54658c13d3", "scanner": "scanner-primary", "fingerprint": "c7f072b64a965b51", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f892f276c95ac3f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/output/merkle_membership_js/witness_calculator.js:9"}, "properties": {"repobilityId": "0fb8ee3339a4429b", "scanner": "scanner-primary", "fingerprint": "5f892f276c95ac3f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e472089926143697", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/ml_inference_stub_js/generate_witness.js:5"}, "properties": {"repobilityId": "f06bdc6b06ff9b5f", "scanner": "scanner-primary", "fingerprint": "e472089926143697", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-81005fb17b33b9d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/ml_inference_stub_js/witness_calculator.js:9"}, "properties": {"repobilityId": "dc0ed996cd907bc9", "scanner": "scanner-primary", "fingerprint": "81005fb17b33b9d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-41cbcfd7aff5d85e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/loan_health_js/generate_witness.js:5"}, "properties": {"repobilityId": "319c239c8ed5cb2e", "scanner": "scanner-primary", "fingerprint": "41cbcfd7aff5d85e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-060713a415ab2845", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/loan_health_js/witness_calculator.js:9"}, "properties": {"repobilityId": "ba80ec4c697391a4", "scanner": "scanner-primary", "fingerprint": "060713a415ab2845", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-464592b4b921a828", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/vrf_random_js/generate_witness.js:5"}, "properties": {"repobilityId": "af88a0c5676b2e8c", "scanner": "scanner-primary", "fingerprint": "464592b4b921a828", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-75b5715560902a53", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/vrf_random_js/witness_calculator.js:9"}, "properties": {"repobilityId": "30e977b8ce6bcdd6", "scanner": "scanner-primary", "fingerprint": "75b5715560902a53", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b45435fe79ef295", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/mimc_test_js/generate_witness.js:5"}, "properties": {"repobilityId": "714755bf45c4d437", "scanner": "scanner-primary", "fingerprint": "0b45435fe79ef295", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cf319da04fc841f1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/mimc_test_js/witness_calculator.js:9"}, "properties": {"repobilityId": "83ecfc15867fa697", "scanner": "scanner-primary", "fingerprint": "cf319da04fc841f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-82754e6371c48d72", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/relative_timelock_js/generate_witness.js:5"}, "properties": {"repobilityId": "7e75d673f1396674", "scanner": "scanner-primary", "fingerprint": "82754e6371c48d72", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f9036f5c3daf04a7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/relative_timelock_js/witness_calculator.js:9"}, "properties": {"repobilityId": "f36cfc32aebb3d2f", "scanner": "scanner-primary", "fingerprint": "f9036f5c3daf04a7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bedd2eb22c100abc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/hash_output/hash_helper_js/generate_witness.js:5"}, "properties": {"repobilityId": "174b733e2d7ba00b", "scanner": "scanner-primary", "fingerprint": "bedd2eb22c100abc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c02c8818f42524d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 zk/hash_output/hash_helper_js/witness_calculator.js:9"}, "properties": {"repobilityId": "94bdc31b0a7ccc8c", "scanner": "scanner-primary", "fingerprint": "3c02c8818f42524d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8d371ae861881df8", "level": "warning", "message": {"text": "Privileged port 4 in use"}, "properties": {"repobilityId": "1594bfeff919296e", "scanner": "scanner-primary", "fingerprint": "8d371ae861881df8", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "deploy/restore-drill-covex.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d0ef7f833df5dab7", "level": "warning", "message": {"text": "Privileged port 17 in use"}, "properties": {"repobilityId": "0bf38fb8f89ec589", "scanner": "scanner-primary", "fingerprint": "d0ef7f833df5dab7", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "deploy/restore-drill-covex.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ed91a855cd5779fe", "level": "warning", "message": {"text": "Privileged port 3 in use"}, "properties": {"repobilityId": "261b7b1c6a18d412", "scanner": "scanner-primary", "fingerprint": "ed91a855cd5779fe", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "deploy/backup-covex.sh"}, "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-98ac71e9d0d2d991", "level": "error", "message": {"text": "Possible secret in DEPLOY_TO_HIGHTABLE.sh"}, "properties": {"repobilityId": "70d682f1a9d05616", "scanner": "scanner-primary", "fingerprint": "98ac71e9d0d2d991", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "DEPLOY_TO_HIGHTABLE.sh"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-aef55a5280b083e3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/index.html:71"}, "properties": {"repobilityId": "e5e3013c3e1d93a5", "scanner": "scanner-primary", "fingerprint": "aef55a5280b083e3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/index.html"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-b842555511686d0b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/components/CovenantPreview.jsx:51"}, "properties": {"repobilityId": "b599230d54cb3993", "scanner": "scanner-primary", "fingerprint": "b842555511686d0b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/CovenantPreview.jsx"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-f197e6fd124c4832", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in zk/circuit_registry.json:175"}, "properties": {"repobilityId": "c973862f09354b04", "scanner": "scanner-primary", "fingerprint": "f197e6fd124c4832", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "zk/circuit_registry.json"}, "region": {"startLine": 175}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-fdec5a8b0d914081", "level": "note", "message": {"text": "Very large file: frontend/src/components/CovexTerminal.jsx (4238 lines)"}, "properties": {"repobilityId": "2152de4907e5169c", "scanner": "scanner-primary", "fingerprint": "fdec5a8b0d914081", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9ba7e39eb5e47b68", "level": "note", "message": {"text": "Very large file: frontend/src/pages/CovenantInteractive.jsx (1685 lines)"}, "properties": {"repobilityId": "e363fc7f691b9d71", "scanner": "scanner-primary", "fingerprint": "9ba7e39eb5e47b68", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-84a92a12a1f52802", "level": "note", "message": {"text": "Very large file: backend/src/main.rs (2074 lines)"}, "properties": {"repobilityId": "92b68136d4592087", "scanner": "scanner-primary", "fingerprint": "84a92a12a1f52802", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ffaf437a8448d091", "level": "note", "message": {"text": "Very large file: backend/src/covenant_builder.rs (3502 lines)"}, "properties": {"repobilityId": "0f09689c9e2057f2", "scanner": "scanner-primary", "fingerprint": "ffaf437a8448d091", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fb1b4f7e6289d129", "level": "note", "message": {"text": "Very large file: backend/src/db.rs (1747 lines)"}, "properties": {"repobilityId": "e0b6d77b3ac3a6c1", "scanner": "scanner-primary", "fingerprint": "fb1b4f7e6289d129", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "98232a9e3e22da1d", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3c6f2d410af528a3", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: tools/package.json"}, "properties": {"repobilityId": "ae887ca5559e145a", "scanner": "scanner-primary", "fingerprint": "3c6f2d410af528a3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "91dee358298baf01", "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": "74f157f3ed5d5c64", "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": "d3dd96f98ff4998a", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "849d0960fff5e542", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "f4c0ea20ff1b20c9", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "5fafc3a3d959fb72", "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": "237a5de98d95c813", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-2c5f98b152cddb6d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "properties": {"repobilityId": "0de48c0f4ab303d8", "scanner": "scanner-primary", "fingerprint": "2c5f98b152cddb6d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/launch.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8750ba28fbb0d3a6", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/scripts/poker-e2e.mjs:1"}, "properties": {"repobilityId": "20bbea1371632f7f", "scanner": "scanner-primary", "fingerprint": "8750ba28fbb0d3a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2fb9496b61f7b334", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/scripts/poker-e2e.mjs:26"}, "properties": {"repobilityId": "2eb68050c431cb3a", "scanner": "scanner-primary", "fingerprint": "2fb9496b61f7b334", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-21e84ae0343c5e3d", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/scripts/check-sandbox.mjs:2"}, "properties": {"repobilityId": "c0480aac6f5b0c1b", "scanner": "scanner-primary", "fingerprint": "21e84ae0343c5e3d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a90f59373c1792b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/public/sw.js:3"}, "properties": {"repobilityId": "dc885d2af34172b4", "scanner": "scanner-primary", "fingerprint": "1a90f59373c1792b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd841e06c52dc19a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/public/sw.js:40"}, "properties": {"repobilityId": "391bef9bc57edc3e", "scanner": "scanner-primary", "fingerprint": "bd841e06c52dc19a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-47da46f0efd8b08b", "level": "note", "message": {"text": "Legacy-named symbol `chess_v1` in frontend/src/components/GamePreview.jsx:29"}, "properties": {"repobilityId": "798fc33778a282ac", "scanner": "scanner-primary", "fingerprint": "47da46f0efd8b08b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-045c7d9514899ee9", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/ToastContext.jsx:3"}, "properties": {"repobilityId": "89c5ca6771fbd992", "scanner": "scanner-primary", "fingerprint": "045c7d9514899ee9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-226e2eae4625b0e0", "level": "note", "message": {"text": "Legacy-named symbol `privacy_mixer_v1` in frontend/src/components/PrivacyMixerPanel.jsx:86"}, "properties": {"repobilityId": "703c2a0c06e06cfd", "scanner": "scanner-primary", "fingerprint": "226e2eae4625b0e0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-babc10a261b31523", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/WalletContext.jsx:702"}, "properties": {"repobilityId": "397401eeda09bb0c", "scanner": "scanner-primary", "fingerprint": "babc10a261b31523", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36c347ef5be0e6cf", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/SandboxCircuitPreview.jsx:6"}, "properties": {"repobilityId": "31e4a288071c675f", "scanner": "scanner-primary", "fingerprint": "36c347ef5be0e6cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a08e5db8908cb7c", "level": "note", "message": {"text": "Legacy-named symbol `reversi_v1` in frontend/src/components/FullScreenReversi.jsx:254"}, "properties": {"repobilityId": "5ca570528af1ae75", "scanner": "scanner-primary", "fingerprint": "6a08e5db8908cb7c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8fabdd467c4764e4", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/FullScreenReversi.jsx:5"}, "properties": {"repobilityId": "ce9e86677988b42a", "scanner": "scanner-primary", "fingerprint": "8fabdd467c4764e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23398554d9ea167b", "level": "note", "message": {"text": "Legacy-named symbol `chess_v1` in frontend/src/components/CovexTerminal.jsx:66"}, "properties": {"repobilityId": "28988b2b7ff50d64", "scanner": "scanner-primary", "fingerprint": "23398554d9ea167b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f420a0b5e2d85d23", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/src/components/CovexTerminal.jsx:48"}, "properties": {"repobilityId": "d4e73287762cbe0c", "scanner": "scanner-primary", "fingerprint": "f420a0b5e2d85d23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3aca71f2dbbfe937", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/CovexTerminal.jsx:1726"}, "properties": {"repobilityId": "b201f3a6975c7e7e", "scanner": "scanner-primary", "fingerprint": "3aca71f2dbbfe937", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d046a428a40720b9", "level": "note", "message": {"text": "Legacy-named symbol `connect4_v1` in frontend/src/components/FullScreenConnect4.jsx:175"}, "properties": {"repobilityId": "720e005c3668b9b7", "scanner": "scanner-primary", "fingerprint": "d046a428a40720b9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9a0b505c29732c50", "level": "note", "message": {"text": "Legacy-named symbol `poker_v1` in frontend/src/components/FullScreenPoker.jsx:416"}, "properties": {"repobilityId": "24a0ccf29c57fd48", "scanner": "scanner-primary", "fingerprint": "9a0b505c29732c50", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-157ff70dbd63428a", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/FullScreenPoker.jsx:10"}, "properties": {"repobilityId": "2b70af0816bb4b72", "scanner": "scanner-primary", "fingerprint": "157ff70dbd63428a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a01416b1e6305564", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/components/FullScreenPoker.jsx:320"}, "properties": {"repobilityId": "e6a8db9253f2d37b", "scanner": "scanner-primary", "fingerprint": "a01416b1e6305564", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-14cd9acee51f53fe", "level": "note", "message": {"text": "Legacy-named symbol `blackjack_v1` in frontend/src/components/FullScreenBlackjack.jsx:276"}, "properties": {"repobilityId": "a5e9a58bc8b01421", "scanner": "scanner-primary", "fingerprint": "14cd9acee51f53fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ed9d1ac2b153ce72", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/FullScreenBlackjack.jsx:10"}, "properties": {"repobilityId": "1f85a56603e216d3", "scanner": "scanner-primary", "fingerprint": "ed9d1ac2b153ce72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4905296b85dc47a8", "level": "note", "message": {"text": "Legacy-named symbol `tictactoe_v1` in frontend/src/components/FullScreenTicTacToe.jsx:140"}, "properties": {"repobilityId": "46598f48219e8ccb", "scanner": "scanner-primary", "fingerprint": "4905296b85dc47a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bf68127588c9cbab", "level": "note", "message": {"text": "Legacy-named symbol `rps_v1` in frontend/src/components/FullScreenRPS.jsx:249"}, "properties": {"repobilityId": "68a5de1f8bf6789a", "scanner": "scanner-primary", "fingerprint": "bf68127588c9cbab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-29a64fed52ba105e", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/FullScreenRPS.jsx:8"}, "properties": {"repobilityId": "9364c26d58649904", "scanner": "scanner-primary", "fingerprint": "29a64fed52ba105e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9159394b0777166", "level": "note", "message": {"text": "Legacy-named symbol `checkers_v1` in frontend/src/components/FullScreenCheckers.jsx:341"}, "properties": {"repobilityId": "77892c055992f699", "scanner": "scanner-primary", "fingerprint": "e9159394b0777166", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b23d93a165195dae", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/FullScreenCheckers.jsx:5"}, "properties": {"repobilityId": "340013399e4177a4", "scanner": "scanner-primary", "fingerprint": "b23d93a165195dae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a72bc536b0f1bdd", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/lib/ownership.js:3"}, "properties": {"repobilityId": "1447a26045637fc8", "scanner": "scanner-primary", "fingerprint": "0a72bc536b0f1bdd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d72e708f9addd3c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/ownership.js:17"}, "properties": {"repobilityId": "444633c13e43de38", "scanner": "scanner-primary", "fingerprint": "6d72e708f9addd3c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a931a2788284304a", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/lib/circuitIcon.jsx:3"}, "properties": {"repobilityId": "f2a4a92e8f363178", "scanner": "scanner-primary", "fingerprint": "a931a2788284304a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ccb2f95657678c39", "level": "note", "message": {"text": "Legacy-named symbol `chess_v1` in frontend/src/lib/covenant-config/covenant-config.ts:16"}, "properties": {"repobilityId": "0f8d8e57cdeae7a4", "scanner": "scanner-primary", "fingerprint": "ccb2f95657678c39", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9fb8bbcfdf9d207c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/sdk/CovexClient.ts:60"}, "properties": {"repobilityId": "2e8a34cbdb6c10e5", "scanner": "scanner-primary", "fingerprint": "9fb8bbcfdf9d207c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-63ecbb04431c2ce9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/Explorer.jsx:196"}, "properties": {"repobilityId": "c235c46cf9b7849f", "scanner": "scanner-primary", "fingerprint": "63ecbb04431c2ce9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f173b6bf73ba25c6", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/pages/EnforcedDeploy.jsx:177"}, "properties": {"repobilityId": "66994c45f4585a18", "scanner": "scanner-primary", "fingerprint": "f173b6bf73ba25c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-65027cef2a454d32", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/EnforcedDeploy.jsx:116"}, "properties": {"repobilityId": "86e6406fb02fb2e6", "scanner": "scanner-primary", "fingerprint": "65027cef2a454d32", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b0481ce043267c01", "level": "note", "message": {"text": "Legacy-named symbol `chess_v1` in frontend/src/pages/CovenantFix.jsx:117"}, "properties": {"repobilityId": "8680969cd8858275", "scanner": "scanner-primary", "fingerprint": "b0481ce043267c01", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-58237a5055494ace", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/CovenantFix.jsx:267"}, "properties": {"repobilityId": "280743a056c222b2", "scanner": "scanner-primary", "fingerprint": "58237a5055494ace", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f83d4d415afab054", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/CovenantFix.jsx:217"}, "properties": {"repobilityId": "6a6f90457e279791", "scanner": "scanner-primary", "fingerprint": "f83d4d415afab054", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-653fb6281b3bd38f", "level": "note", "message": {"text": "Legacy-named symbol `chess_v1` in frontend/src/pages/PremiumBuilder.jsx:116"}, "properties": {"repobilityId": "debefda95ecacef6", "scanner": "scanner-primary", "fingerprint": "653fb6281b3bd38f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f910db0212bb72b3", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/PremiumBuilder.jsx:181"}, "properties": {"repobilityId": "f954678e314ea468", "scanner": "scanner-primary", "fingerprint": "f910db0212bb72b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad7449474e4253c2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/PremiumBuilder.jsx:70"}, "properties": {"repobilityId": "0c64b08e83d26169", "scanner": "scanner-primary", "fingerprint": "ad7449474e4253c2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-43fb2916c30d0b89", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/pages/Pricing.jsx:162"}, "properties": {"repobilityId": "9568f6ca004afebe", "scanner": "scanner-primary", "fingerprint": "43fb2916c30d0b89", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0392302e1332c4df", "level": "note", "message": {"text": "Legacy-named symbol `chess_v1` in frontend/src/pages/CovenantInteractive.jsx:904"}, "properties": {"repobilityId": "1d8fbfe1acb3b323", "scanner": "scanner-primary", "fingerprint": "0392302e1332c4df", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4018d003e07637f0", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/pages/CovenantInteractive.jsx:394"}, "properties": {"repobilityId": "ead2cbfcceadf991", "scanner": "scanner-primary", "fingerprint": "4018d003e07637f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e79c34e6971c19f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/AdvancedComposer.jsx:28"}, "properties": {"repobilityId": "e38d8ad1c3760cd6", "scanner": "scanner-primary", "fingerprint": "0e79c34e6971c19f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ddb08a969143457d", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/pages/PaidBuilder.jsx:59"}, "properties": {"repobilityId": "22f2340c04c43459", "scanner": "scanner-primary", "fingerprint": "ddb08a969143457d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-54791a5e87b46d21", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/pages/PaidBuilder.jsx:95"}, "properties": {"repobilityId": "13b87390dba0984f", "scanner": "scanner-primary", "fingerprint": "54791a5e87b46d21", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b8894ca0cd5c32d4", "level": "note", "message": {"text": "Legacy-named symbol `chess_v1` in shared/covenant-config/covenant-config.ts:22"}, "properties": {"repobilityId": "7b7da576d8563dd8", "scanner": "scanner-primary", "fingerprint": "b8894ca0cd5c32d4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f6f3b615be5335cb", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/deploy-covenant.js:28"}, "properties": {"repobilityId": "683149f1322c652c", "scanner": "scanner-primary", "fingerprint": "f6f3b615be5335cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d73173a94b389232", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 deploy/apply_csp.py:33"}, "properties": {"repobilityId": "b21d94616f77af6e", "scanner": "scanner-primary", "fingerprint": "d73173a94b389232", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-271a797bd532b4f8", "level": "note", "message": {"text": "Legacy-named symbol `nullifier_v1` in examples/nullifier/prove_nullifier_set.js:6"}, "properties": {"repobilityId": "69e804e96dbcc09d", "scanner": "scanner-primary", "fingerprint": "271a797bd532b4f8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-78abeebe12197b69", "level": "note", "message": {"text": "Legacy-named symbol `nullifier_v1` in examples/onchain-sig/prove_nullifier_set.js:6"}, "properties": {"repobilityId": "78a73c49ab0cbd6d", "scanner": "scanner-primary", "fingerprint": "78abeebe12197b69", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3dc278b8209ea91e", "level": "note", "message": {"text": "Legacy-named symbol `nullifier_v1` in examples/vrf-dice/prove_nullifier_set.js:6"}, "properties": {"repobilityId": "547e591dbfdc71c9", "scanner": "scanner-primary", "fingerprint": "3dc278b8209ea91e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9230261b8fef14d2", "level": "note", "message": {"text": "Legacy-named symbol `nullifier_v1` in examples/collateral-defi/prove_nullifier_set.js:6"}, "properties": {"repobilityId": "4c107aa2f85f3e29", "scanner": "scanner-primary", "fingerprint": "9230261b8fef14d2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-13b4419961811c34", "level": "note", "message": {"text": "Legacy-named symbol `nullifier_v1` in examples/turn-timer/prove_nullifier_set.js:6"}, "properties": {"repobilityId": "00ccea799c1e776d", "scanner": "scanner-primary", "fingerprint": "13b4419961811c34", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5c91b9d94dc9cbb2", "level": "note", "message": {"text": "Legacy-named symbol `nullifier_v1` in examples/pot-split/prove_nullifier_set.js:6"}, "properties": {"repobilityId": "013c886859d632a8", "scanner": "scanner-primary", "fingerprint": "5c91b9d94dc9cbb2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f26f9076e5f6d511", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tools/recover-covenant.mjs:83"}, "properties": {"repobilityId": "45d5130d3542e277", "scanner": "scanner-primary", "fingerprint": "f26f9076e5f6d511", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5ea17513c8ad0b3a", "level": "none", "message": {"text": "Commented-code block (5 lines) in zk/oracle_liveness_stub.js:1"}, "properties": {"repobilityId": "8072bdbdebb16cf2", "scanner": "scanner-primary", "fingerprint": "5ea17513c8ad0b3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d256b8a8c16b50f8", "level": "note", "message": {"text": "Legacy-named symbol `privacy_mixer_v1` in zk/verify_privacy_mixer.js:27"}, "properties": {"repobilityId": "b4f4abdad4222626", "scanner": "scanner-primary", "fingerprint": "d256b8a8c16b50f8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bab9e3fda93ab0c2", "level": "note", "message": {"text": "Legacy-named symbol `connect4_v1` in zk/verify_connect4.js:25"}, "properties": {"repobilityId": "be595b2bf2a2eef9", "scanner": "scanner-primary", "fingerprint": "bab9e3fda93ab0c2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e900252cacf867f4", "level": "note", "message": {"text": "Legacy-named symbol `tictactoe_v1` in zk/verify_tictactoe.js:25"}, "properties": {"repobilityId": "68058d908bb83b1a", "scanner": "scanner-primary", "fingerprint": "e900252cacf867f4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fd443b5b64dfd166", "level": "note", "message": {"text": "Legacy-named symbol `nullifier_v1` in zk/prove_nullifier_v1.js:8"}, "properties": {"repobilityId": "f603541601de275a", "scanner": "scanner-primary", "fingerprint": "fd443b5b64dfd166", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6dad1ad44117d8d1", "level": "note", "message": {"text": "Legacy-named symbol `tictactoe_v1` in zk/test_e2e_full_zk.js:20"}, "properties": {"repobilityId": "225214903da90d06", "scanner": "scanner-primary", "fingerprint": "6dad1ad44117d8d1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ca4ac3e86a6e4538", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/election_feed_js/witness_calculator.js:70"}, "properties": {"repobilityId": "2f4a533c403740f1", "scanner": "scanner-primary", "fingerprint": "ca4ac3e86a6e4538", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c46363d3170da0fb", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/mimc_output/mimc_test_js/witness_calculator.js:70"}, "properties": {"repobilityId": "13077f3f0f6fc1b4", "scanner": "scanner-primary", "fingerprint": "c46363d3170da0fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-681ce169763a10f2", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/nullifier/nullifier_v1_js/witness_calculator.js:70"}, "properties": {"repobilityId": "3dfd3ebb209a8454", "scanner": "scanner-primary", "fingerprint": "681ce169763a10f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f8bea8aebc7f7975", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/nullifier_set_js/witness_calculator.js:70"}, "properties": {"repobilityId": "316c5d6ae076b5dc", "scanner": "scanner-primary", "fingerprint": "f8bea8aebc7f7975", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-615294046e899ed5", "level": "note", "message": {"text": "Legacy-named symbol `connect4_v1` in zk/games/connect4/scripts/prove_move.js:9"}, "properties": {"repobilityId": "6efe2b571c6b732c", "scanner": "scanner-primary", "fingerprint": "615294046e899ed5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a9c42b8266f28d7b", "level": "note", "message": {"text": "Legacy-named symbol `tictactoe_v1` in zk/games/tictactoe/scripts/prove_move.js:9"}, "properties": {"repobilityId": "86040b78eb7559e4", "scanner": "scanner-primary", "fingerprint": "a9c42b8266f28d7b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-06665e54373e0060", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/turn_timer_js/witness_calculator.js:70"}, "properties": {"repobilityId": "3983ab039307d67e", "scanner": "scanner-primary", "fingerprint": "06665e54373e0060", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-deedfb0ec0491bf3", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/black_scholes_approx_js/witness_calculator.js:70"}, "properties": {"repobilityId": "53751e7970d3716f", "scanner": "scanner-primary", "fingerprint": "deedfb0ec0491bf3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-119a8a03a5acaf11", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/poker_vrf_deal_js/witness_calculator.js:70"}, "properties": {"repobilityId": "318859cb4d0dbd87", "scanner": "scanner-primary", "fingerprint": "119a8a03a5acaf11", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f1c0fe7a3524165", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/age_verification_js/witness_calculator.js:70"}, "properties": {"repobilityId": "b8e7a1b49a8dff7f", "scanner": "scanner-primary", "fingerprint": "3f1c0fe7a3524165", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4863ed0bd406a94", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/escrow_2party_js/witness_calculator.js:70"}, "properties": {"repobilityId": "1019cbcf8d716e42", "scanner": "scanner-primary", "fingerprint": "b4863ed0bd406a94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b36f8d11b3b55452", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/financial_formula_js/witness_calculator.js:70"}, "properties": {"repobilityId": "44af5148ad1160a4", "scanner": "scanner-primary", "fingerprint": "b36f8d11b3b55452", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c4eb8cf9aca43c9", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/test_js/witness_calculator.js:70"}, "properties": {"repobilityId": "c3b0a5c16fb01cc5", "scanner": "scanner-primary", "fingerprint": "2c4eb8cf9aca43c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc4f3a5c6bc89190", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/pot_split_math_js/witness_calculator.js:70"}, "properties": {"repobilityId": "63a63ea6fc4a7eed", "scanner": "scanner-primary", "fingerprint": "cc4f3a5c6bc89190", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64dfa946872c5f31", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/merkle_membership_js/witness_calculator.js:70"}, "properties": {"repobilityId": "ed7c2276166f95aa", "scanner": "scanner-primary", "fingerprint": "64dfa946872c5f31", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0966bb64cc8a0d43", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/weather_feed_js/witness_calculator.js:70"}, "properties": {"repobilityId": "c70a445489bcf2b3", "scanner": "scanner-primary", "fingerprint": "0966bb64cc8a0d43", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5fa2a477e5eed091", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/script_constraint_js/witness_calculator.js:70"}, "properties": {"repobilityId": "8d9b9b9a137d6701", "scanner": "scanner-primary", "fingerprint": "5fa2a477e5eed091", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-593f6338d5726b82", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/multi_sig_gating_js/witness_calculator.js:70"}, "properties": {"repobilityId": "6a5344d015614394", "scanner": "scanner-primary", "fingerprint": "593f6338d5726b82", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8ae55764d22029d", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/sorting_proof_js/witness_calculator.js:70"}, "properties": {"repobilityId": "fa976a23b7a7086f", "scanner": "scanner-primary", "fingerprint": "b8ae55764d22029d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38e45fc74d236292", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/collateral_liquidation_js/witness_calculator.js:70"}, "properties": {"repobilityId": "3ca4e62ae21f4fc2", "scanner": "scanner-primary", "fingerprint": "38e45fc74d236292", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cbc2efb492962bf2", "level": "none", "message": {"text": "Commented-code block (5 lines) in zk/lib/verify_groth16_hybrid.js:43"}, "properties": {"repobilityId": "673a52189f9847e1", "scanner": "scanner-primary", "fingerprint": "cbc2efb492962bf2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33f0a111de6af9b7", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/vrf_dice_roll_js/witness_calculator.js:70"}, "properties": {"repobilityId": "780e81b84fdfd054", "scanner": "scanner-primary", "fingerprint": "33f0a111de6af9b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea9a1bd3f97121db", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/hash_helper_js/witness_calculator.js:70"}, "properties": {"repobilityId": "45ae08da94a55819", "scanner": "scanner-primary", "fingerprint": "ea9a1bd3f97121db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6446394be9acfe49", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/auction_clearing_js/witness_calculator.js:70"}, "properties": {"repobilityId": "34101a414a4d927a", "scanner": "scanner-primary", "fingerprint": "6446394be9acfe49", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-780782171f2e173c", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/range_proof/output/range_proof_js/witness_calculator.js:70"}, "properties": {"repobilityId": "8a1c77da98f78312", "scanner": "scanner-primary", "fingerprint": "780782171f2e173c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8b9f6f66ada1186", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/collateral_ltv_js/witness_calculator.js:70"}, "properties": {"repobilityId": "76a275e05806e342", "scanner": "scanner-primary", "fingerprint": "c8b9f6f66ada1186", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3ca528517f25164", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/verifiable_poker_solver_js/witness_calculator.js:70"}, "properties": {"repobilityId": "f6572a72bea77e1a", "scanner": "scanner-primary", "fingerprint": "b3ca528517f25164", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-557094643b810210", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/basic_utxo_ownership_js/witness_calculator.js:70"}, "properties": {"repobilityId": "0bc3e8aebf5fe95d", "scanner": "scanner-primary", "fingerprint": "557094643b810210", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6032c2655dfdb946", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/poker_equity_js/witness_calculator.js:70"}, "properties": {"repobilityId": "c28a80b41d2dd0da", "scanner": "scanner-primary", "fingerprint": "6032c2655dfdb946", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b6a31508450e9af7", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/onchain_sig_verify_js/witness_calculator.js:70"}, "properties": {"repobilityId": "704118972e00695f", "scanner": "scanner-primary", "fingerprint": "b6a31508450e9af7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4eb749c49c5b7dfc", "level": "note", "message": {"text": "Legacy-named symbol `privacy_mixer_v1` in zk/privacy_mixer/scripts/prove_withdraw.js:9"}, "properties": {"repobilityId": "d6020dd381eb5e2f", "scanner": "scanner-primary", "fingerprint": "4eb749c49c5b7dfc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-59115ebabf16346b", "level": "note", "message": {"text": "Legacy-named symbol `privacy_mixer_v1` in zk/privacy_mixer/lib/tree.js:3"}, "properties": {"repobilityId": "836b4be9e47a9777", "scanner": "scanner-primary", "fingerprint": "59115ebabf16346b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3932fee581502e48", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/anon_credential_js/witness_calculator.js:70"}, "properties": {"repobilityId": "7e520ceb27d8c41b", "scanner": "scanner-primary", "fingerprint": "3932fee581502e48", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7fa9e5d6d50b7024", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/output/merkle_membership_js/witness_calculator.js:70"}, "properties": {"repobilityId": "9ac43c4caeb6ddd6", "scanner": "scanner-primary", "fingerprint": "7fa9e5d6d50b7024", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-afcca27cf44cd647", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/ml_inference_stub_js/witness_calculator.js:70"}, "properties": {"repobilityId": "73ba5bbeab0eaf68", "scanner": "scanner-primary", "fingerprint": "afcca27cf44cd647", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1045353c0d70b1bf", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/loan_health_js/witness_calculator.js:70"}, "properties": {"repobilityId": "0a7fb58048982c95", "scanner": "scanner-primary", "fingerprint": "1045353c0d70b1bf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2acbc26b925622b", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/vrf_random_js/witness_calculator.js:70"}, "properties": {"repobilityId": "97cccf8c274cfa71", "scanner": "scanner-primary", "fingerprint": "f2acbc26b925622b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c6388bd3ec13e93", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/mimc_test_js/witness_calculator.js:70"}, "properties": {"repobilityId": "8a3d6bd3956b7f1a", "scanner": "scanner-primary", "fingerprint": "1c6388bd3ec13e93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ccbdfa3b26939f06", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/relative_timelock_js/witness_calculator.js:70"}, "properties": {"repobilityId": "dedb81a9dab5d600", "scanner": "scanner-primary", "fingerprint": "ccbdfa3b26939f06", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96b0c8e9127f8489", "level": "none", "message": {"text": "Commented-code block (6 lines) in zk/hash_output/hash_helper_js/witness_calculator.js:70"}, "properties": {"repobilityId": "c935bbf2fee09867", "scanner": "scanner-primary", "fingerprint": "96b0c8e9127f8489", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-319e66a630e14977", "level": "none", "message": {"text": "2 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "d838d1fc5d8231c9", "scanner": "scanner-primary", "fingerprint": "319e66a630e14977", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-abbdfbd3ba096b0b", "level": "warning", "message": {"text": "Frontend route `/covenant` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "6bd5d0d823a7a91f", "scanner": "scanner-primary", "fingerprint": "abbdfbd3ba096b0b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-a9b7f008e4d35977", "level": "warning", "message": {"text": "Frontend route `/covenant/:id` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "5baf05512dd25f79", "scanner": "scanner-primary", "fingerprint": "a9b7f008e4d35977", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-905de61dc431f682", "level": "warning", "message": {"text": "Frontend route `/covenant/:id/fix` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "a4cbeb1b8362ad7a", "scanner": "scanner-primary", "fingerprint": "905de61dc431f682", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-03167c5906fe0d81", "level": "warning", "message": {"text": "Frontend route `/deploy` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "8037d86c7994f3fa", "scanner": "scanner-primary", "fingerprint": "03167c5906fe0d81", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-b4f565f7d8901682", "level": "warning", "message": {"text": "Frontend route `/deploy/paid` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "47ecdc4e6c7c6f20", "scanner": "scanner-primary", "fingerprint": "b4f565f7d8901682", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-08aa377f240e4f72", "level": "warning", "message": {"text": "Frontend route `/address/:addr` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "119a77964cd98d30", "scanner": "scanner-primary", "fingerprint": "08aa377f240e4f72", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-77dc70d5445bbc6a", "level": "warning", "message": {"text": "Frontend route `/covenant/:id/studio` has no Link/navigate to it \u2014 frontend/src/App.jsx"}, "properties": {"repobilityId": "64b56f046d610988", "scanner": "scanner-primary", "fingerprint": "77dc70d5445bbc6a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-4eb7de56e70e652f", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth-session (frontend/src/App.jsx:91)"}, "properties": {"repobilityId": "d5ef5f450f71f115", "scanner": "scanner-primary", "fingerprint": "4eb7de56e70e652f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f0106f7465e5f9e9", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth-session (frontend/src/App.jsx:115)"}, "properties": {"repobilityId": "1ad983b8bc93568b", "scanner": "scanner-primary", "fingerprint": "f0106f7465e5f9e9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2ecb893e9bb24bc5", "level": "error", "message": {"text": "Dangling fetch: GET /api/balance/${encodeURIComponent(addr)}?network=${encodeURIComponent(net)} (frontend/src/components/WalletContext.jsx:541)"}, "properties": {"repobilityId": "4f28a5085263bf57", "scanner": "scanner-primary", "fingerprint": "2ecb893e9bb24bc5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-313360e5d405fa98", "level": "error", "message": {"text": "Dangling fetch: POST /api/sign-and-broadcast (frontend/src/components/WalletContext.jsx:723)"}, "properties": {"repobilityId": "bba1e05f8da83604", "scanner": "scanner-primary", "fingerprint": "313360e5d405fa98", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f303c63e79b6abce", "level": "error", "message": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenReversi.jsx:254)"}, "properties": {"repobilityId": "395dcb3b4902456d", "scanner": "scanner-primary", "fingerprint": "f303c63e79b6abce", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ea66e995a6a242db", "level": "error", "message": {"text": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenReversi.jsx:267)"}, "properties": {"repobilityId": "4a510c1e472b2c78", "scanner": "scanner-primary", "fingerprint": "ea66e995a6a242db", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5ec5409efd240b18", "level": "error", "message": {"text": "Dangling fetch: GET /api/paid-status?address=${encodeURIComponent(connectedAddress)}&network=${net} (frontend/src/components/CovexTerminal.jsx:851)"}, "properties": {"repobilityId": "3e5c9faa08d97939", "scanner": "scanner-primary", "fingerprint": "5ec5409efd240b18", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-864ba3c22292f244", "level": "error", "message": {"text": "Dangling fetch: GET /api/paid-status?address=${encodeURIComponent(connectedAddress)}&network=${net} (frontend/src/components/CovexTerminal.jsx:958)"}, "properties": {"repobilityId": "840d0b125c5ba4b5", "scanner": "scanner-primary", "fingerprint": "864ba3c22292f244", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d181d0eaa3bc1696", "level": "error", "message": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/CovexTerminal.jsx:1675)"}, "properties": {"repobilityId": "6e78d63a3b6fdcba", "scanner": "scanner-primary", "fingerprint": "d181d0eaa3bc1696", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-faf63d7ac0faf57b", "level": "error", "message": {"text": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/CovexTerminal.jsx:1726)"}, "properties": {"repobilityId": "7a9aad619cbf314a", "scanner": "scanner-primary", "fingerprint": "faf63d7ac0faf57b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-203a16d0fcc0e334", "level": "error", "message": {"text": "Dangling fetch: GET /api/terminal-config/${covenantId} (frontend/src/components/CovexTerminal.jsx:1785)"}, "properties": {"repobilityId": "cb3bda90d35eae4e", "scanner": "scanner-primary", "fingerprint": "203a16d0fcc0e334", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b76ab19a7e92a14e", "level": "error", "message": {"text": "Dangling fetch: POST /api/terminal-config/${covenantId} (frontend/src/components/CovexTerminal.jsx:1922)"}, "properties": {"repobilityId": "7e909768c56a3b86", "scanner": "scanner-primary", "fingerprint": "b76ab19a7e92a14e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b394ffcf8125d1c3", "level": "error", "message": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/CovexTerminal.jsx:1929)"}, "properties": {"repobilityId": "ce8055692c0d3dc8", "scanner": "scanner-primary", "fingerprint": "b394ffcf8125d1c3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-be18849467ca1b57", "level": "error", "message": {"text": "Dangling fetch: GET /api/terminal-config-challenge/${covenantId} (frontend/src/components/CovexTerminal.jsx:1962)"}, "properties": {"repobilityId": "52f61efc8d308de9", "scanner": "scanner-primary", "fingerprint": "be18849467ca1b57", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-95a47ab0bd055ea5", "level": "error", "message": {"text": "Dangling fetch: POST /api/terminal-config/${covenantId} (frontend/src/components/CovexTerminal.jsx:2014)"}, "properties": {"repobilityId": "5915a32900e578a6", "scanner": "scanner-primary", "fingerprint": "95a47ab0bd055ea5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-85edc86b71e9aeaa", "level": "error", "message": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenConnect4.jsx:170)"}, "properties": {"repobilityId": "94cb1e88fb391f30", "scanner": "scanner-primary", "fingerprint": "85edc86b71e9aeaa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d7e93bd1e671dfde", "level": "error", "message": {"text": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenConnect4.jsx:197)"}, "properties": {"repobilityId": "0134e301d6543562", "scanner": "scanner-primary", "fingerprint": "d7e93bd1e671dfde", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3c089ffc9e440812", "level": "error", "message": {"text": "Dangling fetch: GET /api/poker/${encodeURIComponent(covenantId)}/state (frontend/src/components/FullScreenPoker.jsx:284)"}, "properties": {"repobilityId": "d3ba4bdb23dbe3dd", "scanner": "scanner-primary", "fingerprint": "3c089ffc9e440812", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f60ef8cfec145114", "level": "error", "message": {"text": "Dangling fetch: GET /api/poker/${encodeURIComponent(covenantId)}/challenge?address=${encodeURIComponent(address)} (frontend/src/components/FullScreenPoker.jsx:317)"}, "properties": {"repobilityId": "6ed7b72c3f10f2be", "scanner": "scanner-primary", "fingerprint": "f60ef8cfec145114", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d3f6c11967adc623", "level": "error", "message": {"text": "Dangling fetch: POST /api/poker/${encodeURIComponent(covenantId)}/session (frontend/src/components/FullScreenPoker.jsx:320)"}, "properties": {"repobilityId": "280336b9bda85c79", "scanner": "scanner-primary", "fingerprint": "d3f6c11967adc623", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8e6c4d6b8bbc67fb", "level": "error", "message": {"text": "Dangling fetch: POST /api/poker/${encodeURIComponent(covenantId)}/hole (frontend/src/components/FullScreenPoker.jsx:339)"}, "properties": {"repobilityId": "1fe6659b8e2cc000", "scanner": "scanner-primary", "fingerprint": "8e6c4d6b8bbc67fb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-03ccb5f41b2dbf7a", "level": "error", "message": {"text": "Dangling fetch: POST /api/poker/${encodeURIComponent(covenantId)}/${path} (frontend/src/components/FullScreenPoker.jsx:367)"}, "properties": {"repobilityId": "f9a7836203600016", "scanner": "scanner-primary", "fingerprint": "03ccb5f41b2dbf7a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c40d9bb826aaf388", "level": "error", "message": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenPoker.jsx:413)"}, "properties": {"repobilityId": "398017855c8621b4", "scanner": "scanner-primary", "fingerprint": "c40d9bb826aaf388", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f04b6d5c8ebcad1d", "level": "error", "message": {"text": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenPoker.jsx:433)"}, "properties": {"repobilityId": "c794c3e9d3fee5ae", "scanner": "scanner-primary", "fingerprint": "f04b6d5c8ebcad1d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dacd8d74c07a3227", "level": "error", "message": {"text": "Dangling fetch: GET /api/events?network=${network}&limit=20 (frontend/src/components/LiveTicker.jsx:35)"}, "properties": {"repobilityId": "14ba27e21ef08473", "scanner": "scanner-primary", "fingerprint": "dacd8d74c07a3227", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dd1c95e633532db1", "level": "error", "message": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenBlackjack.jsx:271)"}, "properties": {"repobilityId": "0811f7f875e5b73d", "scanner": "scanner-primary", "fingerprint": "dd1c95e633532db1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-918db62d12092070", "level": "error", "message": {"text": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenBlackjack.jsx:309)"}, "properties": {"repobilityId": "cbe99d23a4799080", "scanner": "scanner-primary", "fingerprint": "918db62d12092070", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7040b8054b8c28f0", "level": "error", "message": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenTicTacToe.jsx:138)"}, "properties": {"repobilityId": "841edce24a62bdf4", "scanner": "scanner-primary", "fingerprint": "7040b8054b8c28f0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3c3b155ec4436bc2", "level": "error", "message": {"text": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenTicTacToe.jsx:154)"}, "properties": {"repobilityId": "9b951505d36fe5c4", "scanner": "scanner-primary", "fingerprint": "3c3b155ec4436bc2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f13a43673c4da6f4", "level": "error", "message": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenRPS.jsx:249)"}, "properties": {"repobilityId": "e061c655a4749132", "scanner": "scanner-primary", "fingerprint": "f13a43673c4da6f4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-00e1909b65ff4f33", "level": "error", "message": {"text": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenRPS.jsx:262)"}, "properties": {"repobilityId": "bc7d2bdc7b0c543c", "scanner": "scanner-primary", "fingerprint": "00e1909b65ff4f33", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-07f2c749457aba44", "level": "error", "message": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/components/FullScreenCheckers.jsx:336)"}, "properties": {"repobilityId": "687ecd3c62429870", "scanner": "scanner-primary", "fingerprint": "07f2c749457aba44", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0bd350ffcfe5f499", "level": "error", "message": {"text": "Dangling fetch: POST /api/covenant/${covenantId}/compute-payout (frontend/src/components/FullScreenCheckers.jsx:367)"}, "properties": {"repobilityId": "45791d8946f841cb", "scanner": "scanner-primary", "fingerprint": "0bd350ffcfe5f499", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-02ab9c6826cc148a", "level": "error", "message": {"text": "Dangling fetch: GET /api/terminal-config-challenge/${encodeURIComponent(covenantId)} (frontend/src/lib/ownership.js:17)"}, "properties": {"repobilityId": "84b96fb7693b1a7f", "scanner": "scanner-primary", "fingerprint": "02ab9c6826cc148a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-df980d6edd818971", "level": "error", "message": {"text": "Dangling fetch: GET /api/games?status=waiting&limit=24 (frontend/src/pages/Explorer.jsx:253)"}, "properties": {"repobilityId": "5cd676262e7e2be5", "scanner": "scanner-primary", "fingerprint": "df980d6edd818971", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9f3d280a4aef2de2", "level": "error", "message": {"text": "Dangling fetch: GET /api/covenants/${encodeURIComponent(q)} (frontend/src/pages/Explorer.jsx:288)"}, "properties": {"repobilityId": "a6192f88ed326c44", "scanner": "scanner-primary", "fingerprint": "9f3d280a4aef2de2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5ed97f4a67a987bb", "level": "error", "message": {"text": "Dangling fetch: GET /api/covenants?network=${kaspaNetwork}&creator=${encodeURIComponent(q)}&limit=200 (frontend/src/pages/Explorer.jsx:297)"}, "properties": {"repobilityId": "35e7d246fc019e5d", "scanner": "scanner-primary", "fingerprint": "5ed97f4a67a987bb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a6238fa2eea9ce0e", "level": "error", "message": {"text": "Dangling fetch: GET /api/covenants?network=${kaspaNetwork}&q=${encodeURIComponent(q)}&limit=100 (frontend/src/pages/Explorer.jsx:308)"}, "properties": {"repobilityId": "29901e99141120a2", "scanner": "scanner-primary", "fingerprint": "a6238fa2eea9ce0e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1949aa8593085632", "level": "error", "message": {"text": "Dangling fetch: GET /api/covenants/${encodeURIComponent(id)} (frontend/src/pages/CovenantStudio.jsx:33)"}, "properties": {"repobilityId": "328be3ae461b6c83", "scanner": "scanner-primary", "fingerprint": "1949aa8593085632", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-de3521e35a08497e", "level": "error", "message": {"text": "Dangling fetch: POST /api/terminal-config/${encodeURIComponent(id)} (frontend/src/pages/CovenantStudio.jsx:52)"}, "properties": {"repobilityId": "804f371656c93b83", "scanner": "scanner-primary", "fingerprint": "de3521e35a08497e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-048630bd6d7ff3be", "level": "error", "message": {"text": "Dangling fetch: GET /api/covenant/catalog (frontend/src/pages/EnforcedDeploy.jsx:61)"}, "properties": {"repobilityId": "30202d44d538d592", "scanner": "scanner-primary", "fingerprint": "048630bd6d7ff3be", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2366875addbc37d3", "level": "error", "message": {"text": "Dangling fetch: GET /api/status (frontend/src/pages/EnforcedDeploy.jsx:62)"}, "properties": {"repobilityId": "f452a52487d582d1", "scanner": "scanner-primary", "fingerprint": "2366875addbc37d3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2e6671449e8e7c8b", "level": "error", "message": {"text": "Dangling fetch: POST /api/covenant/p2sh/prepare-deploy (frontend/src/pages/EnforcedDeploy.jsx:116)"}, "properties": {"repobilityId": "c8c5512b13659d63", "scanner": "scanner-primary", "fingerprint": "2e6671449e8e7c8b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-90a0f79d5db2c789", "level": "error", "message": {"text": "Dangling fetch: POST /api/covenant/p2sh/submit-deploy (frontend/src/pages/EnforcedDeploy.jsx:127)"}, "properties": {"repobilityId": "24579d175665abc5", "scanner": "scanner-primary", "fingerprint": "90a0f79d5db2c789", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-34affa825d58ef39", "level": "error", "message": {"text": "Dangling fetch: POST /api/covenant/p2sh/deploy (frontend/src/pages/EnforcedDeploy.jsx:143)"}, "properties": {"repobilityId": "108875a25fbfebdd", "scanner": "scanner-primary", "fingerprint": "34affa825d58ef39", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-db7e983d327a1b7c", "level": "error", "message": {"text": "Dangling fetch: POST /api/covenant/p2sh/prepare-spend (frontend/src/pages/EnforcedDeploy.jsx:184)"}, "properties": {"repobilityId": "f45a016820cd2e32", "scanner": "scanner-primary", "fingerprint": "db7e983d327a1b7c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-722041de85eb0f92", "level": "error", "message": {"text": "Dangling fetch: POST /api/covenant/p2sh/submit-signed (frontend/src/pages/EnforcedDeploy.jsx:217)"}, "properties": {"repobilityId": "99bbf9512f72cedd", "scanner": "scanner-primary", "fingerprint": "722041de85eb0f92", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a883576652c77c45", "level": "error", "message": {"text": "Dangling fetch: POST /api/covenant/p2sh/spend (frontend/src/pages/EnforcedDeploy.jsx:243)"}, "properties": {"repobilityId": "cbbefc5c56b65c30", "scanner": "scanner-primary", "fingerprint": "a883576652c77c45", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3717779cf2d17701", "level": "error", "message": {"text": "Dangling fetch: GET /api/terminal-config/${encodeURIComponent(selected.tx_id)} (frontend/src/pages/CovenantFix.jsx:275)"}, "properties": {"repobilityId": "d3b307cb8373e08b", "scanner": "scanner-primary", "fingerprint": "3717779cf2d17701", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-97600ca31ea88ef1", "level": "error", "message": {"text": "Dangling fetch: POST /api/terminal-config/${selected.tx_id} (frontend/src/pages/CovenantFix.jsx:347)"}, "properties": {"repobilityId": "88fce000e8c46bbe", "scanner": "scanner-primary", "fingerprint": "97600ca31ea88ef1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-110475fad5df83c6", "level": "error", "message": {"text": "Dangling fetch: GET /api/balance/${encodeURIComponent(treasury)}?network=${network} (frontend/src/pages/Treasury.jsx:23)"}, "properties": {"repobilityId": "187f51f3733ad2a5", "scanner": "scanner-primary", "fingerprint": "110475fad5df83c6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-40cc4ec74be857d7", "level": "error", "message": {"text": "Dangling fetch: GET /api/events?network=${network}&limit=100 (frontend/src/pages/Treasury.jsx:27)"}, "properties": {"repobilityId": "e59c7bdf8923190b", "scanner": "scanner-primary", "fingerprint": "40cc4ec74be857d7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1a8550353f33bbb2", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth-session (frontend/src/pages/PremiumBuilder.jsx:70)"}, "properties": {"repobilityId": "6feb682ca62d9fc4", "scanner": "scanner-primary", "fingerprint": "1a8550353f33bbb2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4412b23ae005502d", "level": "error", "message": {"text": "Dangling fetch: GET /api/status (frontend/src/pages/PremiumBuilder.jsx:107)"}, "properties": {"repobilityId": "c35c67b109a10085", "scanner": "scanner-primary", "fingerprint": "4412b23ae005502d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cbb899a4cd7a9d8a", "level": "error", "message": {"text": "Dangling fetch: POST /api/covenant/p2sh/deploy (frontend/src/pages/PremiumBuilder.jsx:219)"}, "properties": {"repobilityId": "6b543f06aaed6657", "scanner": "scanner-primary", "fingerprint": "cbb899a4cd7a9d8a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-15b6dc9efe13b3d6", "level": "error", "message": {"text": "Dangling fetch: POST /api/terminal-config/${encodeURIComponent(covId)} (frontend/src/pages/PremiumBuilder.jsx:248)"}, "properties": {"repobilityId": "88eb66c4d2c0c1c6", "scanner": "scanner-primary", "fingerprint": "15b6dc9efe13b3d6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a6fb9db945182455", "level": "error", "message": {"text": "Dangling fetch: POST /api/covenant-metadata (frontend/src/pages/PremiumBuilder.jsx:268)"}, "properties": {"repobilityId": "42dd0b8865e451db", "scanner": "scanner-primary", "fingerprint": "a6fb9db945182455", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3a97bd9abd7052bb", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth-session (frontend/src/pages/CovenantInteractive.jsx:159)"}, "properties": {"repobilityId": "715f60357db2887d", "scanner": "scanner-primary", "fingerprint": "3a97bd9abd7052bb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-87cbdef25c106291", "level": "error", "message": {"text": "Dangling fetch: POST /api/covenant/p2sh/claim (frontend/src/pages/CovenantInteractive.jsx:254)"}, "properties": {"repobilityId": "e413863c09d2b59a", "scanner": "scanner-primary", "fingerprint": "87cbdef25c106291", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4615a5be4c0e330e", "level": "error", "message": {"text": "Dangling fetch: GET /api/covenants/${encodeURIComponent(id)} (frontend/src/pages/CovenantInteractive.jsx:262)"}, "properties": {"repobilityId": "3ce1cd3e66b09fe9", "scanner": "scanner-primary", "fingerprint": "4615a5be4c0e330e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-60b01b64e038a585", "level": "error", "message": {"text": "Dangling fetch: GET /api/covenants/${encodeURIComponent(id)}/actions (frontend/src/pages/CovenantInteractive.jsx:330)"}, "properties": {"repobilityId": "67c4aa3e2b6eda98", "scanner": "scanner-primary", "fingerprint": "60b01b64e038a585", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2fde645cc3b42101", "level": "error", "message": {"text": "Dangling fetch: GET /api/covenants/${encodeURIComponent(id)} (frontend/src/pages/CovenantInteractive.jsx:338)"}, "properties": {"repobilityId": "f418eeb1ce404b2b", "scanner": "scanner-primary", "fingerprint": "2fde645cc3b42101", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7465e5923e300e14", "level": "error", "message": {"text": "Dangling fetch: POST /api/terminal-config/${id} (frontend/src/pages/CovenantInteractive.jsx:594)"}, "properties": {"repobilityId": "e030fa7ef1f8f2a7", "scanner": "scanner-primary", "fingerprint": "7465e5923e300e14", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a33dfe0efa595915", "level": "error", "message": {"text": "Dangling fetch: GET /api/marketplace/templates (frontend/src/pages/TemplateLibrary.jsx:32)"}, "properties": {"repobilityId": "0278c1e5dd933a96", "scanner": "scanner-primary", "fingerprint": "a33dfe0efa595915", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9339b1f60aa03eaf", "level": "error", "message": {"text": "Dangling fetch: GET /api/marketplace/templates (frontend/src/pages/TemplateLibrary.jsx:287)"}, "properties": {"repobilityId": "19a9081c1d96c706", "scanner": "scanner-primary", "fingerprint": "9339b1f60aa03eaf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c835d35cbc6b90dd", "level": "error", "message": {"text": "Dangling fetch: GET /api/openapi.json (frontend/src/pages/ApiDocs.jsx:37)"}, "properties": {"repobilityId": "c497d755bd00744a", "scanner": "scanner-primary", "fingerprint": "c835d35cbc6b90dd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-aeadafee07ae3328", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth-session (frontend/src/pages/AdvancedComposer.jsx:28)"}, "properties": {"repobilityId": "4bbf67be7fdf87e3", "scanner": "scanner-primary", "fingerprint": "aeadafee07ae3328", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a371b33a8e834729", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth-session (frontend/src/pages/PaidBuilder.jsx:95)"}, "properties": {"repobilityId": "d1e4c0073086eb2a", "scanner": "scanner-primary", "fingerprint": "a371b33a8e834729", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d948b754186e2e86", "level": "error", "message": {"text": "Dangling fetch: GET /api/stats?network=${network} (frontend/src/pages/Stats.jsx:118)"}, "properties": {"repobilityId": "9642a3625756891c", "scanner": "scanner-primary", "fingerprint": "d948b754186e2e86", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-71ef4f5f5e4a9d30", "level": "error", "message": {"text": "Dangling fetch: GET /api/address/${encodeURIComponent(addr)}?network=${network} (frontend/src/pages/AddressPortfolio.jsx:15)"}, "properties": {"repobilityId": "e2d2740f35bd0997", "scanner": "scanner-primary", "fingerprint": "71ef4f5f5e4a9d30", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4c70c23afdfb82c7", "level": "error", "message": {"text": "Dangling fetch: POST /api/games/${encodeURIComponent(covenantId)}/claim-timeout (frontend/src/hooks/useGameSync.js:64)"}, "properties": {"repobilityId": "b7d9ca84eb4fa02f", "scanner": "scanner-primary", "fingerprint": "4c70c23afdfb82c7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5162c53ae17a5caa", "level": "error", "message": {"text": "Dangling fetch: GET /api/games/${encodeURIComponent(covenantId)} (frontend/src/hooks/useGameSync.js:101)"}, "properties": {"repobilityId": "8d4cb7e8007aa16b", "scanner": "scanner-primary", "fingerprint": "5162c53ae17a5caa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-36e5a3b32317d580", "level": "error", "message": {"text": "Dangling fetch: POST /api/games/${encodeURIComponent(covenantId)}/join (frontend/src/hooks/useGameSync.js:140)"}, "properties": {"repobilityId": "06a9ffc565d7044e", "scanner": "scanner-primary", "fingerprint": "36e5a3b32317d580", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9a253374e4137570", "level": "error", "message": {"text": "Dangling fetch: POST /api/games/${encodeURIComponent(covenantId)}/move (frontend/src/hooks/useGameSync.js:166)"}, "properties": {"repobilityId": "bb7f530caeb4ef61", "scanner": "scanner-primary", "fingerprint": "9a253374e4137570", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7f3cdc0916f26639", "level": "error", "message": {"text": "Dangling fetch: POST /api/games/${encodeURIComponent(covenantId)}/resign (frontend/src/hooks/useGameSync.js:187)"}, "properties": {"repobilityId": "9f9a963f60e49f58", "scanner": "scanner-primary", "fingerprint": "7f3cdc0916f26639", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-597c3cb7e3d1017b", "level": "error", "message": {"text": "Dangling fetch: GET /api/covenants?${query} (frontend/src/lib/sdk/CovexClient.ts:78)"}, "properties": {"repobilityId": "530f675aa2637e69", "scanner": "scanner-primary", "fingerprint": "597c3cb7e3d1017b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1e56c8fc4035191e", "level": "error", "message": {"text": "Dangling fetch: POST /api/oracle/verify-and-sign (frontend/src/lib/sdk/CovexClient.ts:83)"}, "properties": {"repobilityId": "998afdf5347c9872", "scanner": "scanner-primary", "fingerprint": "1e56c8fc4035191e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-65be3cad99a6cf99", "level": "error", "message": {"text": "Dangling fetch: GET /api/analytics${query} (frontend/src/lib/sdk/CovexClient.ts:104)"}, "properties": {"repobilityId": "53528723bd20b2fd", "scanner": "scanner-primary", "fingerprint": "65be3cad99a6cf99", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5a6965a349e7cf8f", "level": "note", "message": {"text": "Unused endpoint: PUT /index.html"}, "properties": {"repobilityId": "eb527d94aacd93f6", "scanner": "scanner-primary", "fingerprint": "5a6965a349e7cf8f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}