{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4e16483cc8b84445", "name": "Stray `console.log` in TS/JS \u2014 chainlink/test-audit-source.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 chainlink/test-audit-source.js:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2185f657aae05687", "name": "Stray `console.log` in TS/JS \u2014 scripts/deploy-deadman.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-deadman.ts:5"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ff4250b5d30e8c27", "name": "Stray `console.log` in TS/JS \u2014 scripts/redeploy-im-only.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/redeploy-im-only.ts:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-742e8febd0a4080a", "name": "Stray `console.log` in TS/JS \u2014 scripts/deploy-resume.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-resume.ts:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fa5c739914bf1c7b", "name": "Stray `console.log` in TS/JS \u2014 scripts/fund-subscription.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fund-subscription.ts:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-23368d7d8391efc0", "name": "Stray `console.log` in TS/JS \u2014 scripts/deploy-demo.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-demo.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-68749b7d174a4292", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e-local.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e-local.ts: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-182aca9ff26a5eac", "name": "Stray `console.log` in TS/JS \u2014 scripts/upload-secrets.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/upload-secrets.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3866ad5552fbc4e5", "name": "Stray `console.log` in TS/JS \u2014 scripts/redeploy-oracle.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/redeploy-oracle.ts:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3cb649a01021fc85", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-router.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-router.ts:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-58638c2d89c00103", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-gas.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-gas.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-b3cbecfac687299d", "name": "Stray `console.log` in TS/JS \u2014 scripts/debug-balances.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-balances.ts:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c924f4cc19833dbf", "name": "Stray `console.log` in TS/JS \u2014 scripts/redeploy-both.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/redeploy-both.ts: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-30af1de44346bc17", "name": "Stray `console.log` in TS/JS \u2014 scripts/deploy-and-test.ts:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-and-test.ts:7"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5e529bcb22eecb16", "name": "Stray `console.log` in TS/JS \u2014 scripts/deploy-sepolia.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-sepolia.ts:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-50026c5338d26bbb", "name": "Stray `console.log` in TS/JS \u2014 scripts/deploy.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy.ts:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd56d03508b5bcbf", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-all.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-all.ts:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2e45bfa99297f3b", "name": "Stray `console.log` in TS/JS \u2014 scripts/set-subscription.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-subscription.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-155960ea42e52d5a", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-coord.ts:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-coord.ts:9"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a67e57b28c569e55", "name": "Stray `console.log` in TS/JS \u2014 scripts/decode-coord.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/decode-coord.ts:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-47450eb085bdcb4f", "name": "Stray `console.log` in TS/JS \u2014 scripts/demo-agent.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/demo-agent.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-17a14a28dae24906", "name": "Stray `console.log` in TS/JS \u2014 scripts/deploy-arb-sepolia.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-arb-sepolia.ts:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8259c156416c0994", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-sub.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-sub.ts:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1689f2877e0cc20b", "name": "Stray `console.log` in TS/JS \u2014 scripts/autonomous-agent.ts:126", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/autonomous-agent.ts:126"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-83dd58918da21163", "name": "Stray `console.log` in TS/JS \u2014 scripts/setup-e2e.ts:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup-e2e.ts:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b9d0a190ccf72f48", "name": "Stray `console.log` in TS/JS \u2014 scripts/deploy-compute-trail.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-compute-trail.ts:5"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-168d0d9df9bd83b4", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-submit.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-submit.ts:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-59eca8278df56986", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e-test.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e-test.ts:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-01d11d2a9629c402", "name": "Stray `console.log` in TS/JS \u2014 scripts/deploy-local.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-local.ts:10"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-876dda043d336288", "name": "Stray `console.log` in TS/JS \u2014 scripts/setup-arb-chainlink.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup-arb-chainlink.ts:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-40e54f696a09d0a4", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-oracle-im.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-oracle-im.ts: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-e56d8225fa392f4b", "name": "Stray `console.log` in TS/JS \u2014 scripts/set-gas-limit.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-gas-limit.ts:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-215ebb0be04d4cfc", "name": "Stray `console.log` in TS/JS \u2014 scripts/decode-config.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/decode-config.ts: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-2807d10484c19203", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-scoring-engine.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-scoring-engine.ts:20"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-39136e25c44d3e23", "name": "Stray `console.log` in TS/JS \u2014 scripts/debug-submit.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-submit.ts:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a697a7cd337052d", "name": "Stray `console.log` in TS/JS \u2014 scripts/deploy-stylus.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-stylus.ts:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0768f4ddda96e001", "name": "Stray `console.log` in TS/JS \u2014 scripts/rewire-oracle.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rewire-oracle.ts: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-a84b53ff6fab0315", "name": "Stray `console.log` in TS/JS \u2014 scripts/update-source.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/update-source.ts: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-b8110dcb41acaed4", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ProjectsSection.tsx:192", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ProjectsSection.tsx:192"}, "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-6767ec5fba739bb0", "name": "Stray `console.log` in TS/JS \u2014 frontend/e2e/wallet-e2e.spec.ts:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/wallet-e2e.spec.ts:92"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a125f48a2d85619", "name": "Stray `console.log` in TS/JS \u2014 test/FundToken.test.js:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test/FundToken.test.js:75"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-246d6ffa7d9cdd5d", "name": "Insecure pattern 'new_function_used' in chainlink/test-audit-source.js:114", "shortDescription": {"text": "Insecure pattern 'new_function_used' in chainlink/test-audit-source.js:114"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7fd6fc13057a2335", "name": "Insecure pattern 'direct_innerhtml_assignment' in demo/07-vesting.html:230", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in demo/07-vesting.html:230"}, "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-0f38cbc2d175cf7d", "name": "Insecure pattern 'direct_innerhtml_assignment' in demo/compositions/07-vesting.html:234", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in demo/compositions/07-vesting.html:234"}, "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-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "16 tests / 71 src (ratio 0.23)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8983e5cad3bd8a20", "name": "Node manifest has dependencies but no lockfile: demo/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: demo/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 788 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 22 placeholder/mock markers across 11 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-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b546fc7369cc0f2f", "name": "Commented-code block (6 lines) in chainlink/audit-source.js:10", "shortDescription": {"text": "Commented-code block (6 lines) in chainlink/audit-source.js:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b1d72af6e077da21", "name": "Commented-code block (6 lines) in frontend/hooks/useAuditStatus.ts:183", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/hooks/useAuditStatus.ts:183"}, "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-c8be2705c8cda632", "name": "Commented-code block (23 lines) in frontend/hooks/useProjects.ts:88", "shortDescription": {"text": "Commented-code block (23 lines) in frontend/hooks/useProjects.ts:88"}, "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-754ff7c92bf11811", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/e2e/wallet-e2e.spec.ts:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/e2e/wallet-e2e.spec.ts:41"}, "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-f0e1e7aa61c787ec", "name": "Commented-code block (6 lines) in test/OmniOracle.test.js:5", "shortDescription": {"text": "Commented-code block (6 lines) in test/OmniOracle.test.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2d6ffa20a9f1093b", "name": "24 env vars used in code but missing from .env.example", "shortDescription": {"text": "24 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `AGENT1_ADDRESS`, `AGENT2_ADDRESS`, `AGENT3_ADDRESS`, `ANTHROPIC_API_KEY`, `ARBITRUM_SEPOLIA_RPC_URL`, `CYCLE_INTERVAL_MS`, `DISABLE_HMR`, `E2E_BASE_URL` + 16 more. 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/25416"}, "properties": {"repository": "dinghdong/OmniVault", "repoUrl": "https://github.com/dinghdong/OmniVault", "branch": "main"}, "results": [{"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-4e16483cc8b84445", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 chainlink/test-audit-source.js:32"}, "properties": {"repobilityId": "a653e4a42350cfef", "scanner": "scanner-primary", "fingerprint": "4e16483cc8b84445", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2185f657aae05687", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-deadman.ts:5"}, "properties": {"repobilityId": "c7072378b533f2df", "scanner": "scanner-primary", "fingerprint": "2185f657aae05687", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ff4250b5d30e8c27", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/redeploy-im-only.ts:38"}, "properties": {"repobilityId": "8822f716231b91b2", "scanner": "scanner-primary", "fingerprint": "ff4250b5d30e8c27", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-742e8febd0a4080a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-resume.ts:37"}, "properties": {"repobilityId": "26b083e58366e927", "scanner": "scanner-primary", "fingerprint": "742e8febd0a4080a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fa5c739914bf1c7b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fund-subscription.ts:22"}, "properties": {"repobilityId": "22e87d0f55fd73a7", "scanner": "scanner-primary", "fingerprint": "fa5c739914bf1c7b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-23368d7d8391efc0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-demo.ts:41"}, "properties": {"repobilityId": "a42019afcdf864ec", "scanner": "scanner-primary", "fingerprint": "23368d7d8391efc0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-68749b7d174a4292", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e-local.ts:29"}, "properties": {"repobilityId": "dc1dd52ab950b924", "scanner": "scanner-primary", "fingerprint": "68749b7d174a4292", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-182aca9ff26a5eac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/upload-secrets.ts:33"}, "properties": {"repobilityId": "9251c10724ed8bbe", "scanner": "scanner-primary", "fingerprint": "182aca9ff26a5eac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3866ad5552fbc4e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/redeploy-oracle.ts:25"}, "properties": {"repobilityId": "9bdbb99b44394f0c", "scanner": "scanner-primary", "fingerprint": "3866ad5552fbc4e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3cb649a01021fc85", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-router.ts:14"}, "properties": {"repobilityId": "82ee1dc578d90b2c", "scanner": "scanner-primary", "fingerprint": "3cb649a01021fc85", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-58638c2d89c00103", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-gas.ts:27"}, "properties": {"repobilityId": "048c3f8dc4ab15a4", "scanner": "scanner-primary", "fingerprint": "58638c2d89c00103", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b3cbecfac687299d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-balances.ts:14"}, "properties": {"repobilityId": "2089b5a0160d5359", "scanner": "scanner-primary", "fingerprint": "b3cbecfac687299d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c924f4cc19833dbf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/redeploy-both.ts:29"}, "properties": {"repobilityId": "dba4296c8b6623f3", "scanner": "scanner-primary", "fingerprint": "c924f4cc19833dbf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30af1de44346bc17", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-and-test.ts:7"}, "properties": {"repobilityId": "4bb285b7ef933c87", "scanner": "scanner-primary", "fingerprint": "30af1de44346bc17", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5e529bcb22eecb16", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-sepolia.ts:47"}, "properties": {"repobilityId": "80326d196ebe332a", "scanner": "scanner-primary", "fingerprint": "5e529bcb22eecb16", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-50026c5338d26bbb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy.ts:25"}, "properties": {"repobilityId": "981745a632ea4a14", "scanner": "scanner-primary", "fingerprint": "50026c5338d26bbb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd56d03508b5bcbf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-all.ts:16"}, "properties": {"repobilityId": "48467c015df40f7f", "scanner": "scanner-primary", "fingerprint": "bd56d03508b5bcbf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2e45bfa99297f3b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-subscription.ts:11"}, "properties": {"repobilityId": "c39176ecccc775d8", "scanner": "scanner-primary", "fingerprint": "b2e45bfa99297f3b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-155960ea42e52d5a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-coord.ts:9"}, "properties": {"repobilityId": "24183c9d524b9c62", "scanner": "scanner-primary", "fingerprint": "155960ea42e52d5a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a67e57b28c569e55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/decode-coord.ts:28"}, "properties": {"repobilityId": "6ab2d7f65e56ce42", "scanner": "scanner-primary", "fingerprint": "a67e57b28c569e55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-47450eb085bdcb4f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/demo-agent.ts:73"}, "properties": {"repobilityId": "f0d6039652bd3ab1", "scanner": "scanner-primary", "fingerprint": "47450eb085bdcb4f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17a14a28dae24906", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-arb-sepolia.ts:23"}, "properties": {"repobilityId": "ce2734470dfa11dc", "scanner": "scanner-primary", "fingerprint": "17a14a28dae24906", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8259c156416c0994", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-sub.ts:14"}, "properties": {"repobilityId": "6c4b144f3dad57fa", "scanner": "scanner-primary", "fingerprint": "8259c156416c0994", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1689f2877e0cc20b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/autonomous-agent.ts:126"}, "properties": {"repobilityId": "f266ba2bdbd6d642", "scanner": "scanner-primary", "fingerprint": "1689f2877e0cc20b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-83dd58918da21163", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup-e2e.ts:19"}, "properties": {"repobilityId": "706c815e0b2d9679", "scanner": "scanner-primary", "fingerprint": "83dd58918da21163", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9d0a190ccf72f48", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-compute-trail.ts:5"}, "properties": {"repobilityId": "cfda6496c4a15357", "scanner": "scanner-primary", "fingerprint": "b9d0a190ccf72f48", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-168d0d9df9bd83b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-submit.ts:15"}, "properties": {"repobilityId": "46374fbab934759a", "scanner": "scanner-primary", "fingerprint": "168d0d9df9bd83b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59eca8278df56986", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e-test.ts:25"}, "properties": {"repobilityId": "eab8ae8d617f0d3b", "scanner": "scanner-primary", "fingerprint": "59eca8278df56986", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-01d11d2a9629c402", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-local.ts:10"}, "properties": {"repobilityId": "e97e8551319c85d2", "scanner": "scanner-primary", "fingerprint": "01d11d2a9629c402", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-876dda043d336288", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup-arb-chainlink.ts:35"}, "properties": {"repobilityId": "e575e8dd31dd97be", "scanner": "scanner-primary", "fingerprint": "876dda043d336288", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40e54f696a09d0a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-oracle-im.ts:13"}, "properties": {"repobilityId": "3040fe9f556327ef", "scanner": "scanner-primary", "fingerprint": "40e54f696a09d0a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e56d8225fa392f4b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-gas-limit.ts:16"}, "properties": {"repobilityId": "068e881942bdf518", "scanner": "scanner-primary", "fingerprint": "e56d8225fa392f4b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-215ebb0be04d4cfc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/decode-config.ts:13"}, "properties": {"repobilityId": "6039c37f763a6652", "scanner": "scanner-primary", "fingerprint": "215ebb0be04d4cfc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2807d10484c19203", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-scoring-engine.ts:20"}, "properties": {"repobilityId": "37520e88e53e027d", "scanner": "scanner-primary", "fingerprint": "2807d10484c19203", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-39136e25c44d3e23", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-submit.ts:21"}, "properties": {"repobilityId": "77c1d909ff2f3677", "scanner": "scanner-primary", "fingerprint": "39136e25c44d3e23", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a697a7cd337052d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-stylus.ts:37"}, "properties": {"repobilityId": "f9cfe8aadd3c6571", "scanner": "scanner-primary", "fingerprint": "4a697a7cd337052d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0768f4ddda96e001", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rewire-oracle.ts:12"}, "properties": {"repobilityId": "66c653ca5b5baef2", "scanner": "scanner-primary", "fingerprint": "0768f4ddda96e001", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a84b53ff6fab0315", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/update-source.ts:12"}, "properties": {"repobilityId": "9d209f42525c1874", "scanner": "scanner-primary", "fingerprint": "a84b53ff6fab0315", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b8110dcb41acaed4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ProjectsSection.tsx:192"}, "properties": {"repobilityId": "92d7eab3066a3712", "scanner": "scanner-primary", "fingerprint": "b8110dcb41acaed4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6767ec5fba739bb0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/e2e/wallet-e2e.spec.ts:92"}, "properties": {"repobilityId": "9dc4ab16845974e7", "scanner": "scanner-primary", "fingerprint": "6767ec5fba739bb0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a125f48a2d85619", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test/FundToken.test.js:75"}, "properties": {"repobilityId": "d1b45bdbff603fb7", "scanner": "scanner-primary", "fingerprint": "3a125f48a2d85619", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-246d6ffa7d9cdd5d", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in chainlink/test-audit-source.js:114"}, "properties": {"repobilityId": "80d717d7db740806", "scanner": "scanner-primary", "fingerprint": "246d6ffa7d9cdd5d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "chainlink/test-audit-source.js"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-7fd6fc13057a2335", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in demo/07-vesting.html:230"}, "properties": {"repobilityId": "e5f8e45f92a6b437", "scanner": "scanner-primary", "fingerprint": "7fd6fc13057a2335", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "demo/07-vesting.html"}, "region": {"startLine": 230}}}]}, {"ruleId": "scanner-0f38cbc2d175cf7d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in demo/compositions/07-vesting.html:234"}, "properties": {"repobilityId": "2876be40f6a02270", "scanner": "scanner-primary", "fingerprint": "0f38cbc2d175cf7d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "demo/compositions/07-vesting.html"}, "region": {"startLine": 234}}}]}, {"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-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "53225022e8fadcb6", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-8983e5cad3bd8a20", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: demo/package.json"}, "properties": {"repobilityId": "2870c11d88ebcb15", "scanner": "scanner-primary", "fingerprint": "8983e5cad3bd8a20", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "demo/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "412fc485fa878614", "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": "04be579b7a332688", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "662b8276d1b373f7", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "54bd21ad245c418c", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "6520e8a7dc33c4b8", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "3ee4f5a96ad4216a", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b546fc7369cc0f2f", "level": "none", "message": {"text": "Commented-code block (6 lines) in chainlink/audit-source.js:10"}, "properties": {"repobilityId": "c908d5e26cd73cde", "scanner": "scanner-primary", "fingerprint": "b546fc7369cc0f2f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b1d72af6e077da21", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/hooks/useAuditStatus.ts:183"}, "properties": {"repobilityId": "898e2c12963be17b", "scanner": "scanner-primary", "fingerprint": "b1d72af6e077da21", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8be2705c8cda632", "level": "none", "message": {"text": "Commented-code block (23 lines) in frontend/hooks/useProjects.ts:88"}, "properties": {"repobilityId": "082778e1aa676f73", "scanner": "scanner-primary", "fingerprint": "c8be2705c8cda632", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-754ff7c92bf11811", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/e2e/wallet-e2e.spec.ts:41"}, "properties": {"repobilityId": "2dd33bbc28196531", "scanner": "scanner-primary", "fingerprint": "754ff7c92bf11811", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f0e1e7aa61c787ec", "level": "none", "message": {"text": "Commented-code block (6 lines) in test/OmniOracle.test.js:5"}, "properties": {"repobilityId": "676ee01a9fff0683", "scanner": "scanner-primary", "fingerprint": "f0e1e7aa61c787ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d6ffa20a9f1093b", "level": "note", "message": {"text": "24 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "880bbf29bf1f87e1", "scanner": "scanner-primary", "fingerprint": "2d6ffa20a9f1093b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}