{"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-705bb7762534f05d", "name": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/MnemonicDisplay.test.tsx:13", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/MnemonicDisplay.test.tsx:13"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-68981225185771c3", "name": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/walletSwitch.test.ts:9", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/walletSwitch.test.ts:9"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4296f516ef6e7453", "name": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/clipboard.test.ts:10", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/clipboard.test.ts:10"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8052d50fe9ed981c", "name": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/validation.test.ts:10", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/validation.test.ts:10"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-af7ff7af25efdaf4", "name": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/WalletCreate.test.tsx:12", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/WalletCreate.test.tsx:12"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c2d91de0a836965e", "name": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/ExportDialog.test.tsx:12", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/ExportDialog.test.tsx:12"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bedac5c55fdd7bea", "name": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/WalletSelector.test.tsx:12", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/WalletSelector.test.tsx:12"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9b3f4dfa6a177ff0", "name": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/AddressList.test.tsx:12", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/AddressList.test.tsx:12"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bf19dec3d6169ebe", "name": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/WalletImport.test.tsx:12", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/WalletImport.test.tsx:12"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-03330e5c668725bf", "name": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/integration/wallet-creation-flow.test.tsx:8", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/integration/wallet-creation-flow.test.tsx:8"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df8da55fca7d252a", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/App.tsx:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/App.tsx:71"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ac916c00ea1c573a", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/utils/tokenWhitelist.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/utils/tokenWhitelist.ts: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-ea088a1107e003e4", "name": "TODO/FIXME marker in shipping code \u2014 dashboard/src/utils/scamTokenFilter.ts:248", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/src/utils/scamTokenFilter.ts:248"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c91b3e3e5dd3db45", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/utils/scamTokenFilter.ts:249", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/utils/scamTokenFilter.ts:249"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c882714c0f20dfe9", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/contexts/AppPasswordContext.tsx:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/contexts/AppPasswordContext.tsx:64"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d9975833ca109d42", "name": "TODO/FIXME marker in shipping code \u2014 dashboard/src/contexts/WalletConnectContext.tsx:526", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/src/contexts/WalletConnectContext.tsx:526"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-37ec72ec463045ca", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/contexts/WalletConnectContext.tsx:152", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/contexts/WalletConnectContext.tsx:152"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2071106dfb2867d9", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/stores/walletSessionStore.ts:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/stores/walletSessionStore.ts:79"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e01859dd54a7616f", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/stores/sessionStore.ts:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/stores/sessionStore.ts:98"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2995888131234a31", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/hooks/useTokenList.ts:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/hooks/useTokenList.ts:77"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9394dea718ddcf6e", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/WalletCreate.tsx:132", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/WalletCreate.tsx:132"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c180bc4f3b85d4b", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/SwapTransaction.tsx:273", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/SwapTransaction.tsx:273"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2fdfb94d32ce2bfe", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/TransactionHistory.tsx:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/TransactionHistory.tsx:96"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c2b688de0a07b659", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/AppUnlock.tsx:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/AppUnlock.tsx: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-2300676729621bdc", "name": "TODO/FIXME marker in shipping code \u2014 dashboard/src/components/WalletImport.tsx:156", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/src/components/WalletImport.tsx:156"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dd3ea08f79c9c4b8", "name": "TODO/FIXME marker in shipping code \u2014 dashboard/src/components/WalletDetail.tsx:83", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/src/components/WalletDetail.tsx:83"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7fa1a2eddf21bc5f", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/WalletDetail.tsx:160", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/WalletDetail.tsx:160"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-03f4655659a1324d", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/SendTransaction.tsx:332", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/SendTransaction.tsx:332"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a4f4182a3d667251", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/StakingTransaction.tsx:271", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/StakingTransaction.tsx:271"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e3a5082fa50da6b8", "name": "`truncate` class without `title=` for hover reveal \u2014 dashboard/src/components/WalletConnect/SessionApprovalDialog.tsx:15", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 dashboard/src/components/WalletConnect/SessionApprovalDialog.tsx:154"}, "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-e0f4b23454320c92", "name": "Icon-only button without accessible name \u2014 dashboard/src/components/WalletConnect/SessionsManagerModal.tsx:111", "shortDescription": {"text": "Icon-only button without accessible name \u2014 dashboard/src/components/WalletConnect/SessionsManagerModal.tsx:111"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-63e99d27909bb3f1", "name": "`truncate` class without `title=` for hover reveal \u2014 dashboard/src/components/WalletConnect/SignRequestDialog.tsx:169", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 dashboard/src/components/WalletConnect/SignRequestDialog.tsx:169"}, "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-185b02e13cd16b00", "name": "TODO/FIXME marker in shipping code \u2014 dashboard/src/pages/MembershipSettings.tsx:587", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/src/pages/MembershipSettings.tsx:587"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a3a4efe37f0a008b", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/pages/MembershipSettings.tsx:230", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/pages/MembershipSettings.tsx:230"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8b29273dd6b6f543", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/pages/Dashboard.tsx:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/pages/Dashboard.tsx:173"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4fcd665621712e5e", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/pages/DeveloperMode/index.tsx:112", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/pages/DeveloperMode/index.tsx:112"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-885e356edfc8d8b0", "name": "TODO/FIXME marker in shipping code \u2014 dashboard/src/constants/contracts.ts:26", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/src/constants/contracts.ts:26"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b181537ff8e0a5b3", "name": "TODO/FIXME marker in shipping code \u2014 dashboard/src/services/analytics.ts:9", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/src/services/analytics.ts:9"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a72f162c471794f7", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/tauri-api.ts:595", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/tauri-api.ts:595"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9602788fdab10504", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/session-manager.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/session-manager.ts:26"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-17fc6a383a0783a0", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/client.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/client.ts:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fdcf453506542353", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/request-handler.ts:155", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/request-handler.ts:155"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3511ef1cb9aa65fe", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/methods/wallet-switch-chain.ts:120", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/methods/wallet-switch-chain.ts:120"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-acd1cccdb67a4132", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/methods/wallet-add-chain.ts:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/methods/wallet-add-chain.ts:105"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-756daa578347ed18", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/methods/eth-sign-typed-data.ts:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/methods/eth-sign-typed-data.ts:133"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c90ba008ffd6fcd8", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/methods/personal-sign.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/methods/personal-sign.ts:82"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-170e73f10c2b3b59", "name": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/methods/eth-send-transaction.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/methods/eth-send-transaction.ts:73"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-786847cac3bdd71e", "name": "Stray `console.log` in TS/JS \u2014 packages/hardhat-plugin/src/index.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/hardhat-plugin/src/index.ts:70"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ba33e787e1e3a340", "name": "Stray `console.log` in TS/JS \u2014 packages/hardhat-plugin/src/ArcSignClient.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/hardhat-plugin/src/ArcSignClient.ts:72"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a501395b6fe4a22", "name": "Stray `console.log` in TS/JS \u2014 packages/hardhat-plugin/src/ArcSignSigner.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/hardhat-plugin/src/ArcSignSigner.ts:41"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b325de5b83a1d543", "name": "Stray `console.log` in TS/JS \u2014 packages/hardhat-plugin/src/ArcSignProvider.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/hardhat-plugin/src/ArcSignProvider.ts: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-f5dffb401de2eb90", "name": "Stray `console.log` in TS/JS \u2014 scripts/version.js:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/version.js:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-234ffbd8dce04744", "name": "Stray `console.log` in TS/JS \u2014 contracts/scripts/deploy.js:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/deploy.js:6"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5a936bba491f15c3", "name": "Stray `console.log` in TS/JS \u2014 contracts/scripts/deploy-referral.js:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/deploy-referral.js:6"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bbcc88214fc42bb3", "name": "Stray `console.log` in TS/JS \u2014 contracts/scripts/test-hardhat-plugin.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/test-hardhat-plugin.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-459bb4b87a24ba95", "name": "Stray `console.log` in TS/JS \u2014 contracts/scripts/test-explorer-api.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/test-explorer-api.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-099ffd701d6e6ea7", "name": "Stray `console.log` in TS/JS \u2014 contracts/scripts/deploy-testnet-bnb.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/deploy-testnet-bnb.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-d7cfdd4c0695702a", "name": "Stray `console.log` in TS/JS \u2014 contracts/scripts/verify-mint-tx.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/verify-mint-tx.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-5a1eb3c80f70a59a", "name": "Stray `console.log` in TS/JS \u2014 contracts/scripts/set-base-uri.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/set-base-uri.js:54"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79332f166d08ace0", "name": "Stray `console.log` in TS/JS \u2014 contracts/scripts/deploy-testnet.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/deploy-testnet.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-7575d95f4b2441bc", "name": "Stray `console.log` in TS/JS \u2014 contracts/scripts/upload-metadata.js:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/upload-metadata.js:111"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf3763cdf358bb17", "name": "Stray `console.log` in TS/JS \u2014 contracts/scripts/test-dev-mode.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/test-dev-mode.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-9f84970add4622ca", "name": "Stray `console.log` in TS/JS \u2014 contracts/scripts/check-uri.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/check-uri.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-84f166cb7dcc54c7", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/components/WalletDetail.tsx:2033", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/components/WalletDetail.tsx:2033"}, "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-fe1e00e3a686ca54", "name": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/constants/README.md:114", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/constants/README.md:114"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1838a141491ce38c", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d49221c608b4e28f", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "tim-actions/get-pr-commits@v1.3.1 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d1b928f8f8d158f1", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db06f0d3815dd8e9", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3796ec8567227c9e", "name": "Very large file: dashboard/tests/frontend/components/WalletDetail.test.tsx (2404 lines)", "shortDescription": {"text": "Very large file: dashboard/tests/frontend/components/WalletDetail.test.tsx (2404 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-fa6b2c35ca213acf", "name": "Very large file: dashboard/tests/frontend/services/tauri-api.test.ts (1861 lines)", "shortDescription": {"text": "Very large file: dashboard/tests/frontend/services/tauri-api.test.ts (1861 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-c91247b6ec661dd6", "name": "Very large file: dashboard/src/components/SwapTransaction.tsx (3158 lines)", "shortDescription": {"text": "Very large file: dashboard/src/components/SwapTransaction.tsx (3158 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-84f58fa0f3c7c899", "name": "Very large file: dashboard/src/components/WalletDetail.tsx (2713 lines)", "shortDescription": {"text": "Very large file: dashboard/src/components/WalletDetail.tsx (2713 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-a7d9fd64e1c3597e", "name": "Very large file: dashboard/src/components/SendTransaction.tsx (1955 lines)", "shortDescription": {"text": "Very large file: dashboard/src/components/SendTransaction.tsx (1955 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ece15cb528593c8", "name": "Very large file: dashboard/src/pages/MembershipSettings.tsx (2906 lines)", "shortDescription": {"text": "Very large file: dashboard/src/pages/MembershipSettings.tsx (2906 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-1c74fdabca2a3698", "name": "Very large file: dashboard/src/services/tauri-api.ts (2512 lines)", "shortDescription": {"text": "Very large file: dashboard/src/services/tauri-api.ts (2512 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-da80f4c2d87c7d1d", "name": "Very large file: dashboard/src-tauri/src/commands/wallet.rs (1776 lines)", "shortDescription": {"text": "Very large file: dashboard/src-tauri/src/commands/wallet.rs (1776 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-2a7250566ff84bd1", "name": "Very large file: dashboard/src-tauri/src/ffi/queue.rs (2326 lines)", "shortDescription": {"text": "Very large file: dashboard/src-tauri/src/ffi/queue.rs (2326 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-c6e3b6c99873dbc8", "name": "Very large file: dashboard/src-tauri/src/ffi/bindings.rs (1867 lines)", "shortDescription": {"text": "Very large file: dashboard/src-tauri/src/ffi/bindings.rs (1867 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-5c9272c5f215db94", "name": "458 TODO/FIXME markers", "shortDescription": {"text": "458 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 837 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 132 placeholder/mock markers across 49 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-bea357a6497a2d5d", "name": "Agent authority lacks a verifier contract: CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: CLAUDE.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ed3d90877eb968c9", "name": "Commented-code block (9 lines) in dashboard/tests/frontend/walletSwitch.test.ts:81", "shortDescription": {"text": "Commented-code block (9 lines) in dashboard/tests/frontend/walletSwitch.test.ts:81"}, "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-19a56a7db0edc41c", "name": "Commented-code block (5 lines) in dashboard/tests/frontend/clipboard.test.ts:95", "shortDescription": {"text": "Commented-code block (5 lines) in dashboard/tests/frontend/clipboard.test.ts:95"}, "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-4e65eb9da09690cb", "name": "Commented-code block (8 lines) in dashboard/tests/frontend/validation.test.ts:81", "shortDescription": {"text": "Commented-code block (8 lines) in dashboard/tests/frontend/validation.test.ts:81"}, "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-018f70f7f3a6223e", "name": "Commented-code block (5 lines) in dashboard/tests/frontend/WalletCreate.test.tsx:29", "shortDescription": {"text": "Commented-code block (5 lines) in dashboard/tests/frontend/WalletCreate.test.tsx:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1ea503ec70c17357", "name": "Commented-code block (9 lines) in dashboard/tests/frontend/ExportDialog.test.tsx:39", "shortDescription": {"text": "Commented-code block (9 lines) in dashboard/tests/frontend/ExportDialog.test.tsx:39"}, "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-3f591396bf2add49", "name": "Commented-code block (5 lines) in dashboard/tests/frontend/WalletSelector.test.tsx:122", "shortDescription": {"text": "Commented-code block (5 lines) in dashboard/tests/frontend/WalletSelector.test.tsx:122"}, "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-0f6ab002520c9dd7", "name": "Commented-code block (8 lines) in dashboard/tests/frontend/AddressList.test.tsx:166", "shortDescription": {"text": "Commented-code block (8 lines) in dashboard/tests/frontend/AddressList.test.tsx:166"}, "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-19e888533e246178", "name": "Commented-code block (5 lines) in dashboard/tests/frontend/WalletImport.test.tsx:83", "shortDescription": {"text": "Commented-code block (5 lines) in dashboard/tests/frontend/WalletImport.test.tsx:83"}, "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-8b805084a51d3270", "name": "Commented-code block (20 lines) in dashboard/tests/frontend/integration/wallet-creation-flow.test.tsx:21", "shortDescription": {"text": "Commented-code block (20 lines) in dashboard/tests/frontend/integration/wallet-creation-flow.test.tsx:21"}, "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-79a3a2cd8a644317", "name": "Legacy-named symbol `export_backup` in dashboard/tests/frontend/services/tauri-api.test.ts:281", "shortDescription": {"text": "Legacy-named symbol `export_backup` in dashboard/tests/frontend/services/tauri-api.test.ts:281"}, "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-39bd32eb04ba116b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/src/services/analytics.ts:35", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/src/services/analytics.ts:35"}, "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-b3d5f7d84acdd577", "name": "Legacy-named symbol `export_backup` in dashboard/src/services/tauri-api.ts:216", "shortDescription": {"text": "Legacy-named symbol `export_backup` in dashboard/src/services/tauri-api.ts:216"}, "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-aab84822c8778172", "name": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/src/services/tokenList.ts:120", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/src/services/tokenList.ts:120"}, "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-fcd46f627fa1813d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 contracts/scripts/upload-metadata.js:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 contracts/scripts/upload-metadata.js:47"}, "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-8e047ab7af03962f", "name": "7 env vars used in code but missing from .env.example", "shortDescription": {"text": "7 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `BASE_URI`, `DEV`, `ETHERSCAN_API_KEY`, `PINATA_API_KEY`, `PINATA_SECRET_KEY`, `RPC_URL`, `TAURI_DEBUG`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/24288"}, "properties": {"repository": "arcsignio/arcsign", "repoUrl": "https://github.com/arcsignio/arcsign", "branch": "main"}, "results": [{"ruleId": "scanner-705bb7762534f05d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/MnemonicDisplay.test.tsx:13"}, "properties": {"repobilityId": "9910b477eedf5e56", "scanner": "scanner-primary", "fingerprint": "705bb7762534f05d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-68981225185771c3", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/walletSwitch.test.ts:9"}, "properties": {"repobilityId": "a937eaf09ea61628", "scanner": "scanner-primary", "fingerprint": "68981225185771c3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4296f516ef6e7453", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/clipboard.test.ts:10"}, "properties": {"repobilityId": "9b5123203e230d0a", "scanner": "scanner-primary", "fingerprint": "4296f516ef6e7453", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-8052d50fe9ed981c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/validation.test.ts:10"}, "properties": {"repobilityId": "ebb5b7a79add4bbd", "scanner": "scanner-primary", "fingerprint": "8052d50fe9ed981c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-af7ff7af25efdaf4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/WalletCreate.test.tsx:12"}, "properties": {"repobilityId": "8f1d0f4d831f295c", "scanner": "scanner-primary", "fingerprint": "af7ff7af25efdaf4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c2d91de0a836965e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/ExportDialog.test.tsx:12"}, "properties": {"repobilityId": "42d952b250735b3f", "scanner": "scanner-primary", "fingerprint": "c2d91de0a836965e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-bedac5c55fdd7bea", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/WalletSelector.test.tsx:12"}, "properties": {"repobilityId": "93c9cf7f60ea794e", "scanner": "scanner-primary", "fingerprint": "bedac5c55fdd7bea", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-9b3f4dfa6a177ff0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/AddressList.test.tsx:12"}, "properties": {"repobilityId": "89808a6733795a75", "scanner": "scanner-primary", "fingerprint": "9b3f4dfa6a177ff0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-bf19dec3d6169ebe", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/WalletImport.test.tsx:12"}, "properties": {"repobilityId": "4b349854564d8873", "scanner": "scanner-primary", "fingerprint": "bf19dec3d6169ebe", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-03330e5c668725bf", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/tests/frontend/integration/wallet-creation-flow.test.tsx:8"}, "properties": {"repobilityId": "547f83a6c3300880", "scanner": "scanner-primary", "fingerprint": "03330e5c668725bf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-df8da55fca7d252a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/App.tsx:71"}, "properties": {"repobilityId": "ae3b53b9c76fe847", "scanner": "scanner-primary", "fingerprint": "df8da55fca7d252a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac916c00ea1c573a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/utils/tokenWhitelist.ts:61"}, "properties": {"repobilityId": "ed3096011638139c", "scanner": "scanner-primary", "fingerprint": "ac916c00ea1c573a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea088a1107e003e4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/src/utils/scamTokenFilter.ts:248"}, "properties": {"repobilityId": "7fcf6b6ad8904066", "scanner": "scanner-primary", "fingerprint": "ea088a1107e003e4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c91b3e3e5dd3db45", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/utils/scamTokenFilter.ts:249"}, "properties": {"repobilityId": "c2b8d1a226604d8d", "scanner": "scanner-primary", "fingerprint": "c91b3e3e5dd3db45", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c882714c0f20dfe9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/contexts/AppPasswordContext.tsx:64"}, "properties": {"repobilityId": "2091a28b68600fcc", "scanner": "scanner-primary", "fingerprint": "c882714c0f20dfe9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d9975833ca109d42", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/src/contexts/WalletConnectContext.tsx:526"}, "properties": {"repobilityId": "ac5fa7341274b408", "scanner": "scanner-primary", "fingerprint": "d9975833ca109d42", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-37ec72ec463045ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/contexts/WalletConnectContext.tsx:152"}, "properties": {"repobilityId": "249fa9046a52cdef", "scanner": "scanner-primary", "fingerprint": "37ec72ec463045ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2071106dfb2867d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/stores/walletSessionStore.ts:79"}, "properties": {"repobilityId": "7d37c9093eb6479e", "scanner": "scanner-primary", "fingerprint": "2071106dfb2867d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e01859dd54a7616f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/stores/sessionStore.ts:98"}, "properties": {"repobilityId": "c02a594c8bf72c64", "scanner": "scanner-primary", "fingerprint": "e01859dd54a7616f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2995888131234a31", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/hooks/useTokenList.ts:77"}, "properties": {"repobilityId": "bc57f98e95d58c36", "scanner": "scanner-primary", "fingerprint": "2995888131234a31", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9394dea718ddcf6e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/WalletCreate.tsx:132"}, "properties": {"repobilityId": "af99cb8ce5fae889", "scanner": "scanner-primary", "fingerprint": "9394dea718ddcf6e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5c180bc4f3b85d4b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/SwapTransaction.tsx:273"}, "properties": {"repobilityId": "3abafbbe254642e2", "scanner": "scanner-primary", "fingerprint": "5c180bc4f3b85d4b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2fdfb94d32ce2bfe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/TransactionHistory.tsx:96"}, "properties": {"repobilityId": "a5b06e967fb80cdb", "scanner": "scanner-primary", "fingerprint": "2fdfb94d32ce2bfe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c2b688de0a07b659", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/AppUnlock.tsx:33"}, "properties": {"repobilityId": "1fc609e991d71303", "scanner": "scanner-primary", "fingerprint": "c2b688de0a07b659", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2300676729621bdc", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/src/components/WalletImport.tsx:156"}, "properties": {"repobilityId": "5bb3f30ed39148f8", "scanner": "scanner-primary", "fingerprint": "2300676729621bdc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-dd3ea08f79c9c4b8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/src/components/WalletDetail.tsx:83"}, "properties": {"repobilityId": "668b743d9e1b3446", "scanner": "scanner-primary", "fingerprint": "dd3ea08f79c9c4b8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7fa1a2eddf21bc5f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/WalletDetail.tsx:160"}, "properties": {"repobilityId": "b9a3b8b89ddd776f", "scanner": "scanner-primary", "fingerprint": "7fa1a2eddf21bc5f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03f4655659a1324d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/SendTransaction.tsx:332"}, "properties": {"repobilityId": "859067b7ba976795", "scanner": "scanner-primary", "fingerprint": "03f4655659a1324d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a4f4182a3d667251", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/components/StakingTransaction.tsx:271"}, "properties": {"repobilityId": "d800c105c157d612", "scanner": "scanner-primary", "fingerprint": "a4f4182a3d667251", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e3a5082fa50da6b8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 dashboard/src/components/WalletConnect/SessionApprovalDialog.tsx:154"}, "properties": {"repobilityId": "975fd9f7feac53f6", "scanner": "scanner-primary", "fingerprint": "e3a5082fa50da6b8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e0f4b23454320c92", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 dashboard/src/components/WalletConnect/SessionsManagerModal.tsx:111"}, "properties": {"repobilityId": "9e992c8611e2f2c7", "scanner": "scanner-primary", "fingerprint": "e0f4b23454320c92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-63e99d27909bb3f1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 dashboard/src/components/WalletConnect/SignRequestDialog.tsx:169"}, "properties": {"repobilityId": "4ff640b1fece7447", "scanner": "scanner-primary", "fingerprint": "63e99d27909bb3f1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-185b02e13cd16b00", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/src/pages/MembershipSettings.tsx:587"}, "properties": {"repobilityId": "36c9bca66da9a2e8", "scanner": "scanner-primary", "fingerprint": "185b02e13cd16b00", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a3a4efe37f0a008b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/pages/MembershipSettings.tsx:230"}, "properties": {"repobilityId": "6058937771b9077c", "scanner": "scanner-primary", "fingerprint": "a3a4efe37f0a008b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8b29273dd6b6f543", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/pages/Dashboard.tsx:173"}, "properties": {"repobilityId": "f951ec6b38ef9883", "scanner": "scanner-primary", "fingerprint": "8b29273dd6b6f543", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4fcd665621712e5e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/pages/DeveloperMode/index.tsx:112"}, "properties": {"repobilityId": "fa81d7424dafb711", "scanner": "scanner-primary", "fingerprint": "4fcd665621712e5e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-885e356edfc8d8b0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/src/constants/contracts.ts:26"}, "properties": {"repobilityId": "81f7204d87e9d796", "scanner": "scanner-primary", "fingerprint": "885e356edfc8d8b0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-b181537ff8e0a5b3", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 dashboard/src/services/analytics.ts:9"}, "properties": {"repobilityId": "93293bd04a7a0667", "scanner": "scanner-primary", "fingerprint": "b181537ff8e0a5b3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a72f162c471794f7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/tauri-api.ts:595"}, "properties": {"repobilityId": "02f7d6ce1205d277", "scanner": "scanner-primary", "fingerprint": "a72f162c471794f7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9602788fdab10504", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/session-manager.ts:26"}, "properties": {"repobilityId": "8792147abe7f61ef", "scanner": "scanner-primary", "fingerprint": "9602788fdab10504", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17fc6a383a0783a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/client.ts:30"}, "properties": {"repobilityId": "de0699e7c9109e8b", "scanner": "scanner-primary", "fingerprint": "17fc6a383a0783a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fdcf453506542353", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/request-handler.ts:155"}, "properties": {"repobilityId": "b6c506339e0ea960", "scanner": "scanner-primary", "fingerprint": "fdcf453506542353", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3511ef1cb9aa65fe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/methods/wallet-switch-chain.ts:120"}, "properties": {"repobilityId": "b958ebf6860f636a", "scanner": "scanner-primary", "fingerprint": "3511ef1cb9aa65fe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-acd1cccdb67a4132", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/methods/wallet-add-chain.ts:105"}, "properties": {"repobilityId": "b4536be71ff44f29", "scanner": "scanner-primary", "fingerprint": "acd1cccdb67a4132", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-756daa578347ed18", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/methods/eth-sign-typed-data.ts:133"}, "properties": {"repobilityId": "03e1160a96c45162", "scanner": "scanner-primary", "fingerprint": "756daa578347ed18", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c90ba008ffd6fcd8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/methods/personal-sign.ts:82"}, "properties": {"repobilityId": "d859439758c8da94", "scanner": "scanner-primary", "fingerprint": "c90ba008ffd6fcd8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-170e73f10c2b3b59", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 dashboard/src/services/walletconnect/methods/eth-send-transaction.ts:73"}, "properties": {"repobilityId": "1b07f8c4d0ffefdc", "scanner": "scanner-primary", "fingerprint": "170e73f10c2b3b59", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-786847cac3bdd71e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/hardhat-plugin/src/index.ts:70"}, "properties": {"repobilityId": "e802a301039b20ea", "scanner": "scanner-primary", "fingerprint": "786847cac3bdd71e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ba33e787e1e3a340", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/hardhat-plugin/src/ArcSignClient.ts:72"}, "properties": {"repobilityId": "0530c179f287959c", "scanner": "scanner-primary", "fingerprint": "ba33e787e1e3a340", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a501395b6fe4a22", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/hardhat-plugin/src/ArcSignSigner.ts:41"}, "properties": {"repobilityId": "c1f26208579bd0ff", "scanner": "scanner-primary", "fingerprint": "9a501395b6fe4a22", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b325de5b83a1d543", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/hardhat-plugin/src/ArcSignProvider.ts:27"}, "properties": {"repobilityId": "78cd5bb1e59ee92a", "scanner": "scanner-primary", "fingerprint": "b325de5b83a1d543", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f5dffb401de2eb90", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/version.js:67"}, "properties": {"repobilityId": "0f2739613533692d", "scanner": "scanner-primary", "fingerprint": "f5dffb401de2eb90", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-234ffbd8dce04744", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/deploy.js:6"}, "properties": {"repobilityId": "d4bf4ec2c07658e7", "scanner": "scanner-primary", "fingerprint": "234ffbd8dce04744", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a936bba491f15c3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/deploy-referral.js:6"}, "properties": {"repobilityId": "19148cd16fc5b017", "scanner": "scanner-primary", "fingerprint": "5a936bba491f15c3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bbcc88214fc42bb3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/test-hardhat-plugin.js:29"}, "properties": {"repobilityId": "199226e9396c6bbc", "scanner": "scanner-primary", "fingerprint": "bbcc88214fc42bb3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-459bb4b87a24ba95", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/test-explorer-api.js:15"}, "properties": {"repobilityId": "e1f57bb3e536ddf2", "scanner": "scanner-primary", "fingerprint": "459bb4b87a24ba95", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-099ffd701d6e6ea7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/deploy-testnet-bnb.js:17"}, "properties": {"repobilityId": "d04b00aecae48edd", "scanner": "scanner-primary", "fingerprint": "099ffd701d6e6ea7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d7cfdd4c0695702a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/verify-mint-tx.js:12"}, "properties": {"repobilityId": "17345f331592e66c", "scanner": "scanner-primary", "fingerprint": "d7cfdd4c0695702a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a1eb3c80f70a59a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/set-base-uri.js:54"}, "properties": {"repobilityId": "cbb5e652bc9ed8e5", "scanner": "scanner-primary", "fingerprint": "5a1eb3c80f70a59a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-79332f166d08ace0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/deploy-testnet.js:17"}, "properties": {"repobilityId": "5af3977cca027f81", "scanner": "scanner-primary", "fingerprint": "79332f166d08ace0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7575d95f4b2441bc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/upload-metadata.js:111"}, "properties": {"repobilityId": "d785b4cc71fa29fa", "scanner": "scanner-primary", "fingerprint": "7575d95f4b2441bc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf3763cdf358bb17", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/test-dev-mode.js:28"}, "properties": {"repobilityId": "e870734ad03021cc", "scanner": "scanner-primary", "fingerprint": "bf3763cdf358bb17", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9f84970add4622ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 contracts/scripts/check-uri.js:13"}, "properties": {"repobilityId": "454ecdc8cd9ba37b", "scanner": "scanner-primary", "fingerprint": "9f84970add4622ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-84f166cb7dcc54c7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/components/WalletDetail.tsx:2033"}, "properties": {"repobilityId": "62cf15e681ba152f", "scanner": "scanner-primary", "fingerprint": "84f166cb7dcc54c7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/components/WalletDetail.tsx"}, "region": {"startLine": 2033}}}]}, {"ruleId": "scanner-fe1e00e3a686ca54", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in dashboard/src/constants/README.md:114"}, "properties": {"repobilityId": "f5d6ce45c298138b", "scanner": "scanner-primary", "fingerprint": "fe1e00e3a686ca54", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard/src/constants/README.md"}, "region": {"startLine": 114}}}]}, {"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-1838a141491ce38c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b8fd4f5048f96576", "scanner": "scanner-primary", "fingerprint": "1838a141491ce38c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d49221c608b4e28f", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1b25545f0c749ff9", "scanner": "scanner-primary", "fingerprint": "d49221c608b4e28f", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/dco.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-d1b928f8f8d158f1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "38712983ac18c29e", "scanner": "scanner-primary", "fingerprint": "d1b928f8f8d158f1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/gitleaks.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-db06f0d3815dd8e9", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "fadd038fa8ec1da0", "scanner": "scanner-primary", "fingerprint": "db06f0d3815dd8e9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/hardhat-plugin/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3796ec8567227c9e", "level": "note", "message": {"text": "Very large file: dashboard/tests/frontend/components/WalletDetail.test.tsx (2404 lines)"}, "properties": {"repobilityId": "a67d42cac0f6b0be", "scanner": "scanner-primary", "fingerprint": "3796ec8567227c9e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fa6b2c35ca213acf", "level": "note", "message": {"text": "Very large file: dashboard/tests/frontend/services/tauri-api.test.ts (1861 lines)"}, "properties": {"repobilityId": "ae98e7f5af1710f5", "scanner": "scanner-primary", "fingerprint": "fa6b2c35ca213acf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c91247b6ec661dd6", "level": "note", "message": {"text": "Very large file: dashboard/src/components/SwapTransaction.tsx (3158 lines)"}, "properties": {"repobilityId": "8d0928460e623c6d", "scanner": "scanner-primary", "fingerprint": "c91247b6ec661dd6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-84f58fa0f3c7c899", "level": "note", "message": {"text": "Very large file: dashboard/src/components/WalletDetail.tsx (2713 lines)"}, "properties": {"repobilityId": "72328dca87c96f4d", "scanner": "scanner-primary", "fingerprint": "84f58fa0f3c7c899", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a7d9fd64e1c3597e", "level": "note", "message": {"text": "Very large file: dashboard/src/components/SendTransaction.tsx (1955 lines)"}, "properties": {"repobilityId": "4e70c7ef567c9f02", "scanner": "scanner-primary", "fingerprint": "a7d9fd64e1c3597e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2ece15cb528593c8", "level": "note", "message": {"text": "Very large file: dashboard/src/pages/MembershipSettings.tsx (2906 lines)"}, "properties": {"repobilityId": "664b3f80adf0d406", "scanner": "scanner-primary", "fingerprint": "2ece15cb528593c8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1c74fdabca2a3698", "level": "note", "message": {"text": "Very large file: dashboard/src/services/tauri-api.ts (2512 lines)"}, "properties": {"repobilityId": "d9a891dcb907279f", "scanner": "scanner-primary", "fingerprint": "1c74fdabca2a3698", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-da80f4c2d87c7d1d", "level": "note", "message": {"text": "Very large file: dashboard/src-tauri/src/commands/wallet.rs (1776 lines)"}, "properties": {"repobilityId": "0d0607b87a9cc373", "scanner": "scanner-primary", "fingerprint": "da80f4c2d87c7d1d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2a7250566ff84bd1", "level": "note", "message": {"text": "Very large file: dashboard/src-tauri/src/ffi/queue.rs (2326 lines)"}, "properties": {"repobilityId": "ff1bdbf81ed971a1", "scanner": "scanner-primary", "fingerprint": "2a7250566ff84bd1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c6e3b6c99873dbc8", "level": "note", "message": {"text": "Very large file: dashboard/src-tauri/src/ffi/bindings.rs (1867 lines)"}, "properties": {"repobilityId": "46ce065a84ced740", "scanner": "scanner-primary", "fingerprint": "c6e3b6c99873dbc8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5c9272c5f215db94", "level": "note", "message": {"text": "458 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "5c9272c5f215db94", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "ed5109cf0c0ea379", "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": "c14722713f9dc657", "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": "272f8e07f5730f12", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-bea357a6497a2d5d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: CLAUDE.md"}, "properties": {"repobilityId": "aae72df3934829ac", "scanner": "scanner-primary", "fingerprint": "bea357a6497a2d5d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ed3d90877eb968c9", "level": "none", "message": {"text": "Commented-code block (9 lines) in dashboard/tests/frontend/walletSwitch.test.ts:81"}, "properties": {"repobilityId": "1819fdba19af034f", "scanner": "scanner-primary", "fingerprint": "ed3d90877eb968c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19a56a7db0edc41c", "level": "none", "message": {"text": "Commented-code block (5 lines) in dashboard/tests/frontend/clipboard.test.ts:95"}, "properties": {"repobilityId": "a341c891ac3e0531", "scanner": "scanner-primary", "fingerprint": "19a56a7db0edc41c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e65eb9da09690cb", "level": "none", "message": {"text": "Commented-code block (8 lines) in dashboard/tests/frontend/validation.test.ts:81"}, "properties": {"repobilityId": "db21e83a7f77205f", "scanner": "scanner-primary", "fingerprint": "4e65eb9da09690cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-018f70f7f3a6223e", "level": "none", "message": {"text": "Commented-code block (5 lines) in dashboard/tests/frontend/WalletCreate.test.tsx:29"}, "properties": {"repobilityId": "4fa47cb131f77ba3", "scanner": "scanner-primary", "fingerprint": "018f70f7f3a6223e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ea503ec70c17357", "level": "none", "message": {"text": "Commented-code block (9 lines) in dashboard/tests/frontend/ExportDialog.test.tsx:39"}, "properties": {"repobilityId": "677feccf376a90e7", "scanner": "scanner-primary", "fingerprint": "1ea503ec70c17357", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f591396bf2add49", "level": "none", "message": {"text": "Commented-code block (5 lines) in dashboard/tests/frontend/WalletSelector.test.tsx:122"}, "properties": {"repobilityId": "8934e9ecc49a2352", "scanner": "scanner-primary", "fingerprint": "3f591396bf2add49", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f6ab002520c9dd7", "level": "none", "message": {"text": "Commented-code block (8 lines) in dashboard/tests/frontend/AddressList.test.tsx:166"}, "properties": {"repobilityId": "83c69f8a6691e407", "scanner": "scanner-primary", "fingerprint": "0f6ab002520c9dd7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19e888533e246178", "level": "none", "message": {"text": "Commented-code block (5 lines) in dashboard/tests/frontend/WalletImport.test.tsx:83"}, "properties": {"repobilityId": "b99afd0985626aed", "scanner": "scanner-primary", "fingerprint": "19e888533e246178", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b805084a51d3270", "level": "none", "message": {"text": "Commented-code block (20 lines) in dashboard/tests/frontend/integration/wallet-creation-flow.test.tsx:21"}, "properties": {"repobilityId": "b557685e64a690db", "scanner": "scanner-primary", "fingerprint": "8b805084a51d3270", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-79a3a2cd8a644317", "level": "note", "message": {"text": "Legacy-named symbol `export_backup` in dashboard/tests/frontend/services/tauri-api.test.ts:281"}, "properties": {"repobilityId": "4bbd8a323e8e7bf8", "scanner": "scanner-primary", "fingerprint": "79a3a2cd8a644317", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-39bd32eb04ba116b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/src/services/analytics.ts:35"}, "properties": {"repobilityId": "3ba4b39abb502f1d", "scanner": "scanner-primary", "fingerprint": "39bd32eb04ba116b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b3d5f7d84acdd577", "level": "note", "message": {"text": "Legacy-named symbol `export_backup` in dashboard/src/services/tauri-api.ts:216"}, "properties": {"repobilityId": "1d6445bf0ac3efba", "scanner": "scanner-primary", "fingerprint": "b3d5f7d84acdd577", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-aab84822c8778172", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 dashboard/src/services/tokenList.ts:120"}, "properties": {"repobilityId": "7ff76b51dd720eeb", "scanner": "scanner-primary", "fingerprint": "aab84822c8778172", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fcd46f627fa1813d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 contracts/scripts/upload-metadata.js:47"}, "properties": {"repobilityId": "cae60b22a474b8a8", "scanner": "scanner-primary", "fingerprint": "fcd46f627fa1813d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8e047ab7af03962f", "level": "note", "message": {"text": "7 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "5a0455f6498c27ad", "scanner": "scanner-primary", "fingerprint": "8e047ab7af03962f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}