{"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": "WEB003", "name": "Public web service has no security.txt", "shortDescription": {"text": "Public web service has no security.txt"}, "fullDescription": {"text": "Add /.well-known/security.txt with Contact, Expires, Canonical, Preferred-Languages, and Policy fields. Keep the contact endpoint monitored."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "medium", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "AUC001", "name": "[AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks but does not define .repobilit", "shortDescription": {"text": "[AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks but does not define .repobility/access.yml or equivalent authorization documentation."}, "fullDescription": {"text": "Add .repobility/access.yml mapping routes to anonymous, authenticated, owner, admin, and super_admin. Keep business-specific rules in the repo so CI can enforce them."}, "properties": {"scanner": "repobility-access-control", "category": "auth", "severity": "medium", "confidence": 0.92, "cwe": "", "owasp": ""}}, {"id": "DKR007", "name": "Docker build context has no .dockerignore", "shortDescription": {"text": "Docker build context has no .dockerignore"}, "fullDescription": {"text": "Add .dockerignore with at least .git, .env, private keys, dependency folders, build outputs, and local databases."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "medium", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "DKR009", "name": "Dockerfile separates apt update from install", "shortDescription": {"text": "Dockerfile separates apt update from install"}, "fullDescription": {"text": "Combine update and install in the same RUN instruction and clean package indexes in that layer."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "medium", "confidence": 0.86, "cwe": "", "owasp": ""}}, {"id": "AGT006", "name": "React interval is created without an explicit cleanup", "shortDescription": {"text": "React interval is created without an explicit cleanup"}, "fullDescription": {"text": "Store the interval id and return a useEffect cleanup that calls clearInterval. Also clear the interval in explicit stop/end handlers when relevant."}, "properties": {"scanner": "repobility-agent-runtime", "category": "quality", "severity": "medium", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "CFG006", "name": "[CFG006] Missing .gitignore: No .gitignore file. Risk of committing secrets and build artifacts.", "shortDescription": {"text": "[CFG006] Missing .gitignore: No .gitignore file. Risk of committing secrets and build artifacts."}, "fullDescription": {"text": "Add a .gitignore appropriate for your language/framework."}, "properties": {"scanner": "repobility-threat-engine", "category": "practices", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC031", "name": "[SEC031] Catastrophic Backtracking Regex (ReDoS): Regex contains nested quantifiers like `(a+)+` or quantified alternati", "shortDescription": {"text": "[SEC031] Catastrophic Backtracking Regex (ReDoS): Regex contains nested quantifiers like `(a+)+` or quantified alternation with overlapping branches. On adversarial input these patterns exhibit exponential backtracking, freezing the process"}, "fullDescription": {"text": "Three options, pick one:\n  1. Rewrite the pattern to avoid nested quantifiers. E.g. `(a+)+` is      functionally equivalent to `a+` for matching purposes.\n  2. Use Google's re2 (`pip install google-re2`): linear-time, drop-in      replacement for `re` for most use cases.\n  3. Set a hard timeout: `signal.alarm(1)` before regex eval.\nTest patterns against `safe-regex` or `redos-detector` before shipping."}, "properties": {"scanner": "repobility-threat-engine", "category": "redos", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC045", "name": "[SEC045] eval()/exec() on stored or user-supplied data: eval() and exec() on data \u2014 even admin-stored data \u2014 is a latera", "shortDescription": {"text": "[SEC045] eval()/exec() on stored or user-supplied data: eval() and exec() on data \u2014 even admin-stored data \u2014 is a lateral-movement vector after any one credential compromise. Sandboxes (__builtins__ cleared) are escapable: attackers use obj"}, "fullDescription": {"text": "For literal data structures: use ast.literal_eval(text) \u2014 only parses literals, raises on code.\nFor formula evaluation: use asteval or simpleeval (purpose-built sandboxes with allow-lists).\nFor Odoo: use odoo.tools.safe_eval(expr, locals_dict, mode='exec').\nIf you genuinely need to execute admin-stored code: require explicit super-admin permission AND log every execution with a stack trace."}, "properties": {"scanner": "repobility-threat-engine", "category": "injection", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC087", "name": "[SEC087] JS: weak Math.random for crypto: Math.random() is not cryptographically secure; using it for tokens/keys/nonces", "shortDescription": {"text": "[SEC087] JS: weak Math.random for crypto: Math.random() is not cryptographically secure; using it for tokens/keys/nonces is predictable. Ported from gosec G404 / eslint detect-pseudoRandomBytes concept (Apache-2.0)."}, "fullDescription": {"text": "Use `crypto.randomBytes(32).toString('hex')` (Node) or `crypto.getRandomValues()` (browser)."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "ERR002", "name": "[ERR002] Empty Catch Block: Empty catch blocks hide errors.", "shortDescription": {"text": "[ERR002] Empty Catch Block: Empty catch blocks hide errors."}, "fullDescription": {"text": "Log the error or rethrow it. Use console.error() at minimum."}, "properties": {"scanner": "repobility-threat-engine", "category": "error_handling", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "WEB005", "name": "robots.txt does not advertise a sitemap", "shortDescription": {"text": "robots.txt does not advertise a sitemap"}, "fullDescription": {"text": "Add `Sitemap: https://your-domain.example/sitemap.xml` to robots.txt."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "low", "confidence": 0.74, "cwe": "", "owasp": ""}}, {"id": "WEB011", "name": "Public web app has no humans.txt", "shortDescription": {"text": "Public web app has no humans.txt"}, "fullDescription": {"text": "Add humans.txt with team ownership, contact URL, key documentation links, and the last-updated date."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "low", "confidence": 0.5, "cwe": "", "owasp": ""}}, {"id": "WEB008", "name": "Public docs site has no llms.txt", "shortDescription": {"text": "Public docs site has no llms.txt"}, "fullDescription": {"text": "Add llms.txt with the product summary, canonical docs, API endpoints, security guidance, and preferred CLI workflow for AI agents."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "low", "confidence": 0.64, "cwe": "", "owasp": ""}}, {"id": "WEB002", "name": "Public web app has no sitemap", "shortDescription": {"text": "Public web app has no sitemap"}, "fullDescription": {"text": "Add sitemap.xml, a sitemap index, or a framework-native sitemap route and reference it from robots.txt."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "low", "confidence": 0.72, "cwe": "", "owasp": ""}}, {"id": "AIC003", "name": "Duplicated implementation block across source files", "shortDescription": {"text": "Duplicated implementation block across source files"}, "fullDescription": {"text": "Extract the shared behavior into one function/module or delete the inactive duplicate after proving which path is used."}, "properties": {"scanner": "repobility-ai-code-hygiene", "category": "quality", "severity": "low", "confidence": 0.86, "cwe": "", "owasp": ""}}, {"id": "SEC083", "name": "[SEC083] JS: new RegExp() with non-literal (and 5 more): Same pattern found in 5 additional files. Review if needed.", "shortDescription": {"text": "[SEC083] JS: new RegExp() with non-literal (and 5 more): Same pattern found in 5 additional files. Review if needed."}, "fullDescription": {"text": "Use a literal RegExp or whitelist-validate user input before constructing patterns."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED053", "name": "[MINED053] Placeholder Default Username: foo@bar.com / john.doe@example.com / admin/admin / changeme \u2014 typical AI placeh", "shortDescription": {"text": "[MINED053] Placeholder Default Username: foo@bar.com / john.doe@example.com / admin/admin / changeme \u2014 typical AI placeholder credentials."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-1392,CWE-798 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED043", "name": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data.", "shortDescription": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-319 / A02:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC118", "name": "[SEC118] UUIDv1 / UUIDv3 used for security-sensitive identifier: UUIDv1 encodes the MAC address and timestamp, making it", "shortDescription": {"text": "[SEC118] UUIDv1 / UUIDv3 used for security-sensitive identifier: UUIDv1 encodes the MAC address and timestamp, making it predictable. Used as a session token or password-reset key, it's enumerable."}, "fullDescription": {"text": "Use `uuid.uuid4()` (random) or `secrets.token_urlsafe()` for tokens. In Go, use `uuid.NewRandom()` (google/uuid)."}, "properties": {"scanner": "repobility-threat-engine", "category": "crypto", "severity": "info", "confidence": 0.1, "cwe": "", "owasp": ""}}, {"id": "MINED054", "name": "[MINED054] Ts As Any: Casting to any (as any) bypasses type checking entirely.", "shortDescription": {"text": "[MINED054] Ts As Any: Casting to any (as any) bypasses type checking entirely."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-704 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED052", "name": "[MINED052] Ts Any Typed (and 6 more): Same pattern found in 6 additional files. Review if needed.", "shortDescription": {"text": "[MINED052] Ts Any Typed (and 6 more): Same pattern found in 6 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-704 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED045", "name": "[MINED045] Ts Non Null Assertion (and 6 more): Same pattern found in 6 additional files. Review if needed.", "shortDescription": {"text": "[MINED045] Ts Non Null Assertion (and 6 more): Same pattern found in 6 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-476 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED044", "name": "[MINED044] Js Console Log Prod (and 6 more): Same pattern found in 6 additional files. Review if needed.", "shortDescription": {"text": "[MINED044] Js Console Log Prod (and 6 more): Same pattern found in 6 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-532 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "SEC128", "name": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake) (and 13 more): Same pattern found in 13 add", "shortDescription": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake) (and 13 more): Same pattern found in 13 additional files. Review if needed."}, "fullDescription": {"text": "Add `await` before each async call, or chain with `.then`. If you intentionally want fire-and-forget, prefix with `void` (TS) or assign to `_` (Python with `asyncio.create_task`) to make the intent explicit and survive lint."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "SEC029", "name": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 15 more): Same pattern found in 15 addi", "shortDescription": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 15 more): Same pattern found in 15 additional files. Review if needed."}, "fullDescription": {"text": "Validate the URL against an allowlist BEFORE fetching:\n  ALLOWED = {'images.example.com', 'cdn.example.com'}\n  host = urlparse(url).hostname\n  if host not in ALLOWED: abort(400)\nOr use a server-side proxy (Imgproxy / serve-files-only-from-S3) that isolates outbound network access from the request handler.\nBlock private CIDRs explicitly: 10/8, 172.16/12, 192.168/16, 169.254/16."}, "properties": {"scanner": "repobility-threat-engine", "category": "ssrf", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "SEC040", "name": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data (and 1 more): Same pattern found in 1 additional fil", "shortDescription": {"text": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "fullDescription": {"text": "For plain text: use el.textContent = data.value (auto-escapes).\nFor HTML you need to render: el.innerHTML = DOMPurify.sanitize(html).\nFor React/Vue/Svelte: stop using innerHTML; use the framework's binding.\nWhen data comes from CV/PDF parsers, sanitize at the parser boundary too."}, "properties": {"scanner": "repobility-threat-engine", "category": "xss", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED115", "name": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run t", "shortDescription": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) in"}, "fullDescription": {"text": "Replace with: `uses: actions/checkout@<40-char-sha>  # v6` and let Dependabot bump it on a scheduled cadence."}, "properties": {"scanner": "repobility-supply-chain", "category": "dependency", "severity": "high", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "MINED118", "name": "[MINED118] Dockerfile FROM `node:24-trixie-slim` not pinned by digest: `FROM node:24-trixie-slim` resolves the tag at bu", "shortDescription": {"text": "[MINED118] Dockerfile FROM `node:24-trixie-slim` not pinned by digest: `FROM node:24-trixie-slim` resolves the tag at build time. The registry CAN re-push a different image for the same tag, so every build is potentially different. Producti"}, "fullDescription": {"text": "Replace with: `FROM node:24-trixie-slim@sha256:<digest>`. Get the digest from `docker manifest inspect`. Re-pin via a scheduled bot (Renovate, Dependabot)."}, "properties": {"scanner": "repobility-supply-chain", "category": "dependency", "severity": "high", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "JRN004", "name": "Consent is collected in UI without visible backend audit persistence", "shortDescription": {"text": "Consent is collected in UI without visible backend audit persistence"}, "fullDescription": {"text": "Persist consent as a backend record with subject, actor, purpose, scope, legal text version, timestamp, IP address, user agent, and revocation state."}, "properties": {"scanner": "repobility-journey-contract", "category": "auth", "severity": "high", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "DKR014", "name": "Dockerfile copies the entire context without .dockerignore", "shortDescription": {"text": "Dockerfile copies the entire context without .dockerignore"}, "fullDescription": {"text": "Create .dockerignore before using broad context copies, or copy only the required files and directories."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "high", "confidence": 0.92, "cwe": "", "owasp": ""}}, {"id": "SEC085", "name": "[SEC085] JS: child_process.exec with non-literal: child_process.exec with user-derived input enables command injection. ", "shortDescription": {"text": "[SEC085] JS: child_process.exec with non-literal: child_process.exec with user-derived input enables command injection. Ported from eslint-plugin-security detect-child-process (Apache-2.0)."}, "fullDescription": {"text": "Use execFile / spawn with separate args array; never pass shell strings."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED116", "name": "[MINED116] Workflow uses `secrets.SONAR_HOST_URL` on a `pull_request` trigger: This workflow triggers on `pull_request`,", "shortDescription": {"text": "[MINED116] Workflow uses `secrets.SONAR_HOST_URL` on a `pull_request` trigger: This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.SONAR_HOST_URL }` lets a PR from any fork exfiltrate the secr"}, "fullDescription": {"text": "Either remove the secret reference, or switch the trigger to `pull_request_target` AND ensure no fork-controlled code runs before the secret is consumed."}, "properties": {"scanner": "repobility-supply-chain", "category": "dependency", "severity": "critical", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "JRN001", "name": "Token handoff appears to use a callback URL or fragment", "shortDescription": {"text": "Token handoff appears to use a callback URL or fragment"}, "fullDescription": {"text": "Use a server-side one-time authorization code tied to a registered callback allowlist. Do not append access tokens to callback URLs or fragments."}, "properties": {"scanner": "repobility-journey-contract", "category": "auth", "severity": "critical", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "scanner-34880db050e1ee34", "name": "Possibly dead Python function: bridge", "shortDescription": {"text": "Possibly dead Python function: bridge"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4471264ad3dc2b76", "name": "Possibly dead Python function: pipe", "shortDescription": {"text": "Possibly dead Python function: pipe"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02702249c7fbdbb1", "name": "TODO/FIXME marker in shipping code \u2014 open-sse/services/rateLimitManager.ts:521", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 open-sse/services/rateLimitManager.ts:521"}, "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": 0.7}}, {"id": "scanner-388df324789223b3", "name": "Debug `console.log` remains in browser-facing code \u2014 open-sse/services/batchProcessor.ts:48", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 open-sse/services/batchProcessor.ts:48"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-7aa4d9c03e7fbc92", "name": "TODO/FIXME marker in shipping code \u2014 tests/unit/t3-chat-web.test.ts:11", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 tests/unit/t3-chat-web.test.ts:11"}, "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": 0.7}}, {"id": "scanner-cdec911bcff7ab56", "name": "TODO/FIXME marker in shipping code \u2014 tests/unit/check-test-discovery.test.ts:2", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 tests/unit/check-test-discovery.test.ts:2"}, "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": 0.7}}, {"id": "scanner-99de015baaa57b9f", "name": "Custom React Flow node registered without explicit width/height \u2014 tests/unit/ui/providerCascadeNode.test.tsx:70", "shortDescription": {"text": "Custom React Flow node registered without explicit width/height \u2014 tests/unit/ui/providerCascadeNode.test.tsx:70"}, "fullDescription": {"text": "When you register a custom node type via `nodeTypes`, the RFNode object you build must include `width` and `height` props. Without them, MiniMap renders ZERO mini-nodes for that type and `fitView` underestimates the bounds (cuts off lane labels, etc.). Add `width: \u2026, height: \u2026` to the node object. See P-I.\n\nWhy: P-I in CHECKLIST.md \u2014 RF MiniMap + fitView need explicit dims on custom nodes.\nRule id: fq.rfnode.no-dims"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-452c06ea175f5c95", "name": "Debug `console.log` remains in browser-facing code \u2014 src/shared/utils/machineId.ts:176", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/shared/utils/machineId.ts:176"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-d51e1845a898f1c4", "name": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/CommandPalette.tsx:320", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/CommandPalette.tsx:320"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-96ef76fb938df6ec", "name": "Icon-only button without accessible name \u2014 src/shared/components/PricingModal.tsx:104", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/shared/components/PricingModal.tsx:104"}, "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": 0.85}}, {"id": "scanner-1b2ee553db0eeeed", "name": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/NoAuthAccountCard.tsx:406", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/NoAuthAccountCard.tsx:406"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-44a327d6574faea1", "name": "Debug `console.log` remains in browser-facing code \u2014 src/shared/components/OAuthModal.tsx:733", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/shared/components/OAuthModal.tsx:733"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-4d5e74e22ac91c1c", "name": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/Sidebar.tsx:401", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/Sidebar.tsx:401"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-1abc9bc4a9d678d9", "name": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/ModelRoutingSection.tsx:304", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/ModelRoutingSection.tsx:304"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-a7f766b97be37b78", "name": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/CollapsibleSection.tsx:39", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/CollapsibleSection.tsx:39"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-95a322fb1e69d5bd", "name": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/Collapsible.tsx:84", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/Collapsible.tsx:84"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-819f402c2c1ca792", "name": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/analytics/charts.tsx:64", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/analytics/charts.tsx:64"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-bdb5fe1ad1781f00", "name": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/analytics/ApiKeyFilterDropdown.tsx:190", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/analytics/ApiKeyFilterDropdown.tsx:190"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-83ffb5dd778516ae", "name": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/docs/DocsSidebar.tsx:68", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/docs/DocsSidebar.tsx:68"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-22f1871e3a98c806", "name": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/cli/CliToolCard.tsx:59", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/cli/CliToolCard.tsx:59"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-b8499727167c79ee", "name": "React Flow <Controls> without dark theming \u2014 src/shared/components/flow/FlowCanvas.tsx:145", "shortDescription": {"text": "React Flow <Controls> without dark theming \u2014 src/shared/components/flow/FlowCanvas.tsx:145"}, "fullDescription": {"text": "`<Controls>` ships with white buttons. Override `.react-flow__controls` and `.react-flow__controls-button` in your stylesheet or pass a styled wrapper.\n\nWhy: P1 in CHECKLIST.md \u2014 vendor defaults bleed light through.\nRule id: fq.controls.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-fd33404fcf6ade2b", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:71", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:71"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 0.8}}, {"id": "scanner-2731a458d9904736", "name": "Debug `console.log` remains in browser-facing code \u2014 src/app/api/providers/client/route.ts:17", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/api/providers/client/route.ts:17"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-385b19c2a742c4fe", "name": "Debug `console.log` remains in browser-facing code \u2014 src/app/api/providers/[id]/route.ts:88", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/api/providers/[id]/route.ts:88"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-849b95d761769c36", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/HomePageClient.tsx:849", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/HomePageClient.tsx:849"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-f8303f784976eb98", "name": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/HomePageClient.tsx:273", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/HomePageClient.tsx:273"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-4c6a0aa279386b69", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/BackgroundD", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/BackgroundDegradationTab.tsx:185"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-c8290f243a3e53d7", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/SidebarTab.", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/SidebarTab.tsx:268"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-cf45c7eaaa4b4daa", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/ModelAliase", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/ModelAliasesTab.tsx:136"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-5223315a6e5c15fe", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/ComplianceT", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/ComplianceTab.tsx:83"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-1df64275fec9a6f9", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/FallbackCha", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/FallbackChainsEditor.tsx:182"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-6bfca72817d2d411", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/ModelCapabi", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/ModelCapabilityOverridesTab.tsx:296"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-d9d5581c42db8aec", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/FeatureFlag", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/FeatureFlagCard.tsx:168"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-1584eb3ed0e1d02b", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/SystemStora", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/SystemStorageTab.tsx:842"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-4be370a7b511645c", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/IPFilterSec", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/IPFilterSection.tsx:223"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-4b3fdfc65ea7ae5b", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/ModelAliase", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/ModelAliasesUnified.tsx:287"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-cb24de7dffac7014", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/PricingTab.", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/PricingTab.tsx:723"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-0f6d1765d3844c86", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/SessionInfo", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/SessionInfoCard.tsx:138"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-860861ba2bb5b52b", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/CodexAutoPi", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/CodexAutoPingTab.tsx:129"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-680e6353bb4f9531", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/proxy/Globa", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/proxy/GlobalConfigTab.tsx:251"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-321751d1c05decf3", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/proxy/Subsc", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/proxy/SubscriptionTab.tsx:419"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-3635873d0f8de487", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/search-tools/components/ScrapeR", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/search-tools/components/ScrapeResult.tsx:102"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-87ee69ba87dc6240", "name": "Icon-only button without accessible name \u2014 src/app/(dashboard)/dashboard/search-tools/components/ProviderComparison.tsx:", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/(dashboard)/dashboard/search-tools/components/ProviderComparison.tsx:75"}, "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": 0.85}}, {"id": "scanner-d5439f2c79ce6eee", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/search-tools/components/SearchH", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/search-tools/components/SearchHistory.tsx:58"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-17841548817d51e1", "name": "Icon-only button without accessible name \u2014 src/app/(dashboard)/dashboard/search-tools/components/RerankPanel.tsx:99", "shortDescription": {"text": "Icon-only button without accessible name \u2014 src/app/(dashboard)/dashboard/search-tools/components/RerankPanel.tsx:99"}, "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": 0.85}}, {"id": "scanner-87c25fa09e90f3c8", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/search-tools/components/tabs/Co", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/search-tools/components/tabs/CompareTab.tsx:326"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-ea3a0d32766200c7", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/batch/FileDetailModal.tsx:212", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/batch/FileDetailModal.tsx:212"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-996723b174d65398", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/batch/BatchDetailModal.tsx:334", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/batch/BatchDetailModal.tsx:334"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-25b3618fd500ff9e", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/batch/components/wizard/CsvMapp", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/batch/components/wizard/CsvMappingStep.tsx:142"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-2568d53de341fa73", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/translator/components/advanced/", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/translator/components/advanced/PipelineView.tsx:255"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-391124823cd1bb9a", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/translator/components/advanced/", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/translator/components/advanced/StreamTransformerAccordion.tsx:259"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-e79d67ea99445126", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/translator/components/advanced/", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/translator/components/advanced/CompressionPreviewAccordion.tsx:280"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-9f53475e59d2dec3", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/playground/components/ToolsBuil", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/playground/components/ToolsBuilder.tsx:133"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-bbfc3a8f185abe46", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/compression/studio/CompressionC", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/compression/studio/CompressionCockpit.tsx:185"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-955dd569aa36c2c8", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/usage/components/BudgetTab.tsx:", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/usage/components/BudgetTab.tsx:673"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-8dfcbac5ef9b5eea", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx:1", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx:1158"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-e20244afc49bd20d", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/usage/components/ProviderLimits", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/usage/components/ProviderLimits/ProviderUsdCostModal.tsx:263"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-e55c50b374bc1f68", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/usage/components/ProviderLimits", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/usage/components/ProviderLimits/parts/QuotaCardBody.tsx:50"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-1ba62c0642d597d9", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/usage/components/ProviderLimits", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/usage/components/ProviderLimits/parts/QuotaCardExpanded.tsx:120"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-60489703e1a4f047", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClien", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx:1078"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-1ee71166019390a2", "name": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx:", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx:384"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-e64ecf7c0248bd3e", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/analytics/RouteExplainabilityTa", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/analytics/RouteExplainabilityTab.tsx:235"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-613b3949747cbeb8", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/analytics/ComboHealthTab.tsx:12", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/analytics/ComboHealthTab.tsx:123"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-6ca4543f31691102", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/analytics/components/DiversityS", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/analytics/components/DiversityScoreCard.tsx:165"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-0aba4014a42f1264", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/free-provider-rankings/page.tsx", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/free-provider-rankings/page.tsx:234"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-43f622b5067200b3", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/health/ProviderHealthMatrixCard", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/health/ProviderHealthMatrixCard.tsx:444"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-0bb2fa57ae822781", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/health/page.tsx:490", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/health/page.tsx:490"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-5c60c5ca55bb1af4", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/activity/components/ActivityIte", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/activity/components/ActivityItem.tsx:48"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-db1b7c86ef8671d5", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx:1310"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-2a1b85e49a178d19", "name": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx:128", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx:128"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-a4ebae0143bc9dc6", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/endpoint/ApiEndpointsTab.tsx:52", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/endpoint/ApiEndpointsTab.tsx:524"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-ea6dfe5524da4307", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/endpoint/VscodeTokenAliasCard.t", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/endpoint/VscodeTokenAliasCard.tsx:202"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-770e15e86c6d2b02", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/endpoint/components/ObsidianSou", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/endpoint/components/ObsidianSourceCard.tsx:344"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-7f4ff566c647ebef", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/media-providers/components/Play", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/media-providers/components/PlaygroundCard.tsx:76"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-ef8ee946d2657d72", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/media-providers/components/WebS", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/media-providers/components/WebSearchExampleCard.tsx:48"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-7bf66476e1557aa6", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/media-providers/[kind]/page.tsx", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/media-providers/[kind]/page.tsx:82"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-ec473775ca26e97a", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/media-providers/[kind]/[id]/Med", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/media-providers/[kind]/[id]/MediaProviderPageClient.tsx:186"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-9059d708278abc6a", "name": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/providers/page.tsx:256", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/providers/page.tsx:256"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-ce64bf6d0593bc62", "name": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/providers/components/AddCompatiblePro", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/providers/components/AddCompatibleProviderModal.tsx:211"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-38805b8f9485af26", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/components/ProviderCa", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/components/ProviderCard.tsx:414"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-25c13a160c8462c4", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/components/NoAuthProv", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/components/NoAuthProvidersSection.tsx:136"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-83ab54073d2c558b", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/[id]/components/Conne", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/[id]/components/ConnectionRow.tsx:552"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-6599ab941ca55717", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/[id]/components/Custo", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/[id]/components/CustomModelsSection.tsx:479"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-617282ccbdbde8d1", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/[id]/components/NoAut", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/[id]/components/NoAuthProviderControls.tsx:110"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-ea96d50b44ce563b", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/[id]/components/modal", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/[id]/components/modals/ImportCodexAuthModal.tsx:573"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-97948c971faffad6", "name": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelImportHa", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelImportHandlers.ts:249"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-c4ec29c5ed3875d1", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/services/components/A", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/services/components/ApiKeyField.tsx:108"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-ef0c119247b09471", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/services/components/S", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/services/components/ServiceStatusCard.tsx:67"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-abd60ea40020263d", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/services/components/N", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/services/components/NinerouterModelList.tsx:130"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-91b3f58800ac24b3", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/audit/ComplianceTab.tsx:347", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/audit/ComplianceTab.tsx:347"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-1394b2b8b1b1deeb", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/audit/McpAuditTab.tsx:158", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/audit/McpAuditTab.tsx:158"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-59939846fa19d6d8", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cache/components/CacheTrends.ts", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cache/components/CacheTrends.tsx:114"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-3673bea5ec55f394", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/leaderboard/page.tsx:155", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/leaderboard/page.tsx:155"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-d6f060b80c706b8a", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/tokens/page.tsx:563", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/tokens/page.tsx:563"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-8788e197e119a8c1", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/agent-skills/components/SkillPr", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/agent-skills/components/SkillPreviewPane.tsx:78"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-b7d4bdd7b0e70b67", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/agent-skills/components/McpA2aL", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/agent-skills/components/McpA2aLinksBar.tsx:61"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-959d2caa7bfcc453", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/memory/components/QdrantConfigC", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/memory/components/QdrantConfigCard.tsx:397"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-44f5c9c7b703bcdf", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/memory/components/RetrievePrevi", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/memory/components/RetrievePreview.tsx:77"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-f710b280997f56ab", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/memory/components/tabs/Memories", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/memory/components/tabs/MemoriesTab.tsx:486"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-fe96f9783cb1e512", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/runtime/RuntimePageClient.tsx:6", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/runtime/RuntimePageClient.tsx:682"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-a7907c758bb6bd2a", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/runtime/components/ModelCooldow", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/runtime/components/ModelCooldownsCard.tsx:132"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-6635beae72119e98", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/Antigravity", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/AntigravityToolCard.tsx:294"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-39ca34d37bda7e58", "name": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/AntigravityToolCa", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/AntigravityToolCard.tsx:79"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-f08c641f185754c2", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/Cliproxyapi", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/CliproxyapiToolCard.tsx:128"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-4ba2d352680abcbb", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/DroidToolCa", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/DroidToolCard.tsx:322"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-cc4fd7c9f233c3cc", "name": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/DroidToolCard.tsx", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/DroidToolCard.tsx:89"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-2f3a79797ced4c22", "name": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/ToolDetailClient.", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/ToolDetailClient.tsx:48"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-e7890e9c6f907811", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/ClaudeToolC", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/ClaudeToolCard.tsx:301"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-67df3689536f6c8b", "name": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/ClaudeToolCard.ts", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/ClaudeToolCard.tsx:87"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-b69129d83db421f9", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/DefaultTool", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/DefaultToolCard.tsx:545"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-37d61120332a0bfd", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/OpenClawToo", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/OpenClawToolCard.tsx:305"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-d5b2d594aa09eb66", "name": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/OpenClawToolCard.", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/OpenClawToolCard.tsx:81"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-9f2ab1c9ce8b47e6", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/ClineToolCa", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/ClineToolCard.tsx:255"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-dc706202fd3a5983", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/KiloToolCar", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/KiloToolCard.tsx:257"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-60a88d0207c73c8b", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/CodexToolCa", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/CodexToolCard.tsx:411"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-5ef464c045009a59", "name": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/CodexToolCard.tsx", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/CodexToolCard.tsx:75"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-d36cd2e039031e8a", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/HermesAgent", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/HermesAgentToolCard.tsx:330"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-f8651bcc9d13022c", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/CopilotTool", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/CopilotToolCard.tsx:198"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-4f08fce771cf2a05", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/CustomCliCa", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/CustomCliCard.tsx:135"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-cc7d6c4302f7c7f0", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/tools/traffic-inspector/compone", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/tools/traffic-inspector/components/RequestRow.tsx:83"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-d50ad140efe3d44d", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/tools/traffic-inspector/compone", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/tools/traffic-inspector/components/session/SessionRecorderBar.tsx:45"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-89711f45464d518b", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/tools/agent-bridge/components/A", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentCard.tsx:128"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-74bc115f08131eeb", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/profile/page.tsx:268", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/profile/page.tsx:268"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-cc811491ec4fe674", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/context/rtk/RtkLearnDiscoverCar", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/context/rtk/RtkLearnDiscoverCard.tsx:122"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-3454df6d045c5774", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/context/combos/CompressionCombo", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/context/combos/CompressionCombosPageClient.tsx:264"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-8b4dcc9d7388efba", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/CostOverviewTab.tsx:1069", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/CostOverviewTab.tsx:1069"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-47a36f6106e6223a", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/components/TopListCard.ts", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/components/TopListCard.tsx:45"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-8d61eb4b245f0ba0", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/components/CostCharts.tsx", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/components/CostCharts.tsx:107"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-b40ee5ff26740d82", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/components/ApiKeyUsageLim", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/components/ApiKeyUsageLimitCard.tsx:134"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-b2a01887d78b5d89", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/Po", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/PoolCard.tsx:106"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-74ec14495fd3c921", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/Al", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/AllocationTable.tsx:70"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-e9554e87014615ea", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/Po", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/PoolWizard.tsx:598"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-a4f139019f48af1f", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/Us", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/UsageLogCard.tsx:101"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-57eb226d3c6b0fa8", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/omni-skills/components/OmniSkil", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/omni-skills/components/OmniSkillCard.tsx:65"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-6f46b3504d701866", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/webhooks/components/WebhookCard", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/webhooks/components/WebhookCard.tsx:75"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-3e2cf0bf0a919ae5", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/combos/ComboControlCenterClient", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/combos/ComboControlCenterClient.tsx:163"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-641ae79a219bbb96", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/combos/page.tsx:1636", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/combos/page.tsx:1636"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-560b646892065b29", "name": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/combos/page.tsx:784", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/combos/page.tsx:784"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-ff0341baa8f62472", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/combos/live/ComboLiveStudio.tsx", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/combos/live/ComboLiveStudio.tsx:307"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-cbfa4da04941f4a7", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/combos/live/nodes/StrategyNode.", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/combos/live/nodes/StrategyNode.tsx:72"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-9c420e1db2d1c629", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/home/ProviderTopology.tsx:96", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/home/ProviderTopology.tsx:96"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-4b49f5f0bf3a26c2", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/home/ProviderQuotaWidget.tsx:268", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/home/ProviderQuotaWidget.tsx:268"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-06a2ce830fbef686", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/docs/[...slug]/page.tsx:85", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/docs/[...slug]/page.tsx:85"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 0.8}}, {"id": "scanner-5e62abe3c8dc1011", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/docs/components/ApiExplorerClient.tsx:192", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/docs/components/ApiExplorerClient.tsx:192"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-8a59e41bbee4287f", "name": "Debug `console.log` remains in browser-facing code \u2014 src/app/callback/page.tsx:78", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/callback/page.tsx:78"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-2925271099500507", "name": "Truncated text has no discoverable full-value affordance \u2014 src/app/landing/components/Navigation.tsx:26", "shortDescription": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/landing/components/Navigation.tsx:26"}, "fullDescription": {"text": "A visibly truncated value should expose its full text through an accessible tooltip, description, or equivalent interaction. Native `title=` is one option, but it is not the only valid implementation.\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": 0.65}}, {"id": "scanner-485e75aacca03b97", "name": "TODO/FIXME marker in shipping code \u2014 src/lib/db/playgroundPresets.ts:14", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/db/playgroundPresets.ts:14"}, "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": 0.7}}, {"id": "scanner-6a292a0900735af4", "name": "detect child process \u2014 open-sse/services/qoderCli.ts:138", "shortDescription": {"text": "detect child process \u2014 open-sse/services/qoderCli.ts:138"}, "fullDescription": {"text": "Detected calls to child_process from a function argument `options`. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed.\n\nRule: javascript.lang.security.detect-child-process.detect-child-process\nSeverity: ERROR\nOWASP: A01:2017 - Injection, A03:2021 - Injection, A05:2025 - Injection\nCWE: CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')\nCategory: security\nContext: production"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.55}}, {"id": "scanner-54306b96907d2c51", "name": "detect child process \u2014 scripts/ad-hoc/resolve_all_conflicts.js:28", "shortDescription": {"text": "detect child process \u2014 scripts/ad-hoc/resolve_all_conflicts.js:28"}, "fullDescription": {"text": "Detected calls to child_process from a function argument `cmd`. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed.\n\nRule: javascript.lang.security.detect-child-process.detect-child-process\nSeverity: ERROR\nOWASP: A01:2017 - Injection, A03:2021 - Injection, A05:2025 - Injection\nCWE: CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')\nCategory: security\nContext: production"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.55}}, {"id": "scanner-fdcc61381ee76273", "name": "detect child process \u2014 scripts/dev/system-info.mjs:30", "shortDescription": {"text": "detect child process \u2014 scripts/dev/system-info.mjs:30"}, "fullDescription": {"text": "Detected calls to child_process from a function argument `cmd`. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed.\n\nRule: javascript.lang.security.detect-child-process.detect-child-process\nSeverity: ERROR\nOWASP: A01:2017 - Injection, A03:2021 - Injection, A05:2025 - Injection\nCWE: CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')\nCategory: security\nContext: production"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.55}}, {"id": "scanner-182491909fdea175", "name": "dynamic urllib use detected \u2014 scripts/i18n/i18n_autotranslate.py:86", "shortDescription": {"text": "dynamic urllib use detected \u2014 scripts/i18n/i18n_autotranslate.py:86"}, "fullDescription": {"text": "Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control the URLs, or consider using the 'requests' library instead.\n\nRule: python.lang.security.audit.dynamic-urllib-use-detected.dynamic-urllib-use-detected\nSeverity: WARNING\nOWASP: A01:2017 - Injection\nCWE: CWE-939: Improper Authorization in Handler for Custom URL Scheme\nCategory: security\nContext: production"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.55}}, {"id": "scanner-7c99601f9a309cbb", "name": "react dangerouslysetinnerhtml \u2014 src/app/docs/[...slug]/page.tsx:85", "shortDescription": {"text": "react dangerouslysetinnerhtml \u2014 src/app/docs/[...slug]/page.tsx:85"}, "fullDescription": {"text": "Detection of dangerouslySetInnerHTML from non-constant definition. This can inadvertently expose users to cross-site scripting (XSS) attacks if this comes from user-provided input. If you have to use dangerouslySetInnerHTML, consider using a sanitization library such as DOMPurify to sanitize your HTML.\n\nRule: typescript.react.security.audit.react-dangerouslysetinnerhtml.react-dangerouslysetinnerhtml\nSeverity: WARNING\nOWASP: A07:2017 - Cross-Site Scripting (XSS), A03:2021 - Injection, A05:2025 - Injection\nCWE: CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')\nCategory: security\nContext: production"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.7}}, {"id": "scanner-8f522db215ace660", "name": "react insecure request \u2014 src/lib/memory/retrieval.ts:167", "shortDescription": {"text": "react insecure request \u2014 src/lib/memory/retrieval.ts:167"}, "fullDescription": {"text": "Unencrypted request over HTTP detected.\n\nRule: typescript.react.security.react-insecure-request.react-insecure-request\nSeverity: ERROR\nOWASP: A03:2017 - Sensitive Data Exposure, A02:2021 - Cryptographic Failures, A04:2025 - Cryptographic Failures\nCWE: CWE-319: Cleartext Transmission of Sensitive Information\nCategory: security\nContext: production"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.75}}, {"id": "scanner-51ad3f511f11f7d4", "name": "detect child process \u2014 src/lib/skills/containerProvider.ts:74", "shortDescription": {"text": "detect child process \u2014 src/lib/skills/containerProvider.ts:74"}, "fullDescription": {"text": "Detected calls to child_process from a function argument `binary`. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed.\n\nRule: javascript.lang.security.detect-child-process.detect-child-process\nSeverity: ERROR\nOWASP: A01:2017 - Injection, A03:2021 - Injection, A05:2025 - Injection\nCWE: CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')\nCategory: security\nContext: production"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.55}}, {"id": "scanner-9343c5776b3a31b6", "name": "detect child process \u2014 src/lib/skills/sandbox.ts:80", "shortDescription": {"text": "detect child process \u2014 src/lib/skills/sandbox.ts:80"}, "fullDescription": {"text": "Detected calls to child_process from a function argument `command`. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed.\n\nRule: javascript.lang.security.detect-child-process.detect-child-process\nSeverity: ERROR\nOWASP: A01:2017 - Injection, A03:2021 - Injection, A05:2025 - Injection\nCWE: CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')\nCategory: security\nContext: production"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.55}}, {"id": "scanner-46761954aeb4b2a5", "name": "detect child process \u2014 src/lib/versionManager/processManager.ts:67", "shortDescription": {"text": "detect child process \u2014 src/lib/versionManager/processManager.ts:67"}, "fullDescription": {"text": "Detected calls to child_process from a function argument `binaryPath`. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed.\n\nRule: javascript.lang.security.detect-child-process.detect-child-process\nSeverity: ERROR\nOWASP: A01:2017 - Injection, A03:2021 - Injection, A05:2025 - Injection\nCWE: CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')\nCategory: security\nContext: production"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.55}}, {"id": "scanner-62cc303f3151dd5e", "name": "detect child process \u2014 src/shared/services/cliRuntime.ts:334", "shortDescription": {"text": "detect child process \u2014 src/shared/services/cliRuntime.ts:334"}, "fullDescription": {"text": "Detected calls to child_process from a function argument `command`. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed.\n\nRule: javascript.lang.security.detect-child-process.detect-child-process\nSeverity: ERROR\nOWASP: A01:2017 - Injection, A03:2021 - Injection, A05:2025 - Injection\nCWE: CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')\nCategory: security\nContext: production"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.55}}, {"id": "scanner-382e4c9b06555799", "name": "CVE-2026-59877: protobufjs 7.6.4 \u2014 package-lock.json", "shortDescription": {"text": "CVE-2026-59877: protobufjs 7.6.4 \u2014 package-lock.json"}, "fullDescription": {"text": "protobufjs: protobufjs: Denial of Service via crafted .proto schema\n\nprotobufjs compiles protobuf definitions into JavaScript (JS) functions. Prior to 7.6.5 and 8.6.6, protobufjs parsed option names by advancing through schema tokens until reaching an = token without checking for end of input, so a crafted .proto schema that opens an option declaration and ends prematurely can cause parse, Root.load, or Root.loadSync to loop indefinitely. This issue is fixed in versions 7.6.5 and 8.6.6.\n\nPackage: protobufjs\nInstalled: 7.6.4\nFixed in: 7.6.5, 8.6.6\nSeverity: MEDIUM\nFix: Upgrade protobufjs to 7.6.5, 8.6.6"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-20594ff327d8fc59", "name": "DS-0017: 'RUN <package-manager> update' instruction alone \u2014 Dockerfile", "shortDescription": {"text": "DS-0017: 'RUN <package-manager> update' instruction alone \u2014 Dockerfile"}, "fullDescription": {"text": "'RUN <package-manager> update' instruction alone\n\nThe instruction 'RUN <package-manager> update' should always be followed by '<package-manager> install' in the same RUN statement.\n\nRule: DS-0017\nSeverity: HIGH\nTarget: Dockerfile"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8226fa9ac64fc2c6", "name": "DS-0001: ':latest' tag used \u2014 docker/vnc-browser/chromium/Dockerfile", "shortDescription": {"text": "DS-0001: ':latest' tag used \u2014 docker/vnc-browser/chromium/Dockerfile"}, "fullDescription": {"text": "':latest' tag used\n\nSpecify a tag in the 'FROM' statement for image 'linuxserver/chromium'\n\nRule: DS-0001\nSeverity: MEDIUM\nTarget: docker/vnc-browser/chromium/Dockerfile"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c50aaff2fde4d7a6", "name": "DS-0002: Image user should not be 'root' \u2014 docker/vnc-browser/chromium/Dockerfile", "shortDescription": {"text": "DS-0002: Image user should not be 'root' \u2014 docker/vnc-browser/chromium/Dockerfile"}, "fullDescription": {"text": "Image user should not be 'root'\n\nSpecify at least 1 USER command in Dockerfile with non-root user as argument\n\nRule: DS-0002\nSeverity: HIGH\nTarget: docker/vnc-browser/chromium/Dockerfile"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8fc8bc6f5c90fc01", "name": "DS-0026: No HEALTHCHECK defined \u2014 docker/vnc-browser/chromium/Dockerfile", "shortDescription": {"text": "DS-0026: No HEALTHCHECK defined \u2014 docker/vnc-browser/chromium/Dockerfile"}, "fullDescription": {"text": "No HEALTHCHECK defined\n\nAdd HEALTHCHECK instruction in your Dockerfile\n\nRule: DS-0026\nSeverity: LOW\nTarget: docker/vnc-browser/chromium/Dockerfile"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b1d2ebb3fe2036f3", "name": "Agent authority lacks a verifier contract: GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: GEMINI.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-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-2679282aa1c484b5", "name": "Agent authority lacks a verifier contract: AGENTS.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: AGENTS.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-fd96f75d3b1dede8", "name": "Agent authority lacks a verifier contract: open-sse/services/AGENTS.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: open-sse/services/AGENTS.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-0f9d56ad7ab6441f", "name": "Agent authority lacks a verifier contract: docs/i18n/it/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/it/GEMINI.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-c50b966d6bcd912b", "name": "Agent authority lacks a verifier contract: docs/i18n/it/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/it/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-d80627e9ba367017", "name": "Agent authority lacks a verifier contract: docs/i18n/ur/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/ur/GEMINI.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-f7a15a6e916aca99", "name": "Agent authority lacks a verifier contract: docs/i18n/ur/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/ur/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-9c3d53dce1be9015", "name": "Agent authority lacks a verifier contract: docs/i18n/id/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/id/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-b6bb6056b843a4fd", "name": "Agent authority lacks a verifier contract: docs/i18n/ko/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/ko/GEMINI.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-c6b1eb9a0cdaf5ba", "name": "Agent authority lacks a verifier contract: docs/i18n/ko/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/ko/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-3365e521e089fc4c", "name": "Agent authority lacks a verifier contract: docs/i18n/pt/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/pt/GEMINI.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-cb146f0ae69c88ed", "name": "Agent authority lacks a verifier contract: docs/i18n/pt/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/pt/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-2c3756d32dc45fbb", "name": "Agent authority lacks a verifier contract: docs/i18n/hu/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/hu/GEMINI.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-c8835ff93bfdf2ae", "name": "Agent authority lacks a verifier contract: docs/i18n/hu/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/hu/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-a083909e48b3a896", "name": "Agent authority lacks a verifier contract: docs/i18n/ar/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/ar/GEMINI.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-9dbeab3655728640", "name": "Agent authority lacks a verifier contract: docs/i18n/ar/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/ar/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-c037247dddf8e9f4", "name": "Agent authority lacks a verifier contract: docs/i18n/fi/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/fi/GEMINI.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-f2036006e012d481", "name": "Agent authority lacks a verifier contract: docs/i18n/fi/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/fi/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-9e2f6c43d4edacfa", "name": "Agent authority lacks a verifier contract: docs/i18n/th/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/th/GEMINI.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-119cc18b7b477cbf", "name": "Agent authority lacks a verifier contract: docs/i18n/th/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/th/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-654a5dfe408d263b", "name": "Agent authority lacks a verifier contract: docs/i18n/fa/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/fa/GEMINI.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-3e34c36687828149", "name": "Agent authority lacks a verifier contract: docs/i18n/fa/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/fa/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-6bbc67fa10c26f6e", "name": "Agent authority lacks a verifier contract: docs/i18n/ms/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/ms/GEMINI.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-ade4f0f151b5f1ec", "name": "Agent authority lacks a verifier contract: docs/i18n/ms/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/ms/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-756eb2fe8b49673d", "name": "Agent authority lacks a verifier contract: docs/i18n/es/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/es/GEMINI.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-28bb78dca1b6cd34", "name": "Agent authority lacks a verifier contract: docs/i18n/es/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/es/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-049863f3594584d8", "name": "Agent authority lacks a verifier contract: docs/i18n/pt-BR/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/pt-BR/GEMINI.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-1ce575c3b5366362", "name": "Agent authority lacks a verifier contract: docs/i18n/pt-BR/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/pt-BR/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-b4ec649dccf2c2dc", "name": "Agent authority lacks a verifier contract: docs/i18n/sk/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/sk/GEMINI.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-f3c4bbb6bc491669", "name": "Agent authority lacks a verifier contract: docs/i18n/sk/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/sk/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-34786f898c893ff5", "name": "Agent authority lacks a verifier contract: docs/i18n/ja/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/ja/GEMINI.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-5d0cfa387c2b79bb", "name": "Agent authority lacks a verifier contract: docs/i18n/ja/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/ja/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-3a58e37a0a3a44c1", "name": "Agent authority lacks a verifier contract: docs/i18n/da/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/da/GEMINI.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-d0c64f3974169dcc", "name": "Agent authority lacks a verifier contract: docs/i18n/da/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/da/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-6a250fddd331a6ec", "name": "Agent authority lacks a verifier contract: docs/i18n/az/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/az/GEMINI.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-70c79a938e119b2c", "name": "Agent authority lacks a verifier contract: docs/i18n/az/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/az/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-5c7477d15b347975", "name": "Agent authority lacks a verifier contract: docs/i18n/fr/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/fr/GEMINI.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-720c7c50d670cbbd", "name": "Agent authority lacks a verifier contract: docs/i18n/fr/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/fr/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-d3e99628ee7e11cf", "name": "Agent authority lacks a verifier contract: docs/i18n/cs/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/cs/GEMINI.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-1f834d508484948e", "name": "Agent authority lacks a verifier contract: docs/i18n/cs/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/cs/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-c3d7e8d3937b7323", "name": "Agent authority lacks a verifier contract: docs/i18n/te/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/te/GEMINI.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-c8493204f3ada2d7", "name": "Agent authority lacks a verifier contract: docs/i18n/te/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/te/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-c528700b18930916", "name": "Agent authority lacks a verifier contract: docs/i18n/sw/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/sw/GEMINI.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-9bb3be67991fd3e7", "name": "Agent authority lacks a verifier contract: docs/i18n/sw/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/sw/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-a52dc71365de9fd2", "name": "Agent authority lacks a verifier contract: docs/i18n/phi/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/phi/GEMINI.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-cab8029a20d9e0ee", "name": "Agent authority lacks a verifier contract: docs/i18n/phi/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/phi/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-2e832bdd6f007ed7", "name": "Agent authority lacks a verifier contract: docs/i18n/bn/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/bn/GEMINI.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-2ce26d7ab125e892", "name": "Agent authority lacks a verifier contract: docs/i18n/bn/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/bn/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-dd20ae90e72f0970", "name": "Agent authority lacks a verifier contract: docs/i18n/sv/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/sv/GEMINI.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-4e440501c3e899bc", "name": "Agent authority lacks a verifier contract: docs/i18n/sv/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/sv/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-1914de9422feff4a", "name": "Agent authority lacks a verifier contract: docs/i18n/uk-UA/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/uk-UA/GEMINI.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-0fc8a2dc52b134d8", "name": "Agent authority lacks a verifier contract: docs/i18n/uk-UA/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/uk-UA/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-17b88d7d25c70600", "name": "Agent authority lacks a verifier contract: docs/i18n/gu/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/gu/GEMINI.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-6ea89fd942c73b2c", "name": "Agent authority lacks a verifier contract: docs/i18n/gu/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/gu/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-f05097a8c715243c", "name": "Agent authority lacks a verifier contract: docs/i18n/hi/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/hi/GEMINI.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-2b9fade60b8790be", "name": "Agent authority lacks a verifier contract: docs/i18n/hi/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/hi/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-8d45dd299414f542", "name": "Agent authority lacks a verifier contract: docs/i18n/pl/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/pl/GEMINI.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-9a8587bb962cdc87", "name": "Agent authority lacks a verifier contract: docs/i18n/pl/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/pl/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-bb772ccdb47cb664", "name": "Agent authority lacks a verifier contract: docs/i18n/mr/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/mr/GEMINI.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-e33a926944592e17", "name": "Agent authority lacks a verifier contract: docs/i18n/mr/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/mr/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-aab20449a71289ca", "name": "Agent authority lacks a verifier contract: docs/i18n/ta/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/ta/GEMINI.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-83c021b163a83683", "name": "Agent authority lacks a verifier contract: docs/i18n/ta/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/ta/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-297cf3944785b341", "name": "Agent authority lacks a verifier contract: docs/i18n/nl/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/nl/GEMINI.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-8c46057747709b3d", "name": "Agent authority lacks a verifier contract: docs/i18n/nl/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/nl/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-6f86b103918a66fb", "name": "Agent authority lacks a verifier contract: docs/i18n/de/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/de/GEMINI.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-407b19da7bb31968", "name": "Agent authority lacks a verifier contract: docs/i18n/de/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/de/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-e46024b5aa64d71d", "name": "Agent authority lacks a verifier contract: docs/i18n/zh-TW/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/zh-TW/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-745a44266d3997da", "name": "Agent authority lacks a verifier contract: docs/i18n/vi/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/vi/GEMINI.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-a590af85d90efc58", "name": "Agent authority lacks a verifier contract: docs/i18n/vi/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/vi/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-e58818bc1ee70f09", "name": "Agent authority lacks a verifier contract: docs/i18n/tr/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/tr/GEMINI.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-1a480e0d8c952e47", "name": "Agent authority lacks a verifier contract: docs/i18n/tr/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/tr/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-88269dd1ba7c8bb5", "name": "Agent authority lacks a verifier contract: docs/i18n/ru/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/ru/GEMINI.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-e456a90a0c651bb6", "name": "Agent authority lacks a verifier contract: docs/i18n/ru/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/ru/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-6562760c0cf31262", "name": "Agent authority lacks a verifier contract: docs/i18n/zh-CN/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/zh-CN/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-92dd398529d68dc4", "name": "Agent authority lacks a verifier contract: docs/i18n/bg/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/bg/GEMINI.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-e714ce2302ec34c6", "name": "Agent authority lacks a verifier contract: docs/i18n/bg/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/bg/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-1e6d08b857af7e0c", "name": "Agent authority lacks a verifier contract: docs/i18n/ro/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/ro/GEMINI.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-7a08f885afb82952", "name": "Agent authority lacks a verifier contract: docs/i18n/ro/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/ro/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-3e308ee161a65460", "name": "Agent authority lacks a verifier contract: docs/i18n/no/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/no/GEMINI.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-0c3514f61e47c3e0", "name": "Agent authority lacks a verifier contract: docs/i18n/no/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/no/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-0da8d68a2b4687f4", "name": "Agent authority lacks a verifier contract: docs/i18n/he/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/he/GEMINI.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-1ec0b55751c4c380", "name": "Agent authority lacks a verifier contract: docs/i18n/he/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/he/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-04e81b976df7e190", "name": "Agent authority lacks a verifier contract: docs/i18n/in/GEMINI.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/in/GEMINI.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-85685caaff6ddc55", "name": "Agent authority lacks a verifier contract: docs/i18n/in/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/i18n/in/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-f0aeedcf993661b3", "name": "Agent authority lacks a verifier contract: skills/cli-providers/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/cli-providers/SKILL.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-a55a196b7fd31ed3", "name": "Agent instruction contains unpinned remote install: skills/cli-providers/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-providers/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-acffff52d03fe89e", "name": "Agent authority lacks a verifier contract: skills/omni-cache/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/omni-cache/SKILL.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-fd805d2e14dbb892", "name": "Agent authority lacks a verifier contract: skills/cli-mcp/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/cli-mcp/SKILL.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-072727bcc87baf0b", "name": "Agent instruction contains unpinned remote install: skills/cli-mcp/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-mcp/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-66fc124db635bce5", "name": "Agent authority lacks a verifier contract: skills/config-codex-cli/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/config-codex-cli/SKILL.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-d44ef5b78e245ef1", "name": "Agent instruction contains unpinned remote install: skills/config-codex-cli/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/config-codex-cli/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a22f0a54079c4c02", "name": "Agent authority lacks a verifier contract: skills/omni-usage-logs/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/omni-usage-logs/SKILL.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-951f3683e814ec3c", "name": "Agent authority lacks a verifier contract: skills/cli-keys/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/cli-keys/SKILL.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-13801b88d47ced19", "name": "Agent instruction contains unpinned remote install: skills/cli-keys/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-keys/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d437a992d27bc4a4", "name": "Agent authority lacks a verifier contract: skills/cli-cost-usage/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/cli-cost-usage/SKILL.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-da8a9d860a38e46d", "name": "Agent instruction contains unpinned remote install: skills/cli-cost-usage/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-cost-usage/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-58e95fd269f86830", "name": "Agent authority lacks a verifier contract: skills/omni-version-manager/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/omni-version-manager/SKILL.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-33e4baa2808a028d", "name": "Agent instruction contains unpinned remote install: skills/cli-plugins-skills/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-plugins-skills/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5a8860c3bf3c4315", "name": "Agent authority lacks a verifier contract: skills/omni-cli-tools/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/omni-cli-tools/SKILL.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-cdd73a93fed3473c", "name": "Agent authority lacks a verifier contract: skills/omni-models/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/omni-models/SKILL.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-fd6e4754816cd766", "name": "Agent authority lacks a verifier contract: skills/cli-backup-sync/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/cli-backup-sync/SKILL.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-59b704a0ee452646", "name": "Agent instruction contains unpinned remote install: skills/cli-backup-sync/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-backup-sync/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6535c0fa658cef25", "name": "Agent instruction contains unpinned remote install: skills/cli-skill-collector/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-skill-collector/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fedd1b87d4c5bf89", "name": "Agent authority lacks a verifier contract: skills/cli-setup/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/cli-setup/SKILL.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-73fd3081ab0c9e1c", "name": "Agent instruction contains unpinned remote install: skills/cli-setup/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-setup/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-19017e8ab694f790", "name": "Agent authority lacks a verifier contract: skills/omni-resilience/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/omni-resilience/SKILL.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-8c4151a80093d0ef", "name": "Agent authority lacks a verifier contract: skills/omni-budget/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/omni-budget/SKILL.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-65d0487b0278cf47", "name": "Agent authority lacks a verifier contract: skills/cli-models/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/cli-models/SKILL.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-e9aa3f83eb09d136", "name": "Agent instruction contains unpinned remote install: skills/cli-models/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-models/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-615c91c0459b1a57", "name": "Agent authority lacks a verifier contract: skills/omni-api-keys/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/omni-api-keys/SKILL.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-581658f8d2660e36", "name": "Agent authority lacks a verifier contract: skills/omni-agents-a2a/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/omni-agents-a2a/SKILL.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-7853b16a1c8cfe11", "name": "Agent instruction contains unpinned remote install: skills/cli-tunnel/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-tunnel/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c7e91585223b7527", "name": "Agent authority lacks a verifier contract: skills/cli-resilience/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/cli-resilience/SKILL.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-9f98e211413e252e", "name": "Agent instruction contains unpinned remote install: skills/cli-resilience/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-resilience/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-685ddb91bd3f5dcf", "name": "Agent instruction contains unpinned remote install: skills/cli-a2a/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-a2a/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-603f0d1688339191", "name": "Agent instruction contains unpinned remote install: skills/cli-routing/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-routing/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-202da5e832edfc28", "name": "Agent instruction contains unpinned remote install: skills/cli-compression/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-compression/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dce2b6e723acb1bf", "name": "Agent authority lacks a verifier contract: skills/omni-mcp/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/omni-mcp/SKILL.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-086a9a6403307ab0", "name": "Agent authority lacks a verifier contract: skills/cli-policy-audit/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/cli-policy-audit/SKILL.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-e7f3ed3d8dbb2992", "name": "Agent instruction contains unpinned remote install: skills/cli-policy-audit/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-policy-audit/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-92088dd4d57e9da6", "name": "Agent authority lacks a verifier contract: skills/cli-chat/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/cli-chat/SKILL.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-8eaba82b06cfef93", "name": "Agent instruction contains unpinned remote install: skills/cli-chat/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-chat/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7a9032cdb3c639b6", "name": "Agent authority lacks a verifier contract: skills/cli-health/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/cli-health/SKILL.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-e5082fd104935685", "name": "Agent instruction contains unpinned remote install: skills/cli-health/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-health/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-93e9f24f7ccdcc8a", "name": "Agent instruction contains unpinned remote install: skills/cli-eval/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-eval/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a55556246585d2c5", "name": "Agent instruction contains unpinned remote install: skills/cli-contexts/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-contexts/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-34fe71af71338239", "name": "Agent authority lacks a verifier contract: skills/omni-sync-cloud/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/omni-sync-cloud/SKILL.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-faf5990119b3ca51", "name": "Agent authority lacks a verifier contract: skills/cli-batches/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/cli-batches/SKILL.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-0f69d81e1cf5cb1e", "name": "Agent instruction contains unpinned remote install: skills/cli-batches/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-batches/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0063b1f93b4f9632", "name": "Agent instruction contains unpinned remote install: skills/cli-serve/SKILL.md", "shortDescription": {"text": "Agent instruction contains unpinned remote install: skills/cli-serve/SKILL.md"}, "fullDescription": {"text": "Remote install commands in agent instructions are a supply-chain risk, especially when an agent can execute shell commands."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a331e8184b85eb8a", "name": "SkillSpector E4 (data-exfil) in skills/cli-chat/SKILL.md", "shortDescription": {"text": "SkillSpector E4 (data-exfil) in skills/cli-chat/SKILL.md"}, "fullDescription": {"text": "Send chat\n\nCode or instructions that leak agent conversation context to external services, potentially exposing sensitive user interactions.\n\nSkill: cli-chat\nRule: E4  Category: data-exfil\nSeverity: HIGH  Confidence: 0.85\n\nRemediation: Remove any code that sends prompts, responses, or session data externally. Preserve user privacy; never exfiltrate conversation content."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.85}}, {"id": "scanner-b391e5e372ae4506", "name": "SkillSpector P2 (prompt-injection) in skills/cli-eval/SKILL.md", "shortDescription": {"text": "SkillSpector P2 (prompt-injection) in skills/cli-eval/SKILL.md"}, "fullDescription": {"text": "<!-- generated by src/lib/agentSkills/generator.ts; manual edits will be overwritten -->\n\n## Overview\n\nCreate and run evaluation suites, watch live benchmark progress, view scorecards, compare model p\n\nHidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.\n\nSkill: cli-eval\nRule: P2  Category: prompt-injection\nSeverity: HIGH  Confidence: 0.70\n\nRemediation: Audit all comments and invisible characters. Remove any instructions that direct the agent to perform unauthorized actions. Use plain, reviewable content."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.7}}, {"id": "scanner-dc2898b530073492", "name": "SkillSpector P2 (prompt-injection) in skills/cli-providers/SKILL.md", "shortDescription": {"text": "SkillSpector P2 (prompt-injection) in skills/cli-providers/SKILL.md"}, "fullDescription": {"text": "<!-- generated by src/lib/agentSkills/generator.ts; manual edits will be overwritten -->\n\n## Overview\n\nManage provider connections from the CLI: list available/configured providers, add, test, test-al\n\nHidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.\n\nSkill: cli-providers\nRule: P2  Category: prompt-injection\nSeverity: HIGH  Confidence: 0.70\n\nRemediation: Audit all comments and invisible characters. Remove any instructions that direct the agent to perform unauthorized actions. Use plain, reviewable content."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.7}}, {"id": "scanner-a04f6422519a7b4a", "name": "SkillSpector TM1 (tool-misuse) in skills/cli-providers/SKILL.md", "shortDescription": {"text": "SkillSpector TM1 (tool-misuse) in skills/cli-providers/SKILL.md"}, "fullDescription": {"text": "--skip-test\n\nTool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).\n\nSkill: cli-providers\nRule: TM1  Category: tool-misuse\nSeverity: HIGH  Confidence: 0.70\n\nRemediation: Validate all tool parameters against an allowlist. Reject dangerous parameter values (shell=True, --force, -rf /) and use safe defaults."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.7}}, {"id": "scanner-25ce0f6f6642d0bd", "name": "SkillSpector EA2 (excessive-agency) in skills/cli-serve/SKILL.md", "shortDescription": {"text": "SkillSpector EA2 (excessive-agency) in skills/cli-serve/SKILL.md"}, "fullDescription": {"text": "Disable prompt\n\nSkill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.\n\nSkill: cli-serve\nRule: EA2  Category: excessive-agency\nSeverity: MEDIUM  Confidence: 0.85\n\nRemediation: Add human-in-the-loop confirmation for destructive, irreversible, or high-impact operations. Never auto-execute commands that modify files, send data, or alter system state."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-230c934053663820", "name": "SkillSpector P2 (prompt-injection) in skills/cli-serve/SKILL.md", "shortDescription": {"text": "SkillSpector P2 (prompt-injection) in skills/cli-serve/SKILL.md"}, "fullDescription": {"text": "<!-- generated by src/lib/agentSkills/generator.ts; manual edits will be overwritten -->\n\n## Overview\n\nStart, stop, and restart the OmniRoute server from the CLI. Manage daemon mode, port configuratio\n\nHidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.\n\nSkill: cli-serve\nRule: P2  Category: prompt-injection\nSeverity: HIGH  Confidence: 0.70\n\nRemediation: Audit all comments and invisible characters. Remove any instructions that direct the agent to perform unauthorized actions. Use plain, reviewable content."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.7}}, {"id": "scanner-16358d22b63e69b7", "name": "SkillSpector RA2 (rogue-agent) in skills/cli-serve/SKILL.md", "shortDescription": {"text": "SkillSpector RA2 (rogue-agent) in skills/cli-serve/SKILL.md"}, "fullDescription": {"text": "systemd user service** (`~/.config/systemd/user/omniroute.service`) and enable\n\nSkill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.\n\nSkill: cli-serve\nRule: RA2  Category: rogue-agent\nSeverity: MEDIUM  Confidence: 0.80\n\nRemediation: Remove any persistence mechanisms (cron jobs, startup scripts, state files). Skills should not maintain state across sessions without explicit user consent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.8}}, {"id": "scanner-22b3c6c735a7f2d1", "name": "SkillSpector E1 (data-exfil) in skills/cli-skill-collector/SKILL.md", "shortDescription": {"text": "SkillSpector E1 (data-exfil) in skills/cli-skill-collector/SKILL.md"}, "fullDescription": {"text": "curl -H \"Authorization: Bearer $OMNIROUTE_API_KEY\" \\\n  \"http://localhost:20128/api/github-skills?minStars=3&maxResults=50\"\n```\n\n---\n\n## Step 3 \u2014 Install skills to detected tools\n\nInstall a chosen skil\n\nData is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.\n\nSkill: cli-skill-collector\nRule: E1  Category: data-exfil\nSeverity: MEDIUM  Confidence: 0.60\n\nRemediation: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.6}}, {"id": "scanner-71b10455414fbe72", "name": "SkillSpector E3 (data-exfil) in skills/cli-skill-collector/SKILL.md", "shortDescription": {"text": "SkillSpector E3 (data-exfil) in skills/cli-skill-collector/SKILL.md"}, "fullDescription": {"text": "ls -la ~/\n\nCode scans file system directories looking for sensitive files. This could be reconnaissance for credential theft.\n\nSkill: cli-skill-collector\nRule: E3  Category: data-exfil\nSeverity: MEDIUM  Confidence: 0.60\n\nRemediation: Remove unnecessary filesystem scanning. If file access is needed, use explicit, scoped paths. Avoid reading ~/.ssh, ~/.aws, or credential directories."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.6}}, {"id": "scanner-2ecf44bda3b13bfd", "name": "SkillSpector P2 (prompt-injection) in skills/cli-skill-collector/SKILL.md", "shortDescription": {"text": "SkillSpector P2 (prompt-injection) in skills/cli-skill-collector/SKILL.md"}, "fullDescription": {"text": "<!-- generated by src/lib/agentSkills/generator.ts; manual edits will be overwritten -->\n\n## Overview\n\nDetect installed CLI coding tools (Claude Code, Codex, Cursor, Copilot, Cline and more), search G\n\nHidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.\n\nSkill: cli-skill-collector\nRule: P2  Category: prompt-injection\nSeverity: HIGH  Confidence: 0.70\n\nRemediation: Audit all comments and invisible characters. Remove any instructions that direct the agent to perform unauthorized actions. Use plain, reviewable content."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.7}}, {"id": "scanner-9980f754673195e6", "name": "SkillSpector SC2 (supply-chain) in skills/cli-skill-collector/SKILL.md", "shortDescription": {"text": "SkillSpector SC2 (supply-chain) in skills/cli-skill-collector/SKILL.md"}, "fullDescription": {"text": "curl -H \"Authorization: Bearer $OMNIROUTE_API_KEY\" \\\n  \"http://localhost:20128/api/github-skills?minStars=3&maxResults=50\"\n```\n\n---\n\n## Step 3 \u2014 Install skills to detected tools\n\nInstall a chosen skil\n\nRemote code is downloaded and executed. This bypasses code review and could introduce malicious code.\n\nSkill: cli-skill-collector\nRule: SC2  Category: supply-chain\nSeverity: HIGH  Confidence: 0.90\n\nRemediation: Avoid downloading and executing remote scripts. Use trusted packages from PyPI/npm. If remote fetch is required, verify checksums and use HTTPS."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.9}}, {"id": "scanner-fa3719df7b91508a", "name": "SkillSpector E1 (data-exfil) in skills/omni-agents-a2a/SKILL.md", "shortDescription": {"text": "SkillSpector E1 (data-exfil) in skills/omni-agents-a2a/SKILL.md"}, "fullDescription": {"text": "curl -X POST $OMNIROUTE_URL/a2a \\\n  -H \"Authorization: Bearer $OMNIROUTE_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d\n\nData is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.\n\nSkill: omni-agents-a2a\nRule: E1  Category: data-exfil\nSeverity: MEDIUM  Confidence: 0.60\n\nRemediation: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.6}}, {"id": "scanner-7ccbbca0f99d068f", "name": "SkillSpector P2 (prompt-injection) in skills/omni-agents-a2a/SKILL.md", "shortDescription": {"text": "SkillSpector P2 (prompt-injection) in skills/omni-agents-a2a/SKILL.md"}, "fullDescription": {"text": "<!-- generated by src/lib/agentSkills/generator.ts; manual edits will be overwritten -->\n\n## Overview\n\nInteract with OmniRoute via JSON-RPC 2.0 agent-to-agent protocol. 6 built-in A2A skills: smart-ro\n\nHidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.\n\nSkill: omni-agents-a2a\nRule: P2  Category: prompt-injection\nSeverity: HIGH  Confidence: 0.70\n\nRemediation: Audit all comments and invisible characters. Remove any instructions that direct the agent to perform unauthorized actions. Use plain, reviewable content."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.7}}, {"id": "scanner-5ca3c66cb9c7f3c0", "name": "SkillSpector E1 (data-exfil) in skills/omni-api-keys/SKILL.md", "shortDescription": {"text": "SkillSpector E1 (data-exfil) in skills/omni-api-keys/SKILL.md"}, "fullDescription": {"text": "curl https://localhost:20128/api/keys \\\n  -H \"Authorization: Bearer $OMNIROUTE_TOKEN\"\n```\n\n### POST /api/keys\n\nCreate API key\n\n```bash\ncurl -X POST https://localhost:20128/api/keys \\\n  -H \"Authorizati\n\nData is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.\n\nSkill: omni-api-keys\nRule: E1  Category: data-exfil\nSeverity: MEDIUM  Confidence: 0.60\n\nRemediation: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.6}}, {"id": "scanner-178d1357bfa7bed4", "name": "SkillSpector TM1 (tool-misuse) in skills/omni-api-keys/SKILL.md", "shortDescription": {"text": "SkillSpector TM1 (tool-misuse) in skills/omni-api-keys/SKILL.md"}, "fullDescription": {"text": "DELETE /api/keys/{id}\n\nTool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).\n\nSkill: omni-api-keys\nRule: TM1  Category: tool-misuse\nSeverity: HIGH  Confidence: 0.80\n\nRemediation: Validate all tool parameters against an allowlist. Reject dangerous parameter values (shell=True, --force, -rf /) and use safe defaults."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.8}}, {"id": "scanner-e5f3190e4931e97d", "name": "SkillSpector E1 (data-exfil) in skills/omni-auth/SKILL.md", "shortDescription": {"text": "SkillSpector E1 (data-exfil) in skills/omni-auth/SKILL.md"}, "fullDescription": {"text": "curl -X POST https://localhost:20128/api/auth/login \\\n  -H \"Authorization: Bearer $OMNIROUTE_TOKEN\"\n  -H \"Content-Type: application/json\" \\\n  -d '{}'\n```\n\n### POST /api/auth/logout\n\nLog out\n\n```bash\nc\n\nData is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.\n\nSkill: omni-auth\nRule: E1  Category: data-exfil\nSeverity: MEDIUM  Confidence: 0.60\n\nRemediation: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.6}}, {"id": "scanner-26923fac5074dedc", "name": "SkillSpector P2 (prompt-injection) in skills/omni-auth/SKILL.md", "shortDescription": {"text": "SkillSpector P2 (prompt-injection) in skills/omni-auth/SKILL.md"}, "fullDescription": {"text": "<!-- generated by src/lib/agentSkills/generator.ts; manual edits will be overwritten -->\n\n## Overview\n\nManage API key authentication and session tokens. Start here to authenticate requests via Bearer\n\nHidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.\n\nSkill: omni-auth\nRule: P2  Category: prompt-injection\nSeverity: HIGH  Confidence: 0.70\n\nRemediation: Audit all comments and invisible characters. Remove any instructions that direct the agent to perform unauthorized actions. Use plain, reviewable content."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.7}}, {"id": "scanner-e637c415447867e4", "name": "Run SkillSpector's LLM-backed analysis in your own pipeline", "shortDescription": {"text": "Run SkillSpector's LLM-backed analysis in your own pipeline"}, "fullDescription": {"text": "Repobility ran SkillSpector's static rules server-side. The deeper LLM-backed analyzers \u2014 tool-poisoning (TP*), semantic security discovery (SSD*), developer-intent mismatch (SDI*) \u2014 are meant to run on YOUR machine with YOUR model; repobility never sends your code to an LLM. Recipe:\n\n# 1. Install SkillSpector in your own isolated env\npipx install \"skillspector @ git+https://github.com/NVIDIA/SkillSpector.git\"\n\n# 2. Point it at YOUR LLM pipeline (pick one) - your code stays on your machine\nexport SKILLSPECTOR_PROVIDER=anthropic && export ANTHROPIC_API_KEY=sk-ant-...\n# export SKILLSPECTOR_PROVIDER=openai   && export OPENAI_API_KEY=sk-...\n# export SKILLSPECTOR_PROVIDER=openai OPENAI_API_KEY=ollama OPENAI_BASE_URL=http://localhost:11434/v1 SKILLSPECTOR_MODEL=llama3.1:8b\n# export SKILLSPECTOR_PROVIDER=nv_build && export NVIDIA_INFERENCE_KEY=nvapi-...\n\n# 3. Run the LLM-backed scan per skill (omit --no-llm to enable the LLM analyzers)\nskillspector scan skills/cli-a2a --format sarif --output "}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc449d02a8f99438", "name": "Privileged port 64 in use", "shortDescription": {"text": "Privileged port 64 in use"}, "fullDescription": {"text": "Port 64 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d42fe9088d37503d", "name": "Privileged port 32 in use", "shortDescription": {"text": "Privileged port 32 in use"}, "fullDescription": {"text": "Port 32 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2e05976495715bfc", "name": "Privileged port 21 in use", "shortDescription": {"text": "Privileged port 21 in use"}, "fullDescription": {"text": "Port 21 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-01ce5d6d56d0679b", "name": "Privileged port 5 in use", "shortDescription": {"text": "Privileged port 5 in use"}, "fullDescription": {"text": "Port 5 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dbcd417659cfba72", "name": "Privileged port 212 in use", "shortDescription": {"text": "Privileged port 212 in use"}, "fullDescription": {"text": "Port 212 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6a5e128fbcdefa67", "name": "Docker base image is tag-pinned but not digest-pinned: node:24-trixie-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:24-trixie-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d1ac919e548cf26c", "name": "Dockerfile runs as root: docker/vnc-browser/chromium/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: docker/vnc-browser/chromium/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-20e54996f1ef5e97", "name": "Docker base image uses a mutable or implicit tag: linuxserver/chromium:latest", "shortDescription": {"text": "Docker base image uses a mutable or implicit tag: linuxserver/chromium:latest"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-167e4667ddba8f95", "name": "Insecure pattern 'cors_wildcard' in open-sse/translator/response/openai-to-gemini-sse.ts:289", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in open-sse/translator/response/openai-to-gemini-sse.ts:289"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-42a1641a3bb1caba", "name": "Insecure pattern 'eval_used' in open-sse/mcp-server/tools/githubSkillTools.ts:124", "shortDescription": {"text": "Insecure pattern 'eval_used' in open-sse/mcp-server/tools/githubSkillTools.ts:124"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d579b165290fd121", "name": "Insecure pattern 'node_child_process' in open-sse/services/qoderCli.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in open-sse/services/qoderCli.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.9}}, {"id": "scanner-8af8470257976947", "name": "Insecure pattern 'node_child_process' in electron/main.js:32", "shortDescription": {"text": "Insecure pattern 'node_child_process' in electron/main.js:32"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.8}}, {"id": "scanner-229627e09152ee5d", "name": "Possible secret in tests/unit/inspector-har-export.test.ts", "shortDescription": {"text": "Possible secret in tests/unit/inspector-har-export.test.ts"}, "fullDescription": {"text": "Detected 1 occurrence(s) matching openai_or_anthropic_key. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 0.95}}, {"id": "scanner-23c4d7cc41975263", "name": "Possible secret in tests/unit/log-redaction.test.ts", "shortDescription": {"text": "Possible secret in tests/unit/log-redaction.test.ts"}, "fullDescription": {"text": "Detected 2 occurrence(s) matching openai_or_anthropic_key. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 0.95}}, {"id": "scanner-b035fbb65e3b0356", "name": "Possible secret in tests/unit/api-key-mask-fix.test.mjs", "shortDescription": {"text": "Possible secret in tests/unit/api-key-mask-fix.test.mjs"}, "fullDescription": {"text": "Detected 11 occurrence(s) matching openai_or_anthropic_key. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 0.95}}, {"id": "scanner-3637f3ff50be6bab", "name": "Possible secret in tests/unit/db-backups-skills-3500.test.ts", "shortDescription": {"text": "Possible secret in tests/unit/db-backups-skills-3500.test.ts"}, "fullDescription": {"text": "Detected 1 occurrence(s) matching openai_or_anthropic_key. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 0.95}}, {"id": "scanner-6c4109dd2e3c690f", "name": "Possible secret in tests/unit/issue-agent-runner.test.ts", "shortDescription": {"text": "Possible secret in tests/unit/issue-agent-runner.test.ts"}, "fullDescription": {"text": "Detected 1 occurrence(s) matching openai_or_anthropic_key. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 0.95}}, {"id": "scanner-8b448401ea304b05", "name": "Possible secret in tests/unit/issue-agent-runs-route.test.ts", "shortDescription": {"text": "Possible secret in tests/unit/issue-agent-runs-route.test.ts"}, "fullDescription": {"text": "Detected 1 occurrence(s) matching openai_or_anthropic_key. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 0.95}}, {"id": "scanner-6a5f17df2a358b8d", "name": "Possible secret in tests/unit/github-collector.test.ts", "shortDescription": {"text": "Possible secret in tests/unit/github-collector.test.ts"}, "fullDescription": {"text": "Detected 1 occurrence(s) matching github_token. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 0.99}}, {"id": "scanner-716d3685b72680cc", "name": "Possible secret in tests/unit/issue-agent-audit.test.ts", "shortDescription": {"text": "Possible secret in tests/unit/issue-agent-audit.test.ts"}, "fullDescription": {"text": "Detected 1 occurrence(s) matching openai_or_anthropic_key. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 0.95}}, {"id": "scanner-38ab24c0b7fa6855", "name": "Possible secret in tests/unit/logger-redaction-wiring.test.ts", "shortDescription": {"text": "Possible secret in tests/unit/logger-redaction-wiring.test.ts"}, "fullDescription": {"text": "Detected 2 occurrence(s) matching openai_or_anthropic_key. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 0.95}}, {"id": "scanner-4df44cbfc5aeac35", "name": "Insecure pattern 'node_child_process' in scripts/router-eval/compare.ts:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/router-eval/compare.ts:4"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.8}}, {"id": "scanner-748e8e9bfa8fc29d", "name": "Insecure pattern 'node_child_process' in scripts/router-eval/search.ts:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/router-eval/search.ts:4"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.8}}, {"id": "scanner-5c211973eced2f0d", "name": "Insecure pattern 'node_child_process' in scripts/i18n/extract-keys-from-diff.mjs:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/i18n/extract-keys-from-diff.mjs:12"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.9}}, {"id": "scanner-d9eb59c590a82666", "name": "Insecure pattern 'node_child_process' in scripts/i18n/build-pending-from-missing.mjs:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/i18n/build-pending-from-missing.mjs:11"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.9}}, {"id": "scanner-1fe686fdf1449ffd", "name": "Insecure pattern 'node_child_process' in scripts/homolog/run.mjs:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/homolog/run.mjs:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.9}}, {"id": "scanner-9ecc0ba68e1487ae", "name": "Insecure pattern 'node_child_process' in scripts/release/sync-next-cycle.mjs:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/release/sync-next-cycle.mjs:17"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.8}}, {"id": "scanner-ee12bfae93bed0cf", "name": "Insecure pattern 'node_child_process' in scripts/release/verify-published.mjs:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/release/verify-published.mjs:15"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.8}}, {"id": "scanner-3f05262b972452fa", "name": "Insecure pattern 'node_child_process' in scripts/dev/system-info.mjs:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/dev/system-info.mjs:17"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.9}}, {"id": "scanner-459deac5face5714", "name": "Insecure pattern 'node_child_process' in scripts/ad-hoc/resolve_all_conflicts.js:2", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ad-hoc/resolve_all_conflicts.js:2"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.9}}, {"id": "scanner-6f30991f4fb67090", "name": "Insecure pattern 'node_child_process' in scripts/ad-hoc/delete-non-green-runs.mjs:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ad-hoc/delete-non-green-runs.mjs:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.9}}, {"id": "scanner-9da1221ecb01cd82", "name": "Insecure pattern 'exec_used' in scripts/ad-hoc/dbsetup.js:7", "shortDescription": {"text": "Insecure pattern 'exec_used' in scripts/ad-hoc/dbsetup.js:7"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc3e0f6089756264", "name": "Insecure pattern 'node_child_process' in scripts/ad-hoc/fetch_prs.js:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ad-hoc/fetch_prs.js:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.9}}, {"id": "scanner-43b5fb6afd26b7d4", "name": "Insecure pattern 'node_child_process' in scripts/check/check-mutation-test-coverage.mjs:27", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check/check-mutation-test-coverage.mjs:27"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.8}}, {"id": "scanner-e84ddde04b66c2fd", "name": "Insecure pattern 'node_child_process' in scripts/check/check-env-doc-sync.mjs:29", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check/check-env-doc-sync.mjs:29"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.9}}, {"id": "scanner-5c1bcf643a6c2862", "name": "Insecure pattern 'node_child_process' in scripts/check/check-router-eval-regression.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check/check-router-eval-regression.ts:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.8}}, {"id": "scanner-d1060444b64ecd09", "name": "Insecure pattern 'exec_used' in src/types/sqljs.d.ts:17", "shortDescription": {"text": "Insecure pattern 'exec_used' in src/types/sqljs.d.ts:17"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-93a41eb4297b1232", "name": "Insecure pattern 'node_child_process' in src/shared/utils/machineId.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/shared/utils/machineId.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.9}}, {"id": "scanner-69ffec00063e16f4", "name": "Insecure pattern 'node_child_process' in src/shared/services/cliRuntime.ts:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/shared/services/cliRuntime.ts:5"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.9}}, {"id": "scanner-c0a22b616f23599c", "name": "Insecure pattern 'exec_used' in src/mitm/cert/install.ts:89", "shortDescription": {"text": "Insecure pattern 'exec_used' in src/mitm/cert/install.ts:89"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6d996c7d0089244e", "name": "Insecure pattern 'node_child_process' in src/mitm/cert/install.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/mitm/cert/install.ts:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.9}}, {"id": "scanner-d9aa4149ad5a074c", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:71", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:71"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-fe5c43c3791a7e44", "name": "Insecure pattern 'exec_used' in src/app/api/oauth/cursor/auto-import/route.ts:51", "shortDescription": {"text": "Insecure pattern 'exec_used' in src/app/api/oauth/cursor/auto-import/route.ts:51"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4b524d8efa67266a", "name": "Insecure pattern 'cors_wildcard' in src/app/api/free-tier/summary/route.ts:7", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in src/app/api/free-tier/summary/route.ts:7"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b12d11b4ffe92bbf", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/docs/[...slug]/page.tsx:85", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/docs/[...slug]/page.tsx:85"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-37d3534e58a87dfd", "name": "Insecure pattern 'local_storage_auth_token' in src/app/callback/page.tsx:96", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in src/app/callback/page.tsx:96"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-05cf0d315746ad2b", "name": "Insecure pattern 'node_child_process' in src/lib/acp/registry.ts:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/lib/acp/registry.ts:13"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.9}}, {"id": "scanner-9373ffa946dd4c79", "name": "Insecure pattern 'exec_used' in src/lib/db/adapters/betterSqliteAdapter.ts:24", "shortDescription": {"text": "Insecure pattern 'exec_used' in src/lib/db/adapters/betterSqliteAdapter.ts:24"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9f98ed8c14b121b3", "name": "Insecure pattern 'exec_used' in src/lib/db/adapters/bunSqliteAdapter.ts:15", "shortDescription": {"text": "Insecure pattern 'exec_used' in src/lib/db/adapters/bunSqliteAdapter.ts:15"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a6d296051889cc27", "name": "Insecure pattern 'exec_used' in src/lib/db/adapters/types.ts:18", "shortDescription": {"text": "Insecure pattern 'exec_used' in src/lib/db/adapters/types.ts:18"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-722c7155e3e51408", "name": "Insecure pattern 'exec_used' in src/lib/db/adapters/nodeSqliteShared.ts:10", "shortDescription": {"text": "Insecure pattern 'exec_used' in src/lib/db/adapters/nodeSqliteShared.ts:10"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-999ab7543d716922", "name": "Insecure pattern 'eval_used' in src/lib/skills/githubCollector.ts:48", "shortDescription": {"text": "Insecure pattern 'eval_used' in src/lib/skills/githubCollector.ts:48"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dfc1fa3e0a505321", "name": "Insecure pattern 'python_os_system' in src/lib/skills/githubCollector.ts:50", "shortDescription": {"text": "Insecure pattern 'python_os_system' in src/lib/skills/githubCollector.ts:50"}, "fullDescription": {"text": "Found a known-risky pattern (python_os_system). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4e403ddab612a854", "name": "Insecure pattern 'exec_used' in src/lib/skills/githubCollector.ts:49", "shortDescription": {"text": "Insecure pattern 'exec_used' in src/lib/skills/githubCollector.ts:49"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e05251130aff10f5", "name": "Insecure pattern 'node_child_process' in src/lib/copilot/tools.ts:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/lib/copilot/tools.ts:8"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.9}}, {"id": "scanner-7e303d1261324cd9", "name": "Insecure pattern 'eval_used' in src/lib/quota/redisQuotaStore.ts:39", "shortDescription": {"text": "Insecure pattern 'eval_used' in src/lib/quota/redisQuotaStore.ts:39"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-42a374e3d347f431", "name": "Insecure pattern 'node_child_process' in src/lib/cli-helper/tool-detector.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/lib/cli-helper/tool-detector.ts:3"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 0.9}}, {"id": "scanner-8d52c6ee33f9c983", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "grafana/setup-k6-action@v1 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-7a1e6c351573749e", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v7 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-7c4be30924b0d0da", "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-fa9b995646930c75", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v7 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-0fe2cc8022e468a5", "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-9a899e2e6f7bb10a", "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@v7 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-108b9e42f7cc0e7c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v7 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-abc0a90d9fac8c0b", "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-8265e7396e2f7333", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/github-script@v9 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-b841c61fdfcff569", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v7 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-076b03a16e76601d", "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-e04eab3aa1f521d4", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v7 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-65a716a27d2be993", "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-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/cache@v6 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-23275a81025207c4", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "appleboy/ssh-action@v1 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-8c45cbace34fe908", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/cache@v6 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-fd21be71f0897870", "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@v7 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-de53ac274e5b4ecf", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v7 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-37716d9c0a33ad5c", "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-e4d1813370599f41", "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@v7 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-6efb0669920054fa", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v7 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-0b8f1cf46718eaac", "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-58b901fe458245c3", "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@v7 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0604121f91fb5a09", "name": "Very large file: open-sse/executors/codex.ts (1533 lines)", "shortDescription": {"text": "Very large file: open-sse/executors/codex.ts (1533 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-90072f8573d2971d", "name": "Very large file: open-sse/executors/cursor.ts (1541 lines)", "shortDescription": {"text": "Very large file: open-sse/executors/cursor.ts (1541 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-12782b53a781262d", "name": "Very large file: open-sse/executors/chatgpt-web.ts (3203 lines)", "shortDescription": {"text": "Very large file: open-sse/executors/chatgpt-web.ts (3203 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-0e0577363947ea14", "name": "Very large file: open-sse/executors/base.ts (1400 lines)", "shortDescription": {"text": "Very large file: open-sse/executors/base.ts (1400 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-c8b5ae42f3b8bc82", "name": "Very large file: open-sse/executors/antigravity.ts (1482 lines)", "shortDescription": {"text": "Very large file: open-sse/executors/antigravity.ts (1482 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-4a19203a04c1e58a", "name": "Very large file: open-sse/utils/cursorAgentProtobuf.ts (1491 lines)", "shortDescription": {"text": "Very large file: open-sse/utils/cursorAgentProtobuf.ts (1491 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-99cbe310d9876d54", "name": "Very large file: open-sse/utils/stream.ts (2886 lines)", "shortDescription": {"text": "Very large file: open-sse/utils/stream.ts (2886 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-8b93184cf054e750", "name": "Very large file: open-sse/services/accountFallback.ts (1939 lines)", "shortDescription": {"text": "Very large file: open-sse/services/accountFallback.ts (1939 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-706b82ec1923484a", "name": "Very large file: open-sse/services/adobeFireflyClient.ts (1957 lines)", "shortDescription": {"text": "Very large file: open-sse/services/adobeFireflyClient.ts (1957 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-d757a3db76645097", "name": "Very large file: open-sse/services/combo.ts (3629 lines)", "shortDescription": {"text": "Very large file: open-sse/services/combo.ts (3629 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-222c44f41129eba4", "name": "Very large file: open-sse/handlers/chatCore.ts (4865 lines)", "shortDescription": {"text": "Very large file: open-sse/handlers/chatCore.ts (4865 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-bd70b320a5753deb", "name": "Very large file: open-sse/handlers/imageGeneration.ts (3096 lines)", "shortDescription": {"text": "Very large file: open-sse/handlers/imageGeneration.ts (3096 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-bf5de4443db7e58f", "name": "Very large file: tests/integration/liveGeminiShared.ts (1691 lines)", "shortDescription": {"text": "Very large file: tests/integration/liveGeminiShared.ts (1691 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-1958da2c836a6690", "name": "Very large file: tests/unit/account-fallback-service.test.ts (1562 lines)", "shortDescription": {"text": "Very large file: tests/unit/account-fallback-service.test.ts (1562 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-4c0a9f1a8ef5ab9a", "name": "Very large file: tests/unit/models-catalog-route.test.ts (1607 lines)", "shortDescription": {"text": "Very large file: tests/unit/models-catalog-route.test.ts (1607 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-b3b9af64e7f74341", "name": "Very large file: tests/unit/sse-auth.test.ts (1599 lines)", "shortDescription": {"text": "Very large file: tests/unit/sse-auth.test.ts (1599 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-1d9c9f499eddfc00", "name": "Very large file: tests/unit/executor-default-base.test.ts (1489 lines)", "shortDescription": {"text": "Very large file: tests/unit/executor-default-base.test.ts (1489 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-6944a4ee07b7a86c", "name": "Very large file: tests/unit/provider-validation-specialty.test.ts (2979 lines)", "shortDescription": {"text": "Very large file: tests/unit/provider-validation-specialty.test.ts (2979 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-3dce399e19e7ac8d", "name": "Very large file: tests/unit/image-generation-handler.test.ts (2028 lines)", "shortDescription": {"text": "Very large file: tests/unit/image-generation-handler.test.ts (2028 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-09828ef15d67d094", "name": "Very large file: tests/unit/stream-utils.test.ts (2444 lines)", "shortDescription": {"text": "Very large file: tests/unit/stream-utils.test.ts (2444 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-70e0309679659074", "name": "Very large file: tests/unit/grok-web.test.ts (2436 lines)", "shortDescription": {"text": "Very large file: tests/unit/grok-web.test.ts (2436 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-0e930ab97c4701b2", "name": "Very large file: tests/unit/chatcore-translation-paths.test.ts (2768 lines)", "shortDescription": {"text": "Very large file: tests/unit/chatcore-translation-paths.test.ts (2768 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-b44026acc0d15fbc", "name": "Very large file: tests/unit/translator-openai-to-gemini.test.ts (1523 lines)", "shortDescription": {"text": "Very large file: tests/unit/translator-openai-to-gemini.test.ts (1523 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-f843e69940aec881", "name": "Very large file: tests/unit/provider-models-route.test.ts (1783 lines)", "shortDescription": {"text": "Very large file: tests/unit/provider-models-route.test.ts (1783 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-cac8f30027b43cff", "name": "Very large file: tests/unit/combo-routing-engine.test.ts (3408 lines)", "shortDescription": {"text": "Very large file: tests/unit/combo-routing-engine.test.ts (3408 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-9ab0967d70a6dc2d", "name": "Very large file: tests/unit/chatgpt-web.test.ts (3147 lines)", "shortDescription": {"text": "Very large file: tests/unit/chatgpt-web.test.ts (3147 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-5fb1584eb3d99f80", "name": "Very large file: @omniroute/opencode-plugin/tests/config-shim.test.ts (1522 lines)", "shortDescription": {"text": "Very large file: @omniroute/opencode-plugin/tests/config-shim.test.ts (1522 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-dbe1043aa8de64c4", "name": "Very large file: @omniroute/opencode-plugin/src/index.ts (4831 lines)", "shortDescription": {"text": "Very large file: @omniroute/opencode-plugin/src/index.ts (4831 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-e81d367552b225ef", "name": "Very large file: src/shared/components/RequestLoggerV2.tsx (1628 lines)", "shortDescription": {"text": "Very large file: src/shared/components/RequestLoggerV2.tsx (1628 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-1f2562a3c8b3fcc2", "name": "Very large file: src/app/api/v1/models/catalog.ts (1591 lines)", "shortDescription": {"text": "Very large file: src/app/api/v1/models/catalog.ts (1591 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-9bed94029792ee36", "name": "Very large file: src/app/api/providers/[id]/models/route.ts (2237 lines)", "shortDescription": {"text": "Very large file: src/app/api/providers/[id]/models/route.ts (2237 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-1cdf503088ba3bb9", "name": "Very large file: src/app/(dashboard)/dashboard/HomePageClient.tsx (1376 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/dashboard/HomePageClient.tsx (1376 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-bd4fdc96d219ad07", "name": "Very large file: src/app/(dashboard)/dashboard/settings/components/RoutingTab.tsx (1623 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/dashboard/settings/components/RoutingTab.tsx (1623 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-b95a96b108e582f7", "name": "Very large file: src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx (1463 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx (1463 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-ef4c49275b82ab35", "name": "Very large file: src/app/(dashboard)/dashboard/settings/components/SystemStorageTab.tsx (1572 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/dashboard/settings/components/SystemStorageTab.tsx (1572 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-6ce6287bf51e74f9", "name": "Very large file: src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx (2147 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx (2147 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-5a8da345a39922e6", "name": "Very large file: src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx (3116 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx (3116 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-5b47da77fa109081", "name": "Very large file: src/app/(dashboard)/dashboard/health/page.tsx (1164 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/dashboard/health/page.tsx (1164 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-130dbe9cf294eb34", "name": "Very large file: src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx (2614 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx (2614 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-916049a053589619", "name": "Very large file: src/app/(dashboard)/dashboard/providers/page.tsx (1917 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/dashboard/providers/page.tsx (1917 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-8ef4f6f3be8cb243", "name": "Very large file: src/app/(dashboard)/dashboard/providers/[id]/components/modals/EditConnectionModal.tsx (1282 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/dashboard/providers/[id]/components/modals/EditConnectionModal.tsx (1282 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-51dddff9279b166b", "name": "Very large file: src/app/(dashboard)/dashboard/combos/page.tsx (4622 lines)", "shortDescription": {"text": "Very large file: src/app/(dashboard)/dashboard/combos/page.tsx (4622 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-5ef4343f029ee979", "name": "Very large file: src/lib/db/core.ts (1636 lines)", "shortDescription": {"text": "Very large file: src/lib/db/core.ts (1636 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-9d2024850f3ea4b8", "name": "Very large file: src/lib/db/apiKeys.ts (1517 lines)", "shortDescription": {"text": "Very large file: src/lib/db/apiKeys.ts (1517 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-658feca8c6527a04", "name": "Very large file: src/sse/services/auth.ts (2448 lines)", "shortDescription": {"text": "Very large file: src/sse/services/auth.ts (2448 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-fa22af2978f7664b", "name": "Very large file: src/sse/handlers/chat.ts (1864 lines)", "shortDescription": {"text": "Very large file: src/sse/handlers/chat.ts (1864 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-c1c50b392d6630c3", "name": "46 TODO/FIXME markers", "shortDescription": {"text": "46 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-9fe68f69841f1c8c", "name": "Node manifest has dependencies but no lockfile: open-sse/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: open-sse/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": "dependencies", "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 1033 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 747 placeholder/mock markers across 295 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-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-457e0599d0e9e6ad", "name": "Legacy-named symbol `__qa_backup` in eslint.config.mjs:143", "shortDescription": {"text": "Legacy-named symbol `__qa_backup` in eslint.config.mjs:143"}, "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-41b6102de9eb900f", "name": "Legacy-named symbol `__qa_backup` in next.config.mjs:230", "shortDescription": {"text": "Legacy-named symbol `__qa_backup` in next.config.mjs:230"}, "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-5a451018e3a2b81e", "name": "Legacy-named symbol `eleven_multilingual_v2` in open-sse/config/audioRegistry.ts:322", "shortDescription": {"text": "Legacy-named symbol `eleven_multilingual_v2` in open-sse/config/audioRegistry.ts:322"}, "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-22259113eed8da15", "name": "Legacy-named symbol `model_configs_v2` in open-sse/config/providers/registry/windsurf/index.ts:16", "shortDescription": {"text": "Legacy-named symbol `model_configs_v2` in open-sse/config/providers/registry/windsurf/index.ts:16"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bdb4ab84b45f473e", "name": "Legacy-named symbol `model_configs_v2` in open-sse/executors/windsurf.ts:46", "shortDescription": {"text": "Legacy-named symbol `model_configs_v2` in open-sse/executors/windsurf.ts:46"}, "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-5192266d784c03e4", "name": "Legacy-named symbol `token_v2` in open-sse/executors/notion-web.ts:7", "shortDescription": {"text": "Legacy-named symbol `token_v2` in open-sse/executors/notion-web.ts:7"}, "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-1a74f1f2157a66df", "name": "Legacy-named symbol `message_center_v1` in open-sse/executors/felo-web.ts:119", "shortDescription": {"text": "Legacy-named symbol `message_center_v1` in open-sse/executors/felo-web.ts:119"}, "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-ef7966a51aef112d", "name": "Legacy-named symbol `entity_group_v2` in open-sse/executors/perplexity-web/protocol.ts:28", "shortDescription": {"text": "Legacy-named symbol `entity_group_v2` in open-sse/executors/perplexity-web/protocol.ts:28"}, "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-9d7b5d67c0775b8f", "name": "Legacy-named symbol `token_v2` in open-sse/services/notionWebModels.ts:53", "shortDescription": {"text": "Legacy-named symbol `token_v2` in open-sse/services/notionWebModels.ts:53"}, "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-dc63dbb569e7c5ac", "name": "Legacy-named symbol `isDeprecated` in open-sse/services/modelDeprecation.ts:145", "shortDescription": {"text": "Legacy-named symbol `isDeprecated` in open-sse/services/modelDeprecation.ts:145"}, "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-d9a7b6b335f99dd0", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh.ts:326", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh.ts:326"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-cb9d078739c60e9a", "name": "Legacy-named symbol `grok_api_v2` in open-sse/services/grokCliQuotaFetcher.ts:11", "shortDescription": {"text": "Legacy-named symbol `grok_api_v2` in open-sse/services/grokCliQuotaFetcher.ts:11"}, "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-57266fce92fe269c", "name": "Legacy-named symbol `defaultRawLegacy` in open-sse/services/payloadRules.ts:123", "shortDescription": {"text": "Legacy-named symbol `defaultRawLegacy` in open-sse/services/payloadRules.ts:123"}, "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-53995b94b849f221", "name": "Legacy-named symbol `lastLegacy` in open-sse/services/notionStreamParser.ts:84", "shortDescription": {"text": "Legacy-named symbol `lastLegacy` in open-sse/services/notionStreamParser.ts:84"}, "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-a30c57a5d2bfba8e", "name": "Legacy-named symbol `grok_api_v2` in open-sse/services/grokCliQuotaFrame.ts:3", "shortDescription": {"text": "Legacy-named symbol `grok_api_v2` in open-sse/services/grokCliQuotaFrame.ts:3"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2a3630cab09bebcc", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh/providers/kiro.ts:41", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh/providers/kiro.ts:41"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-e218a522f6e86452", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh/providers/claudeOAuth.ts:21", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh/providers/claudeOAuth.ts:21"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-1fca88ca618c2dd0", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh/providers/github.ts:13", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh/providers/github.ts:13"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-3c1d3a88c3e01e43", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh/providers/qoder.ts:23", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh/providers/qoder.ts:23"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-ef64bf39651093ca", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh/providers/google.ts:19", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh/providers/google.ts:19"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-9b9e68b1c483d702", "name": "Legacy-named symbol `encodeTabularBlockLegacy` in open-sse/services/compression/engines/headroom/tabular.ts:14", "shortDescription": {"text": "Legacy-named symbol `encodeTabularBlockLegacy` in open-sse/services/compression/engines/headroom/tabular.ts:14"}, "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-ad81bb5f2a22b691", "name": "Legacy-named symbol `content_copy` in open-sse/services/compression/engines/session-dedup/index.ts:403", "shortDescription": {"text": "Legacy-named symbol `content_copy` in open-sse/services/compression/engines/session-dedup/index.ts:403"}, "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-f72202d536aef403", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/usage/kiro.ts:194", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/usage/kiro.ts:194"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-e5b224939e303f73", "name": "Legacy-named symbol `getClaudeUsageLegacy` in open-sse/services/usage/claude.ts:6", "shortDescription": {"text": "Legacy-named symbol `getClaudeUsageLegacy` in open-sse/services/usage/claude.ts:6"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c9c33e0cbe758f7", "name": "Legacy-named symbol `__qa_backup` in scripts/dev/run-next-playwright.mjs:20", "shortDescription": {"text": "Legacy-named symbol `__qa_backup` in scripts/dev/run-next-playwright.mjs:20"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ceaa8b794fa85fb", "name": "Legacy-named symbol `token_v2` in src/shared/constants/providers/web-cookie.ts:423", "shortDescription": {"text": "Legacy-named symbol `token_v2` in src/shared/constants/providers/web-cookie.ts:423"}, "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-6a42c805f3529efc", "name": "Legacy-named symbol `content_copy` in src/shared/constants/sidebarVisibility/sections.ts:135", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/shared/constants/sidebarVisibility/sections.ts:135"}, "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-355a5a09991ee136", "name": "Legacy-named symbol `content_copy` in src/shared/components/RequestLoggerDetail.tsx:51", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/shared/components/RequestLoggerDetail.tsx:51"}, "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-0bd7af772dd2ac56", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/CommandPalette.tsx:66", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/CommandPalette.tsx:66"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-8ca2437fd837cd56", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/ReasoningRoutingRules.tsx:119", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/ReasoningRoutingRules.tsx:119"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-261e694f496cce7e", "name": "Legacy-named symbol `content_copy` in src/shared/components/KiroSocialOAuthModal.tsx:143", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/shared/components/KiroSocialOAuthModal.tsx:143"}, "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-080881944f7e1d83", "name": "Legacy-named symbol `content_copy` in src/shared/components/ConsoleLogViewer.tsx:308", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/shared/components/ConsoleLogViewer.tsx:308"}, "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-033983daaced7c7c", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/RequestLoggerV2.tsx:298", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/RequestLoggerV2.tsx:298"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-5adc8702cce93736", "name": "Legacy-named symbol `content_copy` in src/shared/components/ManualConfigModal.tsx:38", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/shared/components/ManualConfigModal.tsx:38"}, "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-c02908c0aa1eb6c3", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/Sidebar.tsx:152", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/Sidebar.tsx:152"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-c1c84d3df8421449", "name": "Legacy-named symbol `content_copy` in src/shared/components/OAuthModalPanels.tsx:50", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/shared/components/OAuthModalPanels.tsx:50"}, "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-184dbbf8e368fd20", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/ModelRoutingSection.tsx:67", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/ModelRoutingSection.tsx:67"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-c31bb07a863a8711", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/ModelSelectField.tsx:52", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/ModelSelectField.tsx:52"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-e6da1d8c0f03fe91", "name": "Legacy-named symbol `token_v2` in src/shared/providers/webSessionCredentials.ts:66", "shortDescription": {"text": "Legacy-named symbol `token_v2` in src/shared/providers/webSessionCredentials.ts:66"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7cfc7ded6c343a57", "name": "Legacy-named symbol `content_copy` in src/app/connect/codex/[token]/CodexConnectClient.tsx:151", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/connect/codex/[token]/CodexConnectClient.tsx:151"}, "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-4909161d14973040", "name": "Legacy-named symbol `token_v2` in src/app/api/providers/[id]/models/route.ts:626", "shortDescription": {"text": "Legacy-named symbol `token_v2` in src/app/api/providers/[id]/models/route.ts:626"}, "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-e332bfdf5777b8fd", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/HomePageClient.tsx:1349", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/HomePageClient.tsx:1349"}, "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-48c39848d498399f", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/HomePageClient.tsx:212", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/HomePageClient.tsx:212"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-5ac3f0911de7a53a", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/CodexFastTierTab.", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/CodexFastTierTab.tsx:37"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-841d9498c29b93f4", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/SystemPromptTab.t", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/SystemPromptTab.tsx:16"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-e11c79e3f553859f", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/BackgroundDegrada", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/BackgroundDegradationTab.tsx:23"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-a40bf18baeaf0cae", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/SidebarTab.tsx:39", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/SidebarTab.tsx:396"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-300e74ab69f4bb29", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/VisionBridgeSetti", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/VisionBridgeSettingsTab.tsx:28"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-8edd2383d4b5e75e", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/RoutingTab.tsx:68", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/RoutingTab.tsx:682"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-437f5267eb8326fc", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/AutoDisableCard.t", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/AutoDisableCard.tsx:19"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-c1de2464a0d46f4c", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ModelAliasesTab.t", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ModelAliasesTab.tsx:18"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-6ab48cbb49ba36a6", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ComplianceTab.tsx", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ComplianceTab.tsx:30"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-1d3783c364542f6c", "name": "Legacy-named symbol `importLegacy` in src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx:753", "shortDescription": {"text": "Legacy-named symbol `importLegacy` in src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx:753"}, "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-06495321369d9da7", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/OneproxyTab.tsx:6", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/OneproxyTab.tsx:60"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-e58b84834de5fb7d", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ComboDefaultsTab.", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ComboDefaultsTab.tsx:140"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-ae6eae40e92f8e67", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ClaudeFastModeTab", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ClaudeFastModeTab.tsx:26"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-dbd5fe715061b864", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/CacheSettingsTab.", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/CacheSettingsTab.tsx:29"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-c00788ca2f1145c2", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ResponsesStatePol", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ResponsesStatePolicyTab.tsx:31"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-9d6d4d1f8f35bdf5", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ThinkingBudgetTab", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ThinkingBudgetTab.tsx:53"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-ab662448814d5861", "name": "Legacy-named symbol `storageBackupCleanOld` in src/app/(dashboard)/dashboard/settings/components/DatabaseBackupRetention", "shortDescription": {"text": "Legacy-named symbol `storageBackupCleanOld` in src/app/(dashboard)/dashboard/settings/components/DatabaseBackupRetentionCard.tsx:160"}, "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-78ae608d2f580034", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/CliproxyapiSettin", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/CliproxyapiSettingsTab.tsx:65"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-69f6a116ca137c1b", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/MemorySkillsTab.t", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/MemorySkillsTab.tsx:89"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-25d72317beec03f3", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/RequestLimitsTab.", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/RequestLimitsTab.tsx:36"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-dffd6a466873bc1c", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/CompressionSettin", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/CompressionSettingsTab.tsx:220"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-d3499ffc199f74ab", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/AppearanceTab.tsx", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/AppearanceTab.tsx:74"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-06089d862d44254e", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/SecurityTab.tsx:3", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/SecurityTab.tsx:32"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-0d52220c61362e30", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/CodexAutoPingTab.", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/CodexAutoPingTab.tsx:30"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-1b1e3bae202c99d2", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/proxy/FreePoolTab", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/proxy/FreePoolTab.tsx:83"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-bbe6e43c1980e197", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/search-tools/components/RerankPanel.t", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/search-tools/components/RerankPanel.tsx:31"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-d5a4c5726ddafc8e", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/batch/FileDetailModal.tsx:147", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/batch/FileDetailModal.tsx:147"}, "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-532f038f7075a9e3", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/batch/BatchDetailModal.tsx:210", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/batch/BatchDetailModal.tsx:210"}, "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-34c6c71b4e070cd4", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/translator/components/advanced/RawJsonPanel.tsx:435", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/translator/components/advanced/RawJsonPanel.tsx:435"}, "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-3742379fd338c1b5", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/translator/components/advanced/StreamTransformerAcco", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/translator/components/advanced/StreamTransformerAccordion.tsx:350"}, "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-e0a85cbdb9984c95", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/playground/components/ExportCodeModal.tsx:150", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/playground/components/ExportCodeModal.tsx:150"}, "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-dd7e6c09a21321cd", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/playground/components/tabs/ApiTab.tsx:711", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/playground/components/tabs/ApiTab.tsx:711"}, "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-0c46799c918dab38", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/compression/exclusions/ExclusionsPane", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/compression/exclusions/ExclusionsPanel.tsx:32"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-13265aa641580b58", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/usage/components/BudgetTelemetryCards", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/usage/components/BudgetTelemetryCards.tsx:16"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-a83699f2a288e91e", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/usage/components/FreeBudgetCard.tsx:5", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/usage/components/FreeBudgetCard.tsx:572"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-948b53f5478e2814", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx:1485", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx:1485"}, "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-9e16789a317b68ad", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/usage/components/ProviderLimits/useQu", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/usage/components/ProviderLimits/useQuotaVisibility.ts:30"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-9e3c0a447931f2d3", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.tsx:249"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-aa1cfd7ee1ad7545", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx:1101", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx:1101"}, "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-c6e91fda47acd732", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx:", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx:343"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-fc3697a42518c9c6", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/analytics/CompressionAnalyticsTab.tsx", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/analytics/CompressionAnalyticsTab.tsx:151"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-d75b3c349cfc2a30", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/analytics/AutoRoutingAnalyticsTab.tsx", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/analytics/AutoRoutingAnalyticsTab.tsx:22"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-60ab980a8209b336", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/analytics/SearchAnalyticsTab.tsx:86", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/analytics/SearchAnalyticsTab.tsx:86"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-787fc7d1d42974b8", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/health/page.tsx:106", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/health/page.tsx:106"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-b9e0822033f7131f", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx:1318", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx:1318"}, "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-d907d654746cd769", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx:516", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx:516"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-f30a3b299395c66c", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/endpoint/ApiEndpointsTab.tsx:149", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/endpoint/ApiEndpointsTab.tsx:149"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-2504fdbb9bd7d1fe", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/endpoint/VscodeTokenAliasCard.tsx:208", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/endpoint/VscodeTokenAliasCard.tsx:208"}, "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-384c1c1322be2aa1", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/media-providers/components/ImageExamp", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/media-providers/components/ImageExampleCard.tsx:36"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-d30294e2f851a31d", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/media-providers/components/PlaygroundCard.tsx:91", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/media-providers/components/PlaygroundCard.tsx:91"}, "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-be3ef380b00fb846", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/providers/page.tsx:415", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/providers/page.tsx:415"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-e4e565c29ec37bf4", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/providers/[id]/components/ExternalLinkModal.tsx:64", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/providers/[id]/components/ExternalLinkModal.tsx:64"}, "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-9a25cea93601a6b7", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/providers/[id]/components/PassthroughModelRow.tsx:17", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/providers/[id]/components/PassthroughModelRow.tsx:179"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e8f780ef70377542", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/providers/[id]/components/CustomModelsSection.tsx:49", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/providers/[id]/components/CustomModelsSection.tsx:490"}, "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-f80960d2b8328a9a", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/providers/[id]/components/ModelRow.tsx:398", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/providers/[id]/components/ModelRow.tsx:398"}, "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-e70bfbd3dd4c6f2f", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/providers/[id]/components/modals/AddApiKeyModal.tsx:", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/providers/[id]/components/modals/AddApiKeyModal.tsx:636"}, "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-6ff032ae74e31583", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderConne", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderConnections.ts:286"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-65c5bbc561f6a71d", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/providers/hooks/useSyncedModelsByProv", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/providers/hooks/useSyncedModelsByProvider.ts:22"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-adeda05ad27259fe", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/providers/services/components/Cliprox", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/providers/services/components/CliproxyModelMappingEditor.tsx:88"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-aa8b3b23b4a15da8", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/providers/services/components/Cliprox", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/providers/services/components/CliproxyConnectionPanel.tsx:34"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-54ff0edad164479c", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/logs/CompressionLogTab.tsx:32", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/logs/CompressionLogTab.tsx:32"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-63f42fc59038051c", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/agent-skills/components/SkillPreviewPane.tsx:103", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/agent-skills/components/SkillPreviewPane.tsx:103"}, "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-506dcbadb9d80990", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/agent-skills/components/McpA2aLinksBar.tsx:56", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/agent-skills/components/McpA2aLinksBar.tsx:56"}, "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-4153429400f9913a", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/memory/components/QdrantConfigCard.ts", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/memory/components/QdrantConfigCard.tsx:52"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-1054c7f0d9f30203", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/memory/components/tabs/EngineTab.tsx:", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/memory/components/tabs/EngineTab.tsx:29"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-323c05d2d7d5769a", "name": "Legacy-named symbol `compactOld` in src/app/(dashboard)/dashboard/memory/components/tabs/MemoriesTab.tsx:348", "shortDescription": {"text": "Legacy-named symbol `compactOld` in src/app/(dashboard)/dashboard/memory/components/tabs/MemoriesTab.tsx:348"}, "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-147e334826515ebc", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/cli-code/CliCodePageClient.tsx:61", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/cli-code/CliCodePageClient.tsx:61"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-1431491faef5b8f9", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/DroidToolCard.tsx:531", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/DroidToolCard.tsx:531"}, "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-389d5d94acdbac67", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/ClaudeToolCard.tsx:352", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/ClaudeToolCard.tsx:352"}, "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-532b2022a4c89bd9", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/DefaultToolCard.tsx:341", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/DefaultToolCard.tsx:341"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-afb97bb6e373a40a", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/OpenClawToolCard.tsx:349", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/OpenClawToolCard.tsx:349"}, "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-d12b6add23035053", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/CodexToolCard.tsx:734", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/CodexToolCard.tsx:734"}, "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-5938b62277d611de", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/CopilotToolCard.tsx:415", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/CopilotToolCard.tsx:415"}, "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-4c3e0a54e070766b", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/cli-code/components/CopilotToolCard.t", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/cli-code/components/CopilotToolCard.tsx:59"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-6b4ffb6ca1e69412", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/CustomCliCard.tsx:346", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/CustomCliCard.tsx:346"}, "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-b8d960f5c0835a90", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/tools/traffic-inspector/TrafficInspec", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/tools/traffic-inspector/TrafficInspectorPageClient.tsx:41"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-bf32f6ecb79546c1", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/tools/traffic-inspector/components/HttpProxySnippetC", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/tools/traffic-inspector/components/HttpProxySnippetCard.tsx:79"}, "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-218550bcca31b271", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/context/CompressionStylesTile.tsx:30", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/context/CompressionStylesTile.tsx:30"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-553fa74e40fd036f", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/context/settings/CompressionPanel.tsx", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/context/settings/CompressionPanel.tsx:158"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-735fcc54593b3714", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/context/omniglyph/OmniglyphContextPag", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/context/omniglyph/OmniglyphContextPageClient.tsx:207"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-487af4126da3b382", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/context/combos/CompressionCombosPageC", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/context/combos/CompressionCombosPageClient.tsx:74"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-8902c4b297f1439a", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/QuotaEnd", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/QuotaEndpointsCard.tsx:103"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-b040ef8e38a80e8d", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/UsageLog", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/UsageLogCard.tsx:44"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-e3a20cb5e836761b", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/AccountQ", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/AccountQuotaRow.tsx:96"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-823269093bc89b53", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/costs/quota-share/hooks/useLocalStora", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/costs/quota-share/hooks/useLocalStoragePoolMigration.ts:93"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-d3e0b4cc6d310c40", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/omni-skills/OmniSkillsPageClient.tsx:", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/omni-skills/OmniSkillsPageClient.tsx:81"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-4a78f8cf528c4cd7", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/omni-skills/components/SkillInspector", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/omni-skills/components/SkillInspectorPane.tsx:61"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-b7453680522b104b", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/discovery/DiscoveryPageClient.tsx:106", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/discovery/DiscoveryPageClient.tsx:106"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-beff096814e9dabd", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/quota/page.tsx:12", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/quota/page.tsx:12"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-d70405db7c24fe48", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/webhooks/components/shared/HmacRecipeBlock.tsx:65", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/webhooks/components/shared/HmacRecipeBlock.tsx:65"}, "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-e7eea5998453ecfc", "name": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/combos/page.tsx:1664", "shortDescription": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/combos/page.tsx:1664"}, "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-e60113068ca5b97c", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/combos/playground/ComboPlaygroundClie", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/combos/playground/ComboPlaygroundClient.tsx:76"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-40356545e96d178b", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/lib/display/useProviderNodeMap.ts:47", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/lib/display/useProviderNodeMap.ts:47"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-fec0d3789d7b3987", "name": "Legacy-named symbol `call_logs_v1_legacy` in src/lib/usage/callLogs.ts:554", "shortDescription": {"text": "Legacy-named symbol `call_logs_v1_legacy` in src/lib/usage/callLogs.ts:554"}, "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-e5ddbff328bcec09", "name": "Legacy-named symbol `oauthLegacy` in src/lib/resilience/settings.ts:165", "shortDescription": {"text": "Legacy-named symbol `oauthLegacy` in src/lib/resilience/settings.ts:165"}, "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-7e92acbf75b8ed00", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/lib/cloudAgent/agents/jules.ts:251", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/lib/cloudAgent/agents/jules.ts:251"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-7a475c87d724c715", "name": "Legacy-named symbol `token_v2` in src/lib/providers/validation/webProvidersB.ts:529", "shortDescription": {"text": "Legacy-named symbol `token_v2` in src/lib/providers/validation/webProvidersB.ts:529"}, "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-8228359c134ff678", "name": "Legacy-named symbol `call_logs_v1_legacy` in src/lib/db/core.ts:692", "shortDescription": {"text": "Legacy-named symbol `call_logs_v1_legacy` in src/lib/db/core.ts:692"}, "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-b8b2db9c498260ac", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/hooks/useLiveDashboard.ts:116", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/hooks/useLiveDashboard.ts:116"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-232280e648470954", "name": "Legacy-named symbol `client_api_v1` in src/server/authz/classify.ts:90", "shortDescription": {"text": "Legacy-named symbol `client_api_v1` in src/server/authz/classify.ts:90"}, "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-c5e2f864e3de5318", "name": "Legacy-named symbol `client_api_v1` in src/server/authz/types.ts:33", "shortDescription": {"text": "Legacy-named symbol `client_api_v1` in src/server/authz/types.ts:33"}, "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-f6b8bd507bb049f4", "name": "479 env vars used in code but missing from .env.example", "shortDescription": {"text": "479 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `AGY_TOKEN_FILE`, `ALIBABA_CODING_PLAN_HOST`, `ALIBABA_CODING_PLAN_QUOTA_URL`, `ALLOW_CHANGELOG_REMOVALS`, `ALLOW_MULTI_CONNECTIONS_PER_COMPAT_NODE`, `ALL_PROXY`, `ANTHROPIC_API_URL`, `ANTIGRAVITY_CREDITS` + 471 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}}, {"id": "scanner-2329ab96f6a27cb9", "name": "Vulnerable dependency undici 8.3.0: GHSA-35p6-xmwp-9g52", "shortDescription": {"text": "Vulnerable dependency undici 8.3.0: GHSA-35p6-xmwp-9g52"}, "fullDescription": {"text": "OSV.dev reports `undici` at version `8.3.0` (declared in `package.json`) is affected by GHSA-35p6-xmwp-9g52 (aka CVE-2026-6733).\nNote: `8.3.0` is the declared floor of a range \u2014 the installed version may be newer.\n\nundici vulnerable to HTTP response queue poisoning via keep-alive socket reuse\n\nAliases: CVE-2026-6733\nAdvisory: https://osv.dev/vulnerability/GHSA-35p6-xmwp-9g52\nFix: upgrade `undici` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "low", "confidence": 0.7}}, {"id": "scanner-91ce3bdba78acf1d", "name": "Vulnerable dependency undici 8.3.0: GHSA-38rv-x7px-6hhq", "shortDescription": {"text": "Vulnerable dependency undici 8.3.0: GHSA-38rv-x7px-6hhq"}, "fullDescription": {"text": "OSV.dev reports `undici` at version `8.3.0` (declared in `package.json`) is affected by GHSA-38rv-x7px-6hhq (aka CVE-2026-9675).\nNote: `8.3.0` is the declared floor of a range \u2014 the installed version may be newer.\n\nundici WebSocket client vulnerable to denial of service via cumulative fragment bypass\n\nAliases: CVE-2026-9675\nAdvisory: https://osv.dev/vulnerability/GHSA-38rv-x7px-6hhq\nFix: upgrade `undici` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 0.7}}, {"id": "scanner-dd8de9d500c41720", "name": "Vulnerable dependency undici 8.3.0: GHSA-g8m3-5g58-fq7m", "shortDescription": {"text": "Vulnerable dependency undici 8.3.0: GHSA-g8m3-5g58-fq7m"}, "fullDescription": {"text": "OSV.dev reports `undici` at version `8.3.0` (declared in `package.json`) is affected by GHSA-g8m3-5g58-fq7m (aka CVE-2026-11525).\nNote: `8.3.0` is the declared floor of a range \u2014 the installed version may be newer.\n\nundici vulnerable to Set-Cookie SameSite attribute downgrade via permissive substring matching\n\nAliases: CVE-2026-11525\nAdvisory: https://osv.dev/vulnerability/GHSA-g8m3-5g58-fq7m\nFix: upgrade `undici` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "low", "confidence": 0.7}}, {"id": "scanner-4a1e4ebaeb94b70c", "name": "Vulnerable dependency undici 8.3.0: GHSA-p88m-4jfj-68fv", "shortDescription": {"text": "Vulnerable dependency undici 8.3.0: GHSA-p88m-4jfj-68fv"}, "fullDescription": {"text": "OSV.dev reports `undici` at version `8.3.0` (declared in `package.json`) is affected by GHSA-p88m-4jfj-68fv (aka CVE-2026-9679).\nNote: `8.3.0` is the declared floor of a range \u2014 the installed version may be newer.\n\nundici vulnerable to HTTP header injection via Set-Cookie percent-decoding\n\nAliases: CVE-2026-9679\nAdvisory: https://osv.dev/vulnerability/GHSA-p88m-4jfj-68fv\nFix: upgrade `undici` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 0.7}}, {"id": "scanner-f448283207259c0f", "name": "Vulnerable dependency undici 8.3.0: GHSA-pr7r-676h-xcf6", "shortDescription": {"text": "Vulnerable dependency undici 8.3.0: GHSA-pr7r-676h-xcf6"}, "fullDescription": {"text": "OSV.dev reports `undici` at version `8.3.0` (declared in `package.json`) is affected by GHSA-pr7r-676h-xcf6 (aka CVE-2026-9678).\nNote: `8.3.0` is the declared floor of a range \u2014 the installed version may be newer.\n\nundici vulnerable to cross-user information disclosure via shared cache whitespace bypass\n\nAliases: CVE-2026-9678\nAdvisory: https://osv.dev/vulnerability/GHSA-pr7r-676h-xcf6\nFix: upgrade `undici` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 0.7}}, {"id": "scanner-198d6f0c258b9b08", "name": "Vulnerable dependency undici 8.3.0: GHSA-vmh5-mc38-953g", "shortDescription": {"text": "Vulnerable dependency undici 8.3.0: GHSA-vmh5-mc38-953g"}, "fullDescription": {"text": "OSV.dev reports `undici` at version `8.3.0` (declared in `package.json`) is affected by GHSA-vmh5-mc38-953g (aka CVE-2026-9697).\nNote: `8.3.0` is the declared floor of a range \u2014 the installed version may be newer.\n\nundici vulnerable to TLS certificate validation bypass via dropped requestTls in SOCKS5 ProxyAgent\n\nAliases: CVE-2026-9697\nAdvisory: https://osv.dev/vulnerability/GHSA-vmh5-mc38-953g\nFix: upgrade `undici` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 0.7}}, {"id": "scanner-dee4c7b7d599ac44", "name": "Vulnerable dependency undici 8.3.0: GHSA-vxpw-j846-p89q", "shortDescription": {"text": "Vulnerable dependency undici 8.3.0: GHSA-vxpw-j846-p89q"}, "fullDescription": {"text": "OSV.dev reports `undici` at version `8.3.0` (declared in `package.json`) is affected by GHSA-vxpw-j846-p89q (aka CVE-2026-12151).\nNote: `8.3.0` is the declared floor of a range \u2014 the installed version may be newer.\n\nundici WebSocket client vulnerable to denial of service via fragment count bypass\n\nAliases: CVE-2026-12151\nAdvisory: https://osv.dev/vulnerability/GHSA-vxpw-j846-p89q\nFix: upgrade `undici` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 0.7}}, {"id": "scanner-93ba4d5bc7da6348", "name": "Vulnerable dependency ws 8.18.0: GHSA-58qx-3vcg-4xpx", "shortDescription": {"text": "Vulnerable dependency ws 8.18.0: GHSA-58qx-3vcg-4xpx"}, "fullDescription": {"text": "OSV.dev reports `ws` at version `8.18.0` (declared in `package.json`) is affected by GHSA-58qx-3vcg-4xpx (aka CVE-2026-45736).\nNote: `8.18.0` is the declared floor of a range \u2014 the installed version may be newer.\n\nws: Uninitialized memory disclosure\n\nAliases: CVE-2026-45736\nAdvisory: https://osv.dev/vulnerability/GHSA-58qx-3vcg-4xpx\nFix: upgrade `ws` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 0.7}}, {"id": "scanner-a754f02cc109ce7b", "name": "Vulnerable dependency ws 8.18.0: GHSA-96hv-2xvq-fx4p", "shortDescription": {"text": "Vulnerable dependency ws 8.18.0: GHSA-96hv-2xvq-fx4p"}, "fullDescription": {"text": "OSV.dev reports `ws` at version `8.18.0` (declared in `package.json`) is affected by GHSA-96hv-2xvq-fx4p (aka CVE-2026-48779).\nNote: `8.18.0` is the declared floor of a range \u2014 the installed version may be newer.\n\nws: Memory exhaustion DoS from tiny fragments and data chunks\n\nAliases: CVE-2026-48779\nAdvisory: https://osv.dev/vulnerability/GHSA-96hv-2xvq-fx4p\nFix: upgrade `ws` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 0.7}}, {"id": "scanner-14b1d2244ac20a01", "name": "Dependency @toon-format/toon is two or more major versions behind", "shortDescription": {"text": "Dependency @toon-format/toon is two or more major versions behind"}, "fullDescription": {"text": "`@toon-format/toon` is pinned at `2.3.0` in `open-sse/package.json` while the latest release on the npm registry is `4.0.0` \u2014 2 major version(s) behind. Old majors stop receiving security backports and accumulate known CVEs. Review the upstream changelog / migration guide and upgrade `@toon-format/toon` to `4.0.0`."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-71b3ee8b41760da3", "name": "Dangling fetch: POST /api/settings/proxy/test (src/shared/components/ProxyConfigModal.tsx:508)", "shortDescription": {"text": "Dangling fetch: POST /api/settings/proxy/test (src/shared/components/ProxyConfigModal.tsx:508)"}, "fullDescription": {"text": "`src/shared/components/ProxyConfigModal.tsx:508` calls `POST /api/settings/proxy/test` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/settings/proxy/test`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-a7952ebc1de30959", "name": "Dangling fetch: POST /api/oauth/${provider}/poll (src/shared/components/OAuthModal.tsx:96)", "shortDescription": {"text": "Dangling fetch: POST /api/oauth/${provider}/poll (src/shared/components/OAuthModal.tsx:96)"}, "fullDescription": {"text": "`src/shared/components/OAuthModal.tsx:96` calls `POST /api/oauth/${provider}/poll` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/oauth/<p>/poll`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-3e9045d5d8647689", "name": "Dangling fetch: POST /api/oauth/${provider}/exchange (src/shared/components/OAuthModal.tsx:210)", "shortDescription": {"text": "Dangling fetch: POST /api/oauth/${provider}/exchange (src/shared/components/OAuthModal.tsx:210)"}, "fullDescription": {"text": "`src/shared/components/OAuthModal.tsx:210` calls `POST /api/oauth/${provider}/exchange` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/oauth/<p>/exchange`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-d9af8b169c9d9ea8", "name": "Dangling fetch: POST /api/oauth/${provider}/import-token (src/shared/components/OAuthModal.tsx:284)", "shortDescription": {"text": "Dangling fetch: POST /api/oauth/${provider}/import-token (src/shared/components/OAuthModal.tsx:284)"}, "fullDescription": {"text": "`src/shared/components/OAuthModal.tsx:284` calls `POST /api/oauth/${provider}/import-token` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/oauth/<p>/import-token`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-8d4a74827d87b6e4", "name": "Dangling fetch: GET /api/oauth/${provider}/start-callback-server (src/shared/components/OAuthModal.tsx:460)", "shortDescription": {"text": "Dangling fetch: GET /api/oauth/${provider}/start-callback-server (src/shared/components/OAuthModal.tsx:460)"}, "fullDescription": {"text": "`src/shared/components/OAuthModal.tsx:460` calls `GET /api/oauth/${provider}/start-callback-server` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/oauth/<p>/start-callback-server`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-34112a0211cb21ba", "name": "Dangling fetch: POST /api/oauth/${provider}/poll-callback (src/shared/components/OAuthModal.tsx:481)", "shortDescription": {"text": "Dangling fetch: POST /api/oauth/${provider}/poll-callback (src/shared/components/OAuthModal.tsx:481)"}, "fullDescription": {"text": "`src/shared/components/OAuthModal.tsx:481` calls `POST /api/oauth/${provider}/poll-callback` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/oauth/<p>/poll-callback`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-6532489b80e579ef", "name": "Dangling fetch: POST /api/settings/proxy/test (src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.ts", "shortDescription": {"text": "Dangling fetch: POST /api/settings/proxy/test (src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx:320)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx:320` calls `POST /api/settings/proxy/test` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/settings/proxy/test`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-3e0ef6536587231b", "name": "Dangling fetch: GET /api/local/redis${endpoint} (src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.ts", "shortDescription": {"text": "Dangling fetch: GET /api/local/redis${endpoint} (src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx:18)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx:18` calls `GET /api/local/redis${endpoint}` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/local/redis/<p>`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-87cca45e04d972c3", "name": "Dangling fetch: GET /status (src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx:53)", "shortDescription": {"text": "Dangling fetch: GET /status (src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx:53)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx:53` calls `GET /status` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: helper:apiCall\nNormalized path used for matching: `/status`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-4710a4731784d3bb", "name": "Dangling fetch: POST /start (src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx:66)", "shortDescription": {"text": "Dangling fetch: POST /start (src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx:66)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx:66` calls `POST /start` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: helper:apiCall\nNormalized path used for matching: `/start`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-024ab947102ffa61", "name": "Dangling fetch: POST /stop (src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx:79)", "shortDescription": {"text": "Dangling fetch: POST /stop (src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx:79)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx:79` calls `POST /stop` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: helper:apiCall\nNormalized path used for matching: `/stop`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-18454219cbcaf51a", "name": "Dangling fetch: POST /api/proxy-fallback/test (src/app/(dashboard)/dashboard/settings/components/proxy/GlobalConfigTab.t", "shortDescription": {"text": "Dangling fetch: POST /api/proxy-fallback/test (src/app/(dashboard)/dashboard/settings/components/proxy/GlobalConfigTab.tsx:90)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/settings/components/proxy/GlobalConfigTab.tsx:90` calls `POST /api/proxy-fallback/test` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/proxy-fallback/test`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-132e2f2d1941c399", "name": "Dangling fetch: POST /api${path} (src/app/(dashboard)/dashboard/playground/components/tabs/ApiTab.tsx:412)", "shortDescription": {"text": "Dangling fetch: POST /api${path} (src/app/(dashboard)/dashboard/playground/components/tabs/ApiTab.tsx:412)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/playground/components/tabs/ApiTab.tsx:412` calls `POST /api${path}` but no backend route in the scanned graph matches that path. The path appears development/example-only, so verify its custom dev server or proxy registration.\n\nTool: fetch\nNormalized path used for matching: `/api/<p>`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "medium", "confidence": 0.55}}, {"id": "scanner-6cdfeff6f0a0be93", "name": "Dangling fetch: GET /api/openapi/spec (src/app/(dashboard)/dashboard/endpoint/ApiEndpointsTab.tsx:114)", "shortDescription": {"text": "Dangling fetch: GET /api/openapi/spec (src/app/(dashboard)/dashboard/endpoint/ApiEndpointsTab.tsx:114)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/endpoint/ApiEndpointsTab.tsx:114` calls `GET /api/openapi/spec` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/openapi/spec`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-9e29d1f4fd2f11b7", "name": "Dangling fetch: POST /a2a (src/app/(dashboard)/dashboard/endpoint/components/A2ADashboard.tsx:193)", "shortDescription": {"text": "Dangling fetch: POST /a2a (src/app/(dashboard)/dashboard/endpoint/components/A2ADashboard.tsx:193)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/endpoint/components/A2ADashboard.tsx:193` calls `POST /a2a` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/a2a`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-f11b26d68a7e5456", "name": "Dangling fetch: GET /api/system/env/repair (src/app/(dashboard)/dashboard/providers/page.tsx:283)", "shortDescription": {"text": "Dangling fetch: GET /api/system/env/repair (src/app/(dashboard)/dashboard/providers/page.tsx:283)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/providers/page.tsx:283` calls `GET /api/system/env/repair` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/system/env/repair`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-45412b8811a97b9b", "name": "Dangling fetch: POST /api/system/env/repair (src/app/(dashboard)/dashboard/providers/page.tsx:307)", "shortDescription": {"text": "Dangling fetch: POST /api/system/env/repair (src/app/(dashboard)/dashboard/providers/page.tsx:307)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/providers/page.tsx:307` calls `POST /api/system/env/repair` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/system/env/repair`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-960d49655f40758f", "name": "Dangling fetch: POST /api/providers/${encodeURIComponent(connectionId)}/test (src/app/(dashboard)/dashboard/providers/co", "shortDescription": {"text": "Dangling fetch: POST /api/providers/${encodeURIComponent(connectionId)}/test (src/app/(dashboard)/dashboard/providers/components/onboarding/providerOnboardingApi.ts:215)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/providers/components/onboarding/providerOnboardingApi.ts:215` calls `POST /api/providers/${encodeURIComponent(connectionId)}/test` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/providers/<p>/test`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-811e2f8f548c7bee", "name": "Dangling fetch: POST /api/providers/${connection.id}/test (src/app/(dashboard)/dashboard/providers/[id]/components/modal", "shortDescription": {"text": "Dangling fetch: POST /api/providers/${connection.id}/test (src/app/(dashboard)/dashboard/providers/[id]/components/modals/EditConnectionModal.tsx:372)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/providers/[id]/components/modals/EditConnectionModal.tsx:372` calls `POST /api/providers/${connection.id}/test` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/providers/<p>/test`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-21506110c5d592eb", "name": "Dangling fetch: POST /api/oauth/grok-cli/import-token (src/app/(dashboard)/dashboard/providers/[id]/components/modals/Im", "shortDescription": {"text": "Dangling fetch: POST /api/oauth/grok-cli/import-token (src/app/(dashboard)/dashboard/providers/[id]/components/modals/ImportGrokCliAuthModal.tsx:107)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/providers/[id]/components/modals/ImportGrokCliAuthModal.tsx:107` calls `POST /api/oauth/grok-cli/import-token` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/oauth/grok-cli/import-token`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-7221981ccac98a9d", "name": "Dangling fetch: POST /api/models/test (src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelVisibilityHandlers.ts:", "shortDescription": {"text": "Dangling fetch: POST /api/models/test (src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelVisibilityHandlers.ts:292)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelVisibilityHandlers.ts:292` calls `POST /api/models/test` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/models/test`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-83fb44c0279daea3", "name": "Dangling fetch: POST /api/providers/${connectionId}/test (src/app/(dashboard)/dashboard/providers/[id]/hooks/useProvider", "shortDescription": {"text": "Dangling fetch: POST /api/providers/${connectionId}/test (src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderConnections.ts:540)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderConnections.ts:540` calls `POST /api/providers/${connectionId}/test` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/providers/<p>/test`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-071134f9e8206abb", "name": "Dangling fetch: POST /api/oauth/${providerId}/public-link (src/app/(dashboard)/dashboard/providers/[id]/hooks/useExterna", "shortDescription": {"text": "Dangling fetch: POST /api/oauth/${providerId}/public-link (src/app/(dashboard)/dashboard/providers/[id]/hooks/useExternalLinkFlow.ts:34)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/providers/[id]/hooks/useExternalLinkFlow.ts:34` calls `POST /api/oauth/${providerId}/public-link` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/oauth/<p>/public-link`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-fae8e73dd7e00a12", "name": "Dangling fetch: PUT /api/providers/${selectedConnection?.id} (src/app/(dashboard)/dashboard/providers/[id]/hooks/useProv", "shortDescription": {"text": "Dangling fetch: PUT /api/providers/${selectedConnection?.id} (src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderNodeActions.ts:44)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderNodeActions.ts:44` calls `PUT /api/providers/${selectedConnection?.id}` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/providers/${selectedconnection`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-548af4c67a313507", "name": "Dangling fetch: POST /api/services/${NAME}/install (src/app/(dashboard)/dashboard/providers/services/components/Ninerout", "shortDescription": {"text": "Dangling fetch: POST /api/services/${NAME}/install (src/app/(dashboard)/dashboard/providers/services/components/NinerouterInstallWizard.tsx:28)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/providers/services/components/NinerouterInstallWizard.tsx:28` calls `POST /api/services/${NAME}/install` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/services/<p>/install`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-d1e4b05c5dbeae67", "name": "Dangling fetch: POST /api/services/${name}/rotate-key (src/app/(dashboard)/dashboard/providers/services/components/ApiKe", "shortDescription": {"text": "Dangling fetch: POST /api/services/${name}/rotate-key (src/app/(dashboard)/dashboard/providers/services/components/ApiKeyField.tsx:46)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/providers/services/components/ApiKeyField.tsx:46` calls `POST /api/services/${name}/rotate-key` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/services/<p>/rotate-key`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-219d6eb49ccf6e7d", "name": "Dangling fetch: GET /api/services/${name}/status?reveal=key (src/app/(dashboard)/dashboard/providers/services/components", "shortDescription": {"text": "Dangling fetch: GET /api/services/${name}/status?reveal=key (src/app/(dashboard)/dashboard/providers/services/components/ApiKeyField.tsx:60)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/providers/services/components/ApiKeyField.tsx:60` calls `GET /api/services/${name}/status?reveal=key` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/services/<p>/status`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-42e76a039b05d19c", "name": "Dangling fetch: POST /api/services/${name}/auto-start (src/app/(dashboard)/dashboard/providers/services/components/AutoS", "shortDescription": {"text": "Dangling fetch: POST /api/services/${name}/auto-start (src/app/(dashboard)/dashboard/providers/services/components/AutoStartToggle.tsx:25)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/providers/services/components/AutoStartToggle.tsx:25` calls `POST /api/services/${name}/auto-start` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/services/<p>/auto-start`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-e587b5dcd6ca036d", "name": "Dangling fetch: POST /api/services/${NAME}/provider-expose (src/app/(dashboard)/dashboard/providers/services/components/", "shortDescription": {"text": "Dangling fetch: POST /api/services/${NAME}/provider-expose (src/app/(dashboard)/dashboard/providers/services/components/NinerouterProviderExposureCard.tsx:34)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/providers/services/components/NinerouterProviderExposureCard.tsx:34` calls `POST /api/services/${NAME}/provider-expose` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/services/<p>/provider-expose`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-9400a9a4f48d74ec", "name": "Dangling fetch: POST /api/services/${NAME}/provider-expose (src/app/(dashboard)/dashboard/providers/services/components/", "shortDescription": {"text": "Dangling fetch: POST /api/services/${NAME}/provider-expose (src/app/(dashboard)/dashboard/providers/services/components/CliproxyProviderExposureCard.tsx:23)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/providers/services/components/CliproxyProviderExposureCard.tsx:23` calls `POST /api/services/${NAME}/provider-expose` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/services/<p>/provider-expose`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-90e41aec92a7cd9f", "name": "Dangling fetch: POST /api/services/${name}/${verb} (src/app/(dashboard)/dashboard/providers/services/components/ServiceL", "shortDescription": {"text": "Dangling fetch: POST /api/services/${name}/${verb} (src/app/(dashboard)/dashboard/providers/services/components/ServiceLifecycleButtons.tsx:29)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/providers/services/components/ServiceLifecycleButtons.tsx:29` calls `POST /api/services/${name}/${verb}` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/services/<p>/<p>`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-30d5d08877ddfe4a", "name": "Dangling fetch: GET /api/services/${name}/status (src/app/(dashboard)/dashboard/providers/services/hooks/useServiceStatu", "shortDescription": {"text": "Dangling fetch: GET /api/services/${name}/status (src/app/(dashboard)/dashboard/providers/services/hooks/useServiceStatus.ts:43)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/providers/services/hooks/useServiceStatus.ts:43` calls `GET /api/services/${name}/status` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/services/<p>/status`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-47006399c5aaaa5a", "name": "Dangling fetch: GET /api/logs?filter=compressed&limit=50 (src/app/(dashboard)/dashboard/logs/CompressionLogTab.tsx:32)", "shortDescription": {"text": "Dangling fetch: GET /api/logs?filter=compressed&limit=50 (src/app/(dashboard)/dashboard/logs/CompressionLogTab.tsx:32)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/logs/CompressionLogTab.tsx:32` calls `GET /api/logs?filter=compressed&limit=50` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/logs`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-679735ce736184c2", "name": "Dangling fetch: POST /api/providers/${conn.id}/test (src/app/(dashboard)/dashboard/onboarding/page.tsx:175)", "shortDescription": {"text": "Dangling fetch: POST /api/providers/${conn.id}/test (src/app/(dashboard)/dashboard/onboarding/page.tsx:175)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/onboarding/page.tsx:175` calls `POST /api/providers/${conn.id}/test` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/providers/<p>/test`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-522b23cb19f57eda", "name": "Dangling fetch: POST /api/version-manager/${action} (src/app/(dashboard)/dashboard/cli-code/components/CliproxyapiToolCa", "shortDescription": {"text": "Dangling fetch: POST /api/version-manager/${action} (src/app/(dashboard)/dashboard/cli-code/components/CliproxyapiToolCard.tsx:67)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/cli-code/components/CliproxyapiToolCard.tsx:67` calls `POST /api/version-manager/${action}` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/version-manager/<p>`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-8ee16afa687f3e2d", "name": "Dangling fetch: POST /api/tools/agent-bridge/upstream-ca/test (src/app/(dashboard)/dashboard/tools/agent-bridge/componen", "shortDescription": {"text": "Dangling fetch: POST /api/tools/agent-bridge/upstream-ca/test (src/app/(dashboard)/dashboard/tools/agent-bridge/components/UpstreamCaField.tsx:26)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/tools/agent-bridge/components/UpstreamCaField.tsx:26` calls `POST /api/tools/agent-bridge/upstream-ca/test` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/tools/agent-bridge/upstream-ca/test`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-3d52942ab162356d", "name": "Dangling fetch: POST /api/context/rtk/test (src/app/(dashboard)/dashboard/context/rtk/RtkContextPageClient.tsx:139)", "shortDescription": {"text": "Dangling fetch: POST /api/context/rtk/test (src/app/(dashboard)/dashboard/context/rtk/RtkContextPageClient.tsx:139)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/context/rtk/RtkContextPageClient.tsx:139` calls `POST /api/context/rtk/test` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/context/rtk/test`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-efb3f5ced81a7d97", "name": "Dangling fetch: POST /api/webhooks/${wh.id}/test (src/app/(dashboard)/dashboard/webhooks/WebhooksPageClient.tsx:68)", "shortDescription": {"text": "Dangling fetch: POST /api/webhooks/${wh.id}/test (src/app/(dashboard)/dashboard/webhooks/WebhooksPageClient.tsx:68)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/webhooks/WebhooksPageClient.tsx:68` calls `POST /api/webhooks/${wh.id}/test` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/webhooks/<p>/test`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-8d2605590bebff43", "name": "Dangling fetch: POST /api/webhooks/${webhookId}/test (src/app/(dashboard)/dashboard/webhooks/components/steps/Step3Event", "shortDescription": {"text": "Dangling fetch: POST /api/webhooks/${webhookId}/test (src/app/(dashboard)/dashboard/webhooks/components/steps/Step3EventsAndTest.tsx:45)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/webhooks/components/steps/Step3EventsAndTest.tsx:45` calls `POST /api/webhooks/${webhookId}/test` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/webhooks/<p>/test`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-c6bc7bef118d5dbc", "name": "Dangling fetch: POST /api/combos/test (src/app/(dashboard)/dashboard/combos/page.tsx:880)", "shortDescription": {"text": "Dangling fetch: POST /api/combos/test (src/app/(dashboard)/dashboard/combos/page.tsx:880)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/combos/page.tsx:880` calls `POST /api/combos/test` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/combos/test`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-343d69b6df08a782", "name": "Dangling fetch: POST /api/plugins/${name}/${endpoint} (src/app/(dashboard)/dashboard/plugins/page.tsx:109)", "shortDescription": {"text": "Dangling fetch: POST /api/plugins/${name}/${endpoint} (src/app/(dashboard)/dashboard/plugins/page.tsx:109)"}, "fullDescription": {"text": "`src/app/(dashboard)/dashboard/plugins/page.tsx:109` calls `POST /api/plugins/${name}/${endpoint}` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/plugins/<p>/<p>`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-9c5129e65b0c2048", "name": "Dangling fetch: GET /vault/sync/status (src/lib/obsidian/api.ts:373)", "shortDescription": {"text": "Dangling fetch: GET /vault/sync/status (src/lib/obsidian/api.ts:373)"}, "fullDescription": {"text": "`src/lib/obsidian/api.ts:373` calls `GET /vault/sync/status` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: helper:request\nNormalized path used for matching: `/vault/sync/status`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-cd67c4076e0e7341", "name": "Dangling fetch: POST /vault/sync/trigger (src/lib/obsidian/api.ts:376)", "shortDescription": {"text": "Dangling fetch: POST /vault/sync/trigger (src/lib/obsidian/api.ts:376)"}, "fullDescription": {"text": "`src/lib/obsidian/api.ts:376` calls `POST /vault/sync/trigger` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: helper:request\nNormalized path used for matching: `/vault/sync/trigger`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-58c4ced2e7eb2e00", "name": "Dangling fetch: GET /vault/sync/conflicts (src/lib/obsidian/api.ts:379)", "shortDescription": {"text": "Dangling fetch: GET /vault/sync/conflicts (src/lib/obsidian/api.ts:379)"}, "fullDescription": {"text": "`src/lib/obsidian/api.ts:379` calls `GET /vault/sync/conflicts` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: helper:request\nNormalized path used for matching: `/vault/sync/conflicts`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-d7ab486ae7133cea", "name": "Dangling fetch: POST /vault/sync/resolve (src/lib/obsidian/api.ts:382)", "shortDescription": {"text": "Dangling fetch: POST /vault/sync/resolve (src/lib/obsidian/api.ts:382)"}, "fullDescription": {"text": "`src/lib/obsidian/api.ts:382` calls `POST /vault/sync/resolve` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: helper:request\nNormalized path used for matching: `/vault/sync/resolve`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-4370507f5426b546", "name": "Dangling fetch: GET /api/data (src/lib/evals/evalRunner/builtinSuites.ts:578)", "shortDescription": {"text": "Dangling fetch: GET /api/data (src/lib/evals/evalRunner/builtinSuites.ts:578)"}, "fullDescription": {"text": "`src/lib/evals/evalRunner/builtinSuites.ts:578` calls `GET /api/data` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/data`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-8f316e247be2afb1", "name": "374 backend endpoints not called by scanned frontend", "shortDescription": {"text": "374 backend endpoints not called by scanned frontend"}, "fullDescription": {"text": "No scanned frontend call matched these backend routes. Sample: PUT /api/settings, GET /api/settings/quota-store, PUT /api/settings/quota-store, ANY /api/settings/compression/rules, PUT /api/settings/proxy, POST /api/settings/reasoning-routing-rules, GET /api/settings/reasoning-routing-rules/{id}, PUT /api/settings/database + 366 more. This is fine when endpoints serve external clients (mobile apps, SDKs, third-party integrations, server-side webhooks). Otherwise document consumers or remove dead routes."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/1505"}, "properties": {"repository": "diegosouzapw/OmniRoute", "repoUrl": "https://github.com/diegosouzapw/OmniRoute", "branch": "main"}, "results": [{"ruleId": "WEB003", "level": "warning", "message": {"text": "Public web service has no security.txt"}, "properties": {"repobilityId": 152985, "scanner": "repobility-web-presence", "fingerprint": "5cd26606c5a53c9f403ff7a92a6917c19cf440a23ce03e2b90e8c493312ef8cd", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Repository looks like a public web app/API but no security.txt file or route was discovered.", "evidence": {"rule_id": "WEB003", "scanner": "repobility-web-presence", "references": ["https://www.rfc-editor.org/rfc/rfc9116", "https://github.com/Lissy93/web-check"], "correlation_key": "fp|5cd26606c5a53c9f403ff7a92a6917c19cf440a23ce03e2b90e8c493312ef8cd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".well-known/security.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "AUC001", "level": "warning", "message": {"text": "[AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks but does not define .repobility/access.yml or equivalent authorization documentation."}, "properties": {"repobilityId": 152979, "scanner": "repobility-access-control", "fingerprint": "f1305052c3ba1e6c1cdb5dccc19e58a8168cf78b176658f32b1fc823df3e9d10", "category": "auth", "severity": "medium", "confidence": 0.92, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"scanner": "repobility-access-control", "frameworks": ["Express", "Next.js"], "expected_files": [".repobility/access.yml", ".repobility/access.yaml", ".repobility/access.json", ".repobility/authorization.yml"], "correlation_key": "fp|f1305052c3ba1e6c1cdb5dccc19e58a8168cf78b176658f32b1fc823df3e9d10"}}}, {"ruleId": "DKR007", "level": "warning", "message": {"text": "Docker build context has no .dockerignore"}, "properties": {"repobilityId": 152978, "scanner": "repobility-docker", "fingerprint": "c98378cf8c37e4866e89d6ca06a24b7e8c44654aa34e6e4bf1367c4a4c0c5b44", "category": "docker", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Dockerfile exists but repository root has no .dockerignore.", "evidence": {"rule_id": "DKR007", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/"], "correlation_key": "fp|c98378cf8c37e4866e89d6ca06a24b7e8c44654aa34e6e4bf1367c4a4c0c5b44"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".dockerignore"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKR009", "level": "warning", "message": {"text": "Dockerfile separates apt update from install"}, "properties": {"repobilityId": 152977, "scanner": "repobility-docker", "fingerprint": "e4e770ce175577dbe7268885ad204add720f4154f3e53d296c3c384e263f8958", "category": "docker", "severity": "medium", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Package index update appears without package installation in the same layer.", "evidence": {"rule_id": "DKR009", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/", "https://github.com/hadolint/hadolint"], "correlation_key": "fp|e4e770ce175577dbe7268885ad204add720f4154f3e53d296c3c384e263f8958"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 133}}}]}, {"ruleId": "AGT006", "level": "warning", "message": {"text": "React interval is created without an explicit cleanup"}, "properties": {"repobilityId": 152975, "scanner": "repobility-agent-runtime", "fingerprint": "a1651fafe0dc5ca4fbe797ccab37c2ad7e0135058448a05041efe9adaef48df4", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File uses setInterval with useEffect or hook-style code and no clearInterval cleanup was found.", "evidence": {"rule_id": "AGT006", "scanner": "repobility-agent-runtime", "references": ["https://react.dev/reference/react/useEffect"], "correlation_key": "fp|a1651fafe0dc5ca4fbe797ccab37c2ad7e0135058448a05041efe9adaef48df4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/accountFallback.ts"}, "region": {"startLine": 93}}}]}, {"ruleId": "AGT006", "level": "warning", "message": {"text": "React interval is created without an explicit cleanup"}, "properties": {"repobilityId": 152974, "scanner": "repobility-agent-runtime", "fingerprint": "8881d961e46f89b092f59e7fafe03537c1d72eb11fc07eebdda568e0eaae2f33", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File uses setInterval with useEffect or hook-style code and no clearInterval cleanup was found.", "evidence": {"rule_id": "AGT006", "scanner": "repobility-agent-runtime", "references": ["https://react.dev/reference/react/useEffect"], "correlation_key": "fp|8881d961e46f89b092f59e7fafe03537c1d72eb11fc07eebdda568e0eaae2f33"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/antigravity.ts"}, "region": {"startLine": 233}}}]}, {"ruleId": "CFG006", "level": "warning", "message": {"text": "[CFG006] Missing .gitignore: No .gitignore file. Risk of committing secrets and build artifacts."}, "properties": {"repobilityId": 152945, "scanner": "repobility-threat-engine", "fingerprint": "c65fc71ce58c37a0e07837c0fe294108b731c43ef16027a2f0971c757bbe9a16", "category": "practices", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "No .gitignore file found in repository root", "evidence": {"reason": "No .gitignore file found in repository root", "rule_id": "CFG006", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "repo|practices|cfg006"}}}, {"ruleId": "SEC031", "level": "warning", "message": {"text": "[SEC031] Catastrophic Backtracking Regex (ReDoS): Regex contains nested quantifiers like `(a+)+` or quantified alternation with overlapping branches. On adversarial input these patterns exhibit exponential backtracking, freezing the process. CWE-1333. Real CVEs: CVE-2017-16129 (minimatch), CVE-2021-3807 (ansi-regex), and dozens more."}, "properties": {"repobilityId": 152944, "scanner": "repobility-threat-engine", "fingerprint": "965750c74e78d8601298a31630c676b65fdab08f5c69e3385b5c4589986d7f70", "category": "redos", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "new RegExp(pattern.source, flags);\n}\n\nfunction compileUserPatterns(patterns: Array<string | RegExp>", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC031", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|965750c74e78d8601298a31630c676b65fdab08f5c69e3385b5c4589986d7f70"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/compression/preservation.ts"}, "region": {"startLine": 30}}}]}, {"ruleId": "SEC045", "level": "warning", "message": {"text": "[SEC045] eval()/exec() on stored or user-supplied data: eval() and exec() on data \u2014 even admin-stored data \u2014 is a lateral-movement vector after any one credential compromise. Sandboxes (__builtins__ cleared) are escapable: attackers use object introspection (().__class__.__mro__[-1].__subclasses__()) to reach os.system. CWE-95 (eval injection)."}, "properties": {"repobilityId": 152941, "scanner": "repobility-threat-engine", "fingerprint": "e48310e40b82a6c11d67b2b8f8b8878fe1e5d40c64a237aeaa43305fc34da7be", "category": "injection", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".exec(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC045", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|injection|token|100|sec045"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/comboAgentMiddleware.ts"}, "region": {"startLine": 100}}}]}, {"ruleId": "SEC045", "level": "warning", "message": {"text": "[SEC045] eval()/exec() on stored or user-supplied data: eval() and exec() on data \u2014 even admin-stored data \u2014 is a lateral-movement vector after any one credential compromise. Sandboxes (__builtins__ cleared) are escapable: attackers use object introspection (().__class__.__mro__[-1].__subclasses__()) to reach os.system. CWE-95 (eval injection)."}, "properties": {"repobilityId": 152940, "scanner": "repobility-threat-engine", "fingerprint": "274f7704e126c4b992bf2ad0b900722a02ed097f164d3c6d7c1c130e9d75d2c7", "category": "injection", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".exec(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC045", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|injection|token|331|sec045"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/apiKeyRotator.ts"}, "region": {"startLine": 331}}}]}, {"ruleId": "SEC087", "level": "warning", "message": {"text": "[SEC087] JS: weak Math.random for crypto: Math.random() is not cryptographically secure; using it for tokens/keys/nonces is predictable. Ported from gosec G404 / eslint detect-pseudoRandomBytes concept (Apache-2.0)."}, "properties": {"repobilityId": 152931, "scanner": "repobility-threat-engine", "fingerprint": "a309eb1f3e6463cd4e42f6543368bd3412947e2276151f42686c1a14c20d340a", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "Math.random() * total;\n  let acc = 0;\n  if (active.top > 0 && (acc += activ", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC087", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|a309eb1f3e6463cd4e42f6543368bd3412947e2276151f42686c1a14c20d340a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/autoCombo/engine.ts"}, "region": {"startLine": 159}}}]}, {"ruleId": "SEC087", "level": "warning", "message": {"text": "[SEC087] JS: weak Math.random for crypto: Math.random() is not cryptographically secure; using it for tokens/keys/nonces is predictable. Ported from gosec G404 / eslint detect-pseudoRandomBytes concept (Apache-2.0)."}, "properties": {"repobilityId": 152930, "scanner": "repobility-threat-engine", "fingerprint": "72eff4c0d7fe1bd33f764fac2f64d1244ea168d3947fd746845379deb7ab4c6b", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "Math.random().toString(36).slice(2)}`,\n    };\n  }\n\n  async refreshCopilotToken(githubAccessToken", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC087", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|72eff4c0d7fe1bd33f764fac2f64d1244ea168d3947fd746845379deb7ab4c6b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/github.ts"}, "region": {"startLine": 154}}}]}, {"ruleId": "ERR002", "level": "warning", "message": {"text": "[ERR002] Empty Catch Block: Empty catch blocks hide errors."}, "properties": {"repobilityId": 152929, "scanner": "repobility-threat-engine", "fingerprint": "a2cf20b1fbbf71ef7c942880108140d0ebda647bfa4c63a61115757582729aa7", "category": "error_handling", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".catch(() => {})", "reason": "Pattern matched with no mitigating context found", "rule_id": "ERR002", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|a2cf20b1fbbf71ef7c942880108140d0ebda647bfa4c63a61115757582729aa7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/handlers/embeddings.ts"}, "region": {"startLine": 234}}}]}, {"ruleId": "ERR002", "level": "warning", "message": {"text": "[ERR002] Empty Catch Block: Empty catch blocks hide errors."}, "properties": {"repobilityId": 152928, "scanner": "repobility-threat-engine", "fingerprint": "0b7731064fbfd30154b4709f5d196ca39c0c4c676dd976238582408af09f20c2", "category": "error_handling", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".catch(() => {})", "reason": "Pattern matched with no mitigating context found", "rule_id": "ERR002", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|0b7731064fbfd30154b4709f5d196ca39c0c4c676dd976238582408af09f20c2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/gemini-web.ts"}, "region": {"startLine": 175}}}]}, {"ruleId": "WEB005", "level": "note", "message": {"text": "robots.txt does not advertise a sitemap"}, "properties": {"repobilityId": 152986, "scanner": "repobility-web-presence", "fingerprint": "99ca8a2db121f8721bd12cde0905f331f26be8da30b9602e3bc4b52d63686c59", "category": "quality", "severity": "low", "confidence": 0.74, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Discovered robots file or route lacks a Sitemap directive.", "evidence": {"rule_id": "WEB005", "scanner": "repobility-web-presence", "references": ["https://www.rfc-editor.org/rfc/rfc9309", "https://www.sitemaps.org/protocol.html"], "correlation_key": "fp|99ca8a2db121f8721bd12cde0905f331f26be8da30b9602e3bc4b52d63686c59"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/antigravityHeaders.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "WEB011", "level": "note", "message": {"text": "Public web app has no humans.txt"}, "properties": {"repobilityId": 152984, "scanner": "repobility-web-presence", "fingerprint": "bdd551fbe1ab6405480e0d5755632562c2096cb9e9a6a071ef60e4c27a6873f1", "category": "quality", "severity": "low", "confidence": 0.5, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Repository looks like a public web app but no humans.txt file or route was discovered.", "evidence": {"rule_id": "WEB011", "scanner": "repobility-web-presence", "references": ["https://github.com/Lissy93/web-check"], "correlation_key": "fp|bdd551fbe1ab6405480e0d5755632562c2096cb9e9a6a071ef60e4c27a6873f1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "humans.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "WEB008", "level": "note", "message": {"text": "Public docs site has no llms.txt"}, "properties": {"repobilityId": 152983, "scanner": "repobility-web-presence", "fingerprint": "cdce8ed8706710d39c3e7272dad572dd639cff74fd3d2ac62d8f6f522b891d76", "category": "quality", "severity": "low", "confidence": 0.64, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Repository looks public and documentation-heavy but no llms.txt file or route was discovered.", "evidence": {"rule_id": "WEB008", "scanner": "repobility-web-presence", "references": ["https://llmstxt.org/"], "correlation_key": "fp|cdce8ed8706710d39c3e7272dad572dd639cff74fd3d2ac62d8f6f522b891d76"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "llms.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "WEB002", "level": "note", "message": {"text": "Public web app has no sitemap"}, "properties": {"repobilityId": 152982, "scanner": "repobility-web-presence", "fingerprint": "fccbe72d13ca3ba9197ec37b0daa0802fb6d5ebff54b3eb9f09b59b0f8d0acdf", "category": "quality", "severity": "low", "confidence": 0.72, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Repository looks like a public web app but no sitemap file or route was discovered.", "evidence": {"rule_id": "WEB002", "scanner": "repobility-web-presence", "references": ["https://www.sitemaps.org/protocol.html", "https://github.com/Lissy93/web-check"], "correlation_key": "fp|fccbe72d13ca3ba9197ec37b0daa0802fb6d5ebff54b3eb9f09b59b0f8d0acdf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sitemap.xml"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152973, "scanner": "repobility-ai-code-hygiene", "fingerprint": "9d18354d35312168b3f07f285db0bf5ec2855ebd1a855f8c934b56212a790046", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/services/chatgptTlsClient.ts", "duplicate_line": 17, "correlation_key": "fp|9d18354d35312168b3f07f285db0bf5ec2855ebd1a855f8c934b56212a790046"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/grokTlsClient.ts"}, "region": {"startLine": 17}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152972, "scanner": "repobility-ai-code-hygiene", "fingerprint": "89738305db7a80b6352414d541602d8ecf31c2785e405ea6b38faa0798cba3e4", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/services/crofUsageFetcher.ts", "duplicate_line": 20, "correlation_key": "fp|89738305db7a80b6352414d541602d8ecf31c2785e405ea6b38faa0798cba3e4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/genericQuotaFetcher.ts"}, "region": {"startLine": 22}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152971, "scanner": "repobility-ai-code-hygiene", "fingerprint": "d0c57360dae953688daecd3089223d013f105fcfaca34bd3a21e477273bda692", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/services/bailianQuotaFetcher.ts", "duplicate_line": 17, "correlation_key": "fp|d0c57360dae953688daecd3089223d013f105fcfaca34bd3a21e477273bda692"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/deepseekQuotaFetcher.ts"}, "region": {"startLine": 23}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152970, "scanner": "repobility-ai-code-hygiene", "fingerprint": "75e9521b342baf0d356165b1d9100c46c847d2e29102587abab1281d07149571", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/services/bailianQuotaFetcher.ts", "duplicate_line": 17, "correlation_key": "fp|75e9521b342baf0d356165b1d9100c46c847d2e29102587abab1281d07149571"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/crofUsageFetcher.ts"}, "region": {"startLine": 11}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152969, "scanner": "repobility-ai-code-hygiene", "fingerprint": "bc8b25b02d1bfcef6baa850d90eaefe9608dcdcf666920f91cf78ca9e231c893", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/services/compression/engines/cavemanAdapter.ts", "duplicate_line": 256, "correlation_key": "fp|bc8b25b02d1bfcef6baa850d90eaefe9608dcdcf666920f91cf78ca9e231c893"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/compression/strategySelector.ts"}, "region": {"startLine": 91}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152968, "scanner": "repobility-ai-code-hygiene", "fingerprint": "19bc7dd462c908f8dd7f7e5db2a5c8674a974dba31ae14fe52e0049698610cdd", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/services/bailianQuotaFetcher.ts", "duplicate_line": 17, "correlation_key": "fp|19bc7dd462c908f8dd7f7e5db2a5c8674a974dba31ae14fe52e0049698610cdd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/codexQuotaFetcher.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152967, "scanner": "repobility-ai-code-hygiene", "fingerprint": "8a77c03af398a41f40e600f15cf3e00c1272acf8be7f8e14fcfd70fabac0221f", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/services/chatgptTlsClient.ts", "duplicate_line": 12, "correlation_key": "fp|8a77c03af398a41f40e600f15cf3e00c1272acf8be7f8e14fcfd70fabac0221f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/claudeTlsClient.ts"}, "region": {"startLine": 12}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152966, "scanner": "repobility-ai-code-hygiene", "fingerprint": "a66d9bf1cab1ab969a6a752f31b18dec798bc6773e0b1dbbe8ff621c24c28592", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/services/antigravityObfuscation.ts", "duplicate_line": 3, "correlation_key": "fp|a66d9bf1cab1ab969a6a752f31b18dec798bc6773e0b1dbbe8ff621c24c28592"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/claudeCodeObfuscation.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152965, "scanner": "repobility-ai-code-hygiene", "fingerprint": "76273051550579b8887be76cc274b87ec4618fb3715cf091a76a1204520f39fc", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/handlers/musicGeneration.ts", "duplicate_line": 90, "correlation_key": "fp|76273051550579b8887be76cc274b87ec4618fb3715cf091a76a1204520f39fc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/handlers/videoGeneration.ts"}, "region": {"startLine": 69}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152964, "scanner": "repobility-ai-code-hygiene", "fingerprint": "d43ccdb301f1fdceeb989821121f3818530c44dc24198558ada39e92826215e5", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/handlers/audioSpeech.ts", "duplicate_line": 16, "correlation_key": "fp|d43ccdb301f1fdceeb989821121f3818530c44dc24198558ada39e92826215e5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/handlers/audioTranscription.ts"}, "region": {"startLine": 15}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152963, "scanner": "repobility-ai-code-hygiene", "fingerprint": "1bdeacaa19af5c81577b1d1d2ddb490cb4cd07c2971105f4f21e4cb191edd537", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/executors/qwen-web.ts", "duplicate_line": 168, "correlation_key": "fp|1bdeacaa19af5c81577b1d1d2ddb490cb4cd07c2971105f4f21e4cb191edd537"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/venice-web.ts"}, "region": {"startLine": 116}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152962, "scanner": "repobility-ai-code-hygiene", "fingerprint": "9b50ef37f0ad7699e166969c34bd7197bbf6b43daaa7225bafe20de2413bfa7b", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/executors/phind.ts", "duplicate_line": 143, "correlation_key": "fp|9b50ef37f0ad7699e166969c34bd7197bbf6b43daaa7225bafe20de2413bfa7b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/venice-web.ts"}, "region": {"startLine": 90}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152961, "scanner": "repobility-ai-code-hygiene", "fingerprint": "0d2e4c24422c3ea216fb073524926cc8e542d494093260372db0bbbd8e92a795", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/executors/v0-vercel-web.ts", "duplicate_line": 60, "correlation_key": "fp|0d2e4c24422c3ea216fb073524926cc8e542d494093260372db0bbbd8e92a795"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/venice-web.ts"}, "region": {"startLine": 61}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152960, "scanner": "repobility-ai-code-hygiene", "fingerprint": "dbe309bc6fa7918fcfe8dc15e376b9b7899b5fc24284f4a18fe2352aff59f951", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/executors/doubao-web.ts", "duplicate_line": 17, "correlation_key": "fp|dbe309bc6fa7918fcfe8dc15e376b9b7899b5fc24284f4a18fe2352aff59f951"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/venice-web.ts"}, "region": {"startLine": 17}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152959, "scanner": "repobility-ai-code-hygiene", "fingerprint": "73870a89f0d8eb9ff0299b77d45852e9df813dda83a6cc5e73f0a3ebf2e3e101", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/executors/qwen-web.ts", "duplicate_line": 168, "correlation_key": "fp|73870a89f0d8eb9ff0299b77d45852e9df813dda83a6cc5e73f0a3ebf2e3e101"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/v0-vercel-web.ts"}, "region": {"startLine": 115}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152958, "scanner": "repobility-ai-code-hygiene", "fingerprint": "1bce534962f57d6f14e2df4cf671a86ed9a36527bbb3f28fa9610db7fe8e7f5a", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/executors/phind.ts", "duplicate_line": 143, "correlation_key": "fp|1bce534962f57d6f14e2df4cf671a86ed9a36527bbb3f28fa9610db7fe8e7f5a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/v0-vercel-web.ts"}, "region": {"startLine": 89}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152957, "scanner": "repobility-ai-code-hygiene", "fingerprint": "48c7988f8327eaaddba032ad639b250876cc6650f64b28ff2bddc185241b37a9", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/executors/doubao-web.ts", "duplicate_line": 22, "correlation_key": "fp|48c7988f8327eaaddba032ad639b250876cc6650f64b28ff2bddc185241b37a9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/v0-vercel-web.ts"}, "region": {"startLine": 21}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152956, "scanner": "repobility-ai-code-hygiene", "fingerprint": "0d59dfab29e9cbbc220b86457af42fb7d1b09cdbe35eb1ec6aeaef76964ada9c", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/executors/doubao-web.ts", "duplicate_line": 75, "correlation_key": "fp|0d59dfab29e9cbbc220b86457af42fb7d1b09cdbe35eb1ec6aeaef76964ada9c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/qwen-web.ts"}, "region": {"startLine": 139}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152955, "scanner": "repobility-ai-code-hygiene", "fingerprint": "3861947a1a114f0553fcbb4041629a5226f09011ccf9aa1863230b5ad2b00d43", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/executors/huggingchat.ts", "duplicate_line": 453, "correlation_key": "fp|3861947a1a114f0553fcbb4041629a5226f09011ccf9aa1863230b5ad2b00d43"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/phind.ts"}, "region": {"startLine": 198}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152954, "scanner": "repobility-ai-code-hygiene", "fingerprint": "98dddb4b9aa44d5474122cd85ec2019c7cb8ace7f058007d057607a3814be29d", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/executors/default.ts", "duplicate_line": 388, "correlation_key": "fp|98dddb4b9aa44d5474122cd85ec2019c7cb8ace7f058007d057607a3814be29d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/opencode.ts"}, "region": {"startLine": 62}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152953, "scanner": "repobility-ai-code-hygiene", "fingerprint": "c1e6995e02b3542911889c314052947a37792d9355102373bd13a1c934ac34bb", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/executors/blackbox-web.ts", "duplicate_line": 43, "correlation_key": "fp|c1e6995e02b3542911889c314052947a37792d9355102373bd13a1c934ac34bb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/nlpcloud.ts"}, "region": {"startLine": 24}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152952, "scanner": "repobility-ai-code-hygiene", "fingerprint": "1cd4db61393c94ac64115933b2600497c53917c22f0e3c5aed84d90b4a96063e", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/executors/gitlab.ts", "duplicate_line": 31, "correlation_key": "fp|1cd4db61393c94ac64115933b2600497c53917c22f0e3c5aed84d90b4a96063e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/nlpcloud.ts"}, "region": {"startLine": 20}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152951, "scanner": "repobility-ai-code-hygiene", "fingerprint": "83d882595ad4b458cade73198b36c7685d247f84a6a502e7e7cf14e6a7bd5c6e", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/executors/cliproxyapi.ts", "duplicate_line": 129, "correlation_key": "fp|83d882595ad4b458cade73198b36c7685d247f84a6a502e7e7cf14e6a7bd5c6e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/ninerouter.ts"}, "region": {"startLine": 29}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152950, "scanner": "repobility-ai-code-hygiene", "fingerprint": "32b853b681df0e80b375f46f4914a09d4203a2333718109297c5597f4c3e11c1", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/executors/doubao-web.ts", "duplicate_line": 17, "correlation_key": "fp|32b853b681df0e80b375f46f4914a09d4203a2333718109297c5597f4c3e11c1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/kimi-web.ts"}, "region": {"startLine": 17}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152949, "scanner": "repobility-ai-code-hygiene", "fingerprint": "88abd548a11b413540059db12fb0b232a685ac26dea12ba4baec56574c9ee631", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/executors/blackbox-web.ts", "duplicate_line": 43, "correlation_key": "fp|88abd548a11b413540059db12fb0b232a685ac26dea12ba4baec56574c9ee631"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/gitlab.ts"}, "region": {"startLine": 35}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152948, "scanner": "repobility-ai-code-hygiene", "fingerprint": "a2c7ab29e425a1c5a847bc419c68fc6f1a91614e184a4dce6211dc8bc1752d8d", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/executors/base.ts", "duplicate_line": 356, "correlation_key": "fp|a2c7ab29e425a1c5a847bc419c68fc6f1a91614e184a4dce6211dc8bc1752d8d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/default.ts"}, "region": {"startLine": 253}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152947, "scanner": "repobility-ai-code-hygiene", "fingerprint": "ba1ab73cec42bbf003dbc6afcb6b99ba7709b0e1d4d676e29fe932159749cea1", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/config/audioRegistry.ts", "duplicate_line": 350, "correlation_key": "fp|ba1ab73cec42bbf003dbc6afcb6b99ba7709b0e1d4d676e29fe932159749cea1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/config/registryUtils.ts"}, "region": {"startLine": 17}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 152946, "scanner": "repobility-ai-code-hygiene", "fingerprint": "3b79f0b1937b9ae0b449a1e310adf46658fd7bfab31021b2afe953e63a22328b", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "open-sse/config/agyModels.ts", "duplicate_line": 89, "correlation_key": "fp|3b79f0b1937b9ae0b449a1e310adf46658fd7bfab31021b2afe953e63a22328b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/config/antigravityModelAliases.ts"}, "region": {"startLine": 45}}}]}, {"ruleId": "SEC083", "level": "none", "message": {"text": "[SEC083] JS: new RegExp() with non-literal (and 5 more): Same pattern found in 5 additional files. Review if needed."}, "properties": {"repobilityId": 152939, "scanner": "repobility-threat-engine", "fingerprint": "f18933be2d43a6f2b86aba60a194501d92b01604e86efa860079d4abf0349f9e", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 5 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 5 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC083", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|f18933be2d43a6f2b86aba60a194501d92b01604e86efa860079d4abf0349f9e"}}}, {"ruleId": "MINED053", "level": "none", "message": {"text": "[MINED053] Placeholder Default Username: foo@bar.com / john.doe@example.com / admin/admin / changeme \u2014 typical AI placeholder credentials."}, "properties": {"repobilityId": 152935, "scanner": "repobility-threat-engine", "fingerprint": "9795a602ff394f0f3327ccb65ba846109303ac4fabde17b13e1d9974e5555472", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "placeholder-default-username", "owasp": null, "cwe_ids": ["CWE-1392", "CWE-798"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348025+00:00", "triaged_in_corpus": 10, "observations_count": 456953, "ai_coder_pattern_id": 44}, "scanner": "repobility-threat-engine", "correlation_key": "fp|9795a602ff394f0f3327ccb65ba846109303ac4fabde17b13e1d9974e5555472"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/veoaifree-web.ts"}, "region": {"startLine": 12}}}]}, {"ruleId": "MINED043", "level": "none", "message": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "properties": {"repobilityId": 152934, "scanner": "repobility-threat-engine", "fingerprint": "df4d0be9502dac2e5e2a40106fa27c5edbb572f49e74453ed5321024df368d29", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "http-not-https", "owasp": "A02:2021", "cwe_ids": ["CWE-319"], "precision": 0.917, "promoted_at": "2026-05-18T14:01:32.347999+00:00", "triaged_in_corpus": 12, "observations_count": 4113831, "ai_coder_pattern_id": 15}, "scanner": "repobility-threat-engine", "correlation_key": "fp|df4d0be9502dac2e5e2a40106fa27c5edbb572f49e74453ed5321024df368d29"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/ninerouter.ts"}, "region": {"startLine": 45}}}]}, {"ruleId": "SEC118", "level": "none", "message": {"text": "[SEC118] UUIDv1 / UUIDv3 used for security-sensitive identifier: UUIDv1 encodes the MAC address and timestamp, making it predictable. Used as a session token or password-reset key, it's enumerable."}, "properties": {"repobilityId": 152933, "scanner": "repobility-threat-engine", "fingerprint": "6e3e4adf728bc0b33d3bb0b9a7776ba7a6c23a9834e2378eedebe2e679312ba1", "category": "crypto", "severity": "info", "confidence": 0.1, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Safe pattern 'randomUUID' detected on same line", "evidence": {"match": "crypto.randomUUID", "reason": "Safe pattern 'randomUUID' detected on same line", "rule_id": "SEC118", "scanner": "repobility-threat-engine", "confidence": 0.1, "correlation_key": "code|crypto|token|14|sec118"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/antigravityIdentity.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "SEC118", "level": "none", "message": {"text": "[SEC118] UUIDv1 / UUIDv3 used for security-sensitive identifier: UUIDv1 encodes the MAC address and timestamp, making it predictable. Used as a session token or password-reset key, it's enumerable."}, "properties": {"repobilityId": 152932, "scanner": "repobility-threat-engine", "fingerprint": "18505e862e1cdd8c16e6000f187c557dbdd9f96db84c95e0b969b966d5c04170", "category": "crypto", "severity": "info", "confidence": 0.1, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Safe pattern 'randomUUID' detected on same line", "evidence": {"match": "crypto.randomUUID", "reason": "Safe pattern 'randomUUID' detected on same line", "rule_id": "SEC118", "scanner": "repobility-threat-engine", "confidence": 0.1, "correlation_key": "code|crypto|token|154|sec118"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/github.ts"}, "region": {"startLine": 154}}}]}, {"ruleId": "MINED054", "level": "none", "message": {"text": "[MINED054] Ts As Any: Casting to any (as any) bypasses type checking entirely."}, "properties": {"repobilityId": 152927, "scanner": "repobility-threat-engine", "fingerprint": "8a19183fe99b16ed2a94552da92da01b9174148755b9ce95bab62248f0067a66", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "ts-as-any", "owasp": null, "cwe_ids": ["CWE-704"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348028+00:00", "triaged_in_corpus": 12, "observations_count": 341218, "ai_coder_pattern_id": 98}, "scanner": "repobility-threat-engine", "correlation_key": "fp|8a19183fe99b16ed2a94552da92da01b9174148755b9ce95bab62248f0067a66"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/mcp-server/tools/pluginTools.ts"}, "region": {"startLine": 47}}}]}, {"ruleId": "MINED054", "level": "none", "message": {"text": "[MINED054] Ts As Any: Casting to any (as any) bypasses type checking entirely."}, "properties": {"repobilityId": 152926, "scanner": "repobility-threat-engine", "fingerprint": "2d6ecdf3a6d2d9614b2982a25c90d71a51532d498d1969caa6173fd03df560da", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "ts-as-any", "owasp": null, "cwe_ids": ["CWE-704"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348028+00:00", "triaged_in_corpus": 12, "observations_count": 341218, "ai_coder_pattern_id": 98}, "scanner": "repobility-threat-engine", "correlation_key": "fp|2d6ecdf3a6d2d9614b2982a25c90d71a51532d498d1969caa6173fd03df560da"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/mcp-server/tools/gamificationTools.ts"}, "region": {"startLine": 20}}}]}, {"ruleId": "MINED054", "level": "none", "message": {"text": "[MINED054] Ts As Any: Casting to any (as any) bypasses type checking entirely."}, "properties": {"repobilityId": 152925, "scanner": "repobility-threat-engine", "fingerprint": "65272770fa55f5172fe9438e9732e878e070198da85b179d4b89d991c0326b7e", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "ts-as-any", "owasp": null, "cwe_ids": ["CWE-704"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348028+00:00", "triaged_in_corpus": 12, "observations_count": 341218, "ai_coder_pattern_id": 98}, "scanner": "repobility-threat-engine", "correlation_key": "fp|65272770fa55f5172fe9438e9732e878e070198da85b179d4b89d991c0326b7e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/claude-web-with-auto-refresh.ts"}, "region": {"startLine": 57}}}]}, {"ruleId": "MINED052", "level": "none", "message": {"text": "[MINED052] Ts Any Typed (and 6 more): Same pattern found in 6 additional files. Review if needed."}, "properties": {"repobilityId": 152924, "scanner": "repobility-threat-engine", "fingerprint": "72212593c6dca51ba91f73051cd4c4f876807798f883c1742382668a805cc051", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 6 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"mined": true, "mining": {"slug": "ts-any-typed", "owasp": null, "cwe_ids": ["CWE-704"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348022+00:00", "triaged_in_corpus": 12, "observations_count": 496002, "ai_coder_pattern_id": 97}, "scanner": "repobility-threat-engine", "aggregated": true, "correlation_key": "fp|72212593c6dca51ba91f73051cd4c4f876807798f883c1742382668a805cc051", "aggregated_count": 6}}}, {"ruleId": "MINED052", "level": "none", "message": {"text": "[MINED052] Ts Any Typed: : any used as type annotation. Defeats TypeScript type safety."}, "properties": {"repobilityId": 152923, "scanner": "repobility-threat-engine", "fingerprint": "4a7cc2c103a121ac4e436d4394dc8002bcafb610f03524c9c035543f08963d1b", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "ts-any-typed", "owasp": null, "cwe_ids": ["CWE-704"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348022+00:00", "triaged_in_corpus": 12, "observations_count": 496002, "ai_coder_pattern_id": 97}, "scanner": "repobility-threat-engine", "correlation_key": "fp|4a7cc2c103a121ac4e436d4394dc8002bcafb610f03524c9c035543f08963d1b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/github.ts"}, "region": {"startLine": 39}}}]}, {"ruleId": "MINED052", "level": "none", "message": {"text": "[MINED052] Ts Any Typed: : any used as type annotation. Defeats TypeScript type safety."}, "properties": {"repobilityId": 152922, "scanner": "repobility-threat-engine", "fingerprint": "ea4201d0d0ef4df6b1e449424971a56c41aff1213106273a16c997fe9b1dd18c", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "ts-any-typed", "owasp": null, "cwe_ids": ["CWE-704"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348022+00:00", "triaged_in_corpus": 12, "observations_count": 496002, "ai_coder_pattern_id": 97}, "scanner": "repobility-threat-engine", "correlation_key": "fp|ea4201d0d0ef4df6b1e449424971a56c41aff1213106273a16c997fe9b1dd18c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/gemini-web.ts"}, "region": {"startLine": 166}}}]}, {"ruleId": "MINED052", "level": "none", "message": {"text": "[MINED052] Ts Any Typed: : any used as type annotation. Defeats TypeScript type safety."}, "properties": {"repobilityId": 152921, "scanner": "repobility-threat-engine", "fingerprint": "6b0c6d386d8e0187ad029ebdd3d4ad6cfcb56a95589a88e53bce1f9762071c1d", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "ts-any-typed", "owasp": null, "cwe_ids": ["CWE-704"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348022+00:00", "triaged_in_corpus": 12, "observations_count": 496002, "ai_coder_pattern_id": 97}, "scanner": "repobility-threat-engine", "correlation_key": "fp|6b0c6d386d8e0187ad029ebdd3d4ad6cfcb56a95589a88e53bce1f9762071c1d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/azure-openai.ts"}, "region": {"startLine": 20}}}]}, {"ruleId": "MINED045", "level": "none", "message": {"text": "[MINED045] Ts Non Null Assertion (and 6 more): Same pattern found in 6 additional files. Review if needed."}, "properties": {"repobilityId": 152920, "scanner": "repobility-threat-engine", "fingerprint": "8ef4fc4a1d1afa020d5157bc26f8e97b25b84982c476e0fc9fc2b462b5f52536", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 6 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"mined": true, "mining": {"slug": "ts-non-null-assertion", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348005+00:00", "triaged_in_corpus": 12, "observations_count": 1810954, "ai_coder_pattern_id": 105}, "scanner": "repobility-threat-engine", "aggregated": true, "correlation_key": "fp|8ef4fc4a1d1afa020d5157bc26f8e97b25b84982c476e0fc9fc2b462b5f52536", "aggregated_count": 6}}}, {"ruleId": "MINED045", "level": "none", "message": {"text": "[MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError if wrong."}, "properties": {"repobilityId": 152919, "scanner": "repobility-threat-engine", "fingerprint": "944eb118bd64fee2e230fb408520ec5b3d86ece6394e64917b64a42580ca7973", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "ts-non-null-assertion", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348005+00:00", "triaged_in_corpus": 12, "observations_count": 1810954, "ai_coder_pattern_id": 105}, "scanner": "repobility-threat-engine", "correlation_key": "fp|944eb118bd64fee2e230fb408520ec5b3d86ece6394e64917b64a42580ca7973"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/phind.ts"}, "region": {"startLine": 158}}}]}, {"ruleId": "MINED045", "level": "none", "message": {"text": "[MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError if wrong."}, "properties": {"repobilityId": 152918, "scanner": "repobility-threat-engine", "fingerprint": "5c5ae35c9260724b47a7dfc3df093a63f8fc99e3755f74167126a318a708397d", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "ts-non-null-assertion", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348005+00:00", "triaged_in_corpus": 12, "observations_count": 1810954, "ai_coder_pattern_id": 105}, "scanner": "repobility-threat-engine", "correlation_key": "fp|5c5ae35c9260724b47a7dfc3df093a63f8fc99e3755f74167126a318a708397d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/config/freeTierCatalog.ts"}, "region": {"startLine": 95}}}]}, {"ruleId": "MINED045", "level": "none", "message": {"text": "[MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError if wrong."}, "properties": {"repobilityId": 152917, "scanner": "repobility-threat-engine", "fingerprint": "7addb25d675fc74ae1441ca9cf36b2580c7e621e51244df1bff2e516d1b64d79", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "ts-non-null-assertion", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348005+00:00", "triaged_in_corpus": 12, "observations_count": 1810954, "ai_coder_pattern_id": 105}, "scanner": "repobility-threat-engine", "correlation_key": "fp|7addb25d675fc74ae1441ca9cf36b2580c7e621e51244df1bff2e516d1b64d79"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/config/freeModelCatalog.ts"}, "region": {"startLine": 60}}}]}, {"ruleId": "MINED044", "level": "none", "message": {"text": "[MINED044] Js Console Log Prod (and 6 more): Same pattern found in 6 additional files. Review if needed."}, "properties": {"repobilityId": 152916, "scanner": "repobility-threat-engine", "fingerprint": "ea93f5492ff921e9618c4e30a2631c7b1a2bef829e99f8007e5face821b69969", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 6 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"mined": true, "mining": {"slug": "js-console-log-prod", "owasp": null, "cwe_ids": ["CWE-532"], "languages": ["javascript", "typescript", "tsx", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348003+00:00", "triaged_in_corpus": 10, "observations_count": 1940833, "ai_coder_pattern_id": 102}, "scanner": "repobility-threat-engine", "aggregated": true, "correlation_key": "fp|ea93f5492ff921e9618c4e30a2631c7b1a2bef829e99f8007e5face821b69969", "aggregated_count": 6}}}, {"ruleId": "MINED044", "level": "none", "message": {"text": "[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed."}, "properties": {"repobilityId": 152915, "scanner": "repobility-threat-engine", "fingerprint": "f4ad8756794af582f7fd6222737a98adb0d714bf2f9dc02434f15c58fd860514", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "js-console-log-prod", "owasp": null, "cwe_ids": ["CWE-532"], "languages": ["javascript", "typescript", "tsx", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348003+00:00", "triaged_in_corpus": 10, "observations_count": 1940833, "ai_coder_pattern_id": 102}, "scanner": "repobility-threat-engine", "correlation_key": "fp|f4ad8756794af582f7fd6222737a98adb0d714bf2f9dc02434f15c58fd860514"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/deepseek-web-with-auto-refresh.ts"}, "region": {"startLine": 74}}}]}, {"ruleId": "MINED044", "level": "none", "message": {"text": "[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed."}, "properties": {"repobilityId": 152914, "scanner": "repobility-threat-engine", "fingerprint": "353175f556aa9a67c73e5560a28fd3c034e697989b274c4bee5154a3e9df34ce", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "js-console-log-prod", "owasp": null, "cwe_ids": ["CWE-532"], "languages": ["javascript", "typescript", "tsx", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348003+00:00", "triaged_in_corpus": 10, "observations_count": 1940833, "ai_coder_pattern_id": 102}, "scanner": "repobility-threat-engine", "correlation_key": "fp|353175f556aa9a67c73e5560a28fd3c034e697989b274c4bee5154a3e9df34ce"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/config/credentialLoader.ts"}, "region": {"startLine": 50}}}]}, {"ruleId": "MINED044", "level": "none", "message": {"text": "[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed."}, "properties": {"repobilityId": 152913, "scanner": "repobility-threat-engine", "fingerprint": "6da74b0dd9f0ce2a4036ced5b5b847af0515e5d94b99f04df9dc18df5aa282b3", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "js-console-log-prod", "owasp": null, "cwe_ids": ["CWE-532"], "languages": ["javascript", "typescript", "tsx", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348003+00:00", "triaged_in_corpus": 10, "observations_count": 1940833, "ai_coder_pattern_id": 102}, "scanner": "repobility-threat-engine", "correlation_key": "fp|6da74b0dd9f0ce2a4036ced5b5b847af0515e5d94b99f04df9dc18df5aa282b3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/config/constants.ts"}, "region": {"startLine": 6}}}]}, {"ruleId": "SEC128", "level": "none", "message": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake) (and 13 more): Same pattern found in 13 additional files. Review if needed."}, "properties": {"repobilityId": 152912, "scanner": "repobility-threat-engine", "fingerprint": "fe63a0c3db36cbf73bb9f04d5837f9f34863a99ac7da05df7321980a56d87019", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 13 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 13 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|fe63a0c3db36cbf73bb9f04d5837f9f34863a99ac7da05df7321980a56d87019"}}}, {"ruleId": "SEC029", "level": "none", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 15 more): Same pattern found in 15 additional files. Review if needed."}, "properties": {"repobilityId": 152908, "scanner": "repobility-threat-engine", "fingerprint": "55dd9a4fe1ed00e875ab40ad2e079768353c2831badd419600f381c596cc9071", "category": "ssrf", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 15 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 15 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|55dd9a4fe1ed00e875ab40ad2e079768353c2831badd419600f381c596cc9071"}}}, {"ruleId": "SEC040", "level": "none", "message": {"text": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "properties": {"repobilityId": 152904, "scanner": "repobility-threat-engine", "fingerprint": "c066fdac20648ab02e6c78e05ac6d7be6049c4550b793a58bcd25dd5d0594df0", "category": "xss", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 1 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 1 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC040", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|c066fdac20648ab02e6c78e05ac6d7be6049c4550b793a58bcd25dd5d0594df0"}}}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 153012, "scanner": "repobility-supply-chain", "fingerprint": "f68ec219f61c4f00fdd059a84c2a5d6a1197e7591e32e848298f33ce77723460", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|f68ec219f61c4f00fdd059a84c2a5d6a1197e7591e32e848298f33ce77723460"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 80}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/setup-node` pinned to mutable ref `@v6`: `uses: actions/setup-node@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 153011, "scanner": "repobility-supply-chain", "fingerprint": "7edfaf94e845aa9cfbea85eb68228e94f98f24276781142b00db3c08b66f9f01", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|7edfaf94e845aa9cfbea85eb68228e94f98f24276781142b00db3c08b66f9f01"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 67}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 153010, "scanner": "repobility-supply-chain", "fingerprint": "da20bfccae8e3c3e410f16f3c2641b6007726e2a26097a78c5e7c439fdd643b2", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|da20bfccae8e3c3e410f16f3c2641b6007726e2a26097a78c5e7c439fdd643b2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 66}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/setup-node` pinned to mutable ref `@v6`: `uses: actions/setup-node@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 153009, "scanner": "repobility-supply-chain", "fingerprint": "e54297cf8d2016c3e36ea4736cb4e9a33f75447deb8804f3d0e541efbe856e2a", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|e54297cf8d2016c3e36ea4736cb4e9a33f75447deb8804f3d0e541efbe856e2a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 53}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 153008, "scanner": "repobility-supply-chain", "fingerprint": "043656aa024c1c64efcfe976add501aea29981135bde9382ce2b016353d72d75", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|043656aa024c1c64efcfe976add501aea29981135bde9382ce2b016353d72d75"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/setup-node` pinned to mutable ref `@v6`: `uses: actions/setup-node@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 153007, "scanner": "repobility-supply-chain", "fingerprint": "1284683314954eca356da47eb89d0e873a8edea62bf8c51cb6019659ec8b2655", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|1284683314954eca356da47eb89d0e873a8edea62bf8c51cb6019659ec8b2655"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 153006, "scanner": "repobility-supply-chain", "fingerprint": "0d3deab8928db24243ebf065629c7279e5d62d994a3de96a0aca1a7f6d784fb3", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|0d3deab8928db24243ebf065629c7279e5d62d994a3de96a0aca1a7f6d784fb3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 28}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `peter-evans/dockerhub-description` pinned to mutable ref `@v5`: `uses: peter-evans/dockerhub-description@v5` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 153005, "scanner": "repobility-supply-chain", "fingerprint": "471f3fda382273120e5ec2db697e70f7a86c60c46eb4e8a1f6bc214546860deb", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|471f3fda382273120e5ec2db697e70f7a86c60c46eb4e8a1f6bc214546860deb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 289}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/download-artifact` pinned to mutable ref `@v8`: `uses: actions/download-artifact@v8` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 153004, "scanner": "repobility-supply-chain", "fingerprint": "64baab1046c74ce864571bd0336cc3de2c41d41fa68347e586337d8fc68e45d3", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|64baab1046c74ce864571bd0336cc3de2c41d41fa68347e586337d8fc68e45d3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 232}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 153003, "scanner": "repobility-supply-chain", "fingerprint": "13076b3f482fe032f1707bb988e665cfda5166cce2ba282956cf3daafbfed718", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|13076b3f482fe032f1707bb988e665cfda5166cce2ba282956cf3daafbfed718"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 210}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/upload-artifact` pinned to mutable ref `@v7`: `uses: actions/upload-artifact@v7` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 153002, "scanner": "repobility-supply-chain", "fingerprint": "f19675ebecf062bfe13b4014e19989eda43a7c7d9f15a36553d50df7c25580c6", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|f19675ebecf062bfe13b4014e19989eda43a7c7d9f15a36553d50df7c25580c6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 189}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 153001, "scanner": "repobility-supply-chain", "fingerprint": "052557466db7fc4eeebc3919eb4c32d5e65a318b662bad585ebd817ccf83e9b7", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|052557466db7fc4eeebc3919eb4c32d5e65a318b662bad585ebd817ccf83e9b7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 141}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 153000, "scanner": "repobility-supply-chain", "fingerprint": "f8033bd7fd404e85b249295e3dc855105ed62828116ceee82b9147d1237f06c9", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|f8033bd7fd404e85b249295e3dc855105ed62828116ceee82b9147d1237f06c9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `softprops/action-gh-release` pinned to mutable ref `@v3`: `uses: softprops/action-gh-release@v3` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 152999, "scanner": "repobility-supply-chain", "fingerprint": "a5a88c93ffe3f79510c79037d2666a2601ac128cd9179fb964cd6c0bcac8bb22", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|a5a88c93ffe3f79510c79037d2666a2601ac128cd9179fb964cd6c0bcac8bb22"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/electron-release.yml"}, "region": {"startLine": 224}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/download-artifact` pinned to mutable ref `@v8`: `uses: actions/download-artifact@v8` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 152998, "scanner": "repobility-supply-chain", "fingerprint": "03c9dc51de91c19567c346d50a37a8e8257ad2d93cfb4931f25d275cd9278ff3", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|03c9dc51de91c19567c346d50a37a8e8257ad2d93cfb4931f25d275cd9278ff3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/electron-release.yml"}, "region": {"startLine": 202}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 152997, "scanner": "repobility-supply-chain", "fingerprint": "810c0ab4d10b1b52c83e3771d12ab614130a8b2b50c1d6873f216f45ad9f23a7", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|810c0ab4d10b1b52c83e3771d12ab614130a8b2b50c1d6873f216f45ad9f23a7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/electron-release.yml"}, "region": {"startLine": 197}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/upload-artifact` pinned to mutable ref `@v7`: `uses: actions/upload-artifact@v7` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 152996, "scanner": "repobility-supply-chain", "fingerprint": "f612c8eefb3371e736011d05d15a13cd2a0d58780b70be012bd0fe710c43fd0f", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|f612c8eefb3371e736011d05d15a13cd2a0d58780b70be012bd0fe710c43fd0f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/electron-release.yml"}, "region": {"startLine": 186}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/cache` pinned to mutable ref `@v5`: `uses: actions/cache@v5` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 152995, "scanner": "repobility-supply-chain", "fingerprint": "117a549bb945cca5f986d4974f702963804be6771c43c147a60d470b07d68906", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|117a549bb945cca5f986d4974f702963804be6771c43c147a60d470b07d68906"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/electron-release.yml"}, "region": {"startLine": 82}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/setup-node` pinned to mutable ref `@v6`: `uses: actions/setup-node@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 152994, "scanner": "repobility-supply-chain", "fingerprint": "79efcb25edb1505083fc8f2d85d6a57ef500f03c953f37e29ecdac95ced939ce", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|79efcb25edb1505083fc8f2d85d6a57ef500f03c953f37e29ecdac95ced939ce"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/electron-release.yml"}, "region": {"startLine": 76}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 152993, "scanner": "repobility-supply-chain", "fingerprint": "8a46e74e47ddedc5505c7e4f5fc4b4982e44614589e83487f0c818d1541a780d", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|8a46e74e47ddedc5505c7e4f5fc4b4982e44614589e83487f0c818d1541a780d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/electron-release.yml"}, "region": {"startLine": 74}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 152992, "scanner": "repobility-supply-chain", "fingerprint": "68b7c884e9b6540171404c4fd55beaf091ae06f2684e9420140e37157de87780", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|68b7c884e9b6540171404c4fd55beaf091ae06f2684e9420140e37157de87780"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/electron-release.yml"}, "region": {"startLine": 27}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/setup-node` pinned to mutable ref `@v6`: `uses: actions/setup-node@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 152991, "scanner": "repobility-supply-chain", "fingerprint": "c8a0bc5c5ca8549ddeeb2d40f5219cfe2ebe54a8847cab5ef2317285d658d2b6", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|c8a0bc5c5ca8549ddeeb2d40f5219cfe2ebe54a8847cab5ef2317285d658d2b6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/npm-publish.yml"}, "region": {"startLine": 180}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 152990, "scanner": "repobility-supply-chain", "fingerprint": "3e17a9993fa8e2d5b0f36ba354b3e954cbe038a66f98d7b4aa912e6ec4d99ba1", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|3e17a9993fa8e2d5b0f36ba354b3e954cbe038a66f98d7b4aa912e6ec4d99ba1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/npm-publish.yml"}, "region": {"startLine": 177}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/setup-node` pinned to mutable ref `@v6`: `uses: actions/setup-node@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 152989, "scanner": "repobility-supply-chain", "fingerprint": "4a38516493816b64bf5671507015f3171051367915032e63eab4ebcdbcea3533", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|4a38516493816b64bf5671507015f3171051367915032e63eab4ebcdbcea3533"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/npm-publish.yml"}, "region": {"startLine": 60}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 152988, "scanner": "repobility-supply-chain", "fingerprint": "93658446de64b042956e6a72fc80961c159f19d8d739c5f5f9e14c78f6ab3456", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|93658446de64b042956e6a72fc80961c159f19d8d739c5f5f9e14c78f6ab3456"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/npm-publish.yml"}, "region": {"startLine": 53}}}]}, {"ruleId": "MINED118", "level": "error", "message": {"text": "[MINED118] Dockerfile FROM `node:24-trixie-slim` not pinned by digest: `FROM node:24-trixie-slim` resolves the tag at build time. The registry CAN re-push a different image for the same tag, so every build is potentially different. Production images should pin to `image@sha256:...` for reproducibility + supply-chain integrity."}, "properties": {"repobilityId": 152987, "scanner": "repobility-supply-chain", "fingerprint": "79c7d83ed778b5e031c376ceda970381b2d1c32e898fa415a6acb15348e231fb", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "docker-from-unpinned", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["dockerfile"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|79c7d83ed778b5e031c376ceda970381b2d1c32e898fa415a6acb15348e231fb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "JRN004", "level": "error", "message": {"text": "Consent is collected in UI without visible backend audit persistence"}, "properties": {"repobilityId": 152981, "scanner": "repobility-journey-contract", "fingerprint": "636e4950bf59f43731cee8def16202fc770edbbb005ed065b3c9d52dc6cc5aab", "category": "auth", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Frontend consent wording was found, but backend consent/audit metadata was not visible.", "evidence": {"rule_id": "JRN004", "scanner": "repobility-journey-contract", "references": ["https://repobility.com/library/authorization/"], "correlation_key": "code|auth|token|322|jrn004", "backend_consent_model": false, "backend_audit_signal_count": 1}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/compression/engines/rtk/commandDetector.ts"}, "region": {"startLine": 322}}}]}, {"ruleId": "DKR014", "level": "error", "message": {"text": "Dockerfile copies the entire context without .dockerignore"}, "properties": {"repobilityId": 152976, "scanner": "repobility-docker", "fingerprint": "05e15082e2a40f82214dcea7e870786ae6e3cb9455f4cccc55b872455a632cd8", "category": "docker", "severity": "high", "confidence": 0.92, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Broad context copy and missing .dockerignore were found together.", "evidence": {"rule_id": "DKR014", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/"], "correlation_key": "fp|05e15082e2a40f82214dcea7e870786ae6e3cb9455f4cccc55b872455a632cd8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 44}}}]}, {"ruleId": "SEC085", "level": "error", "message": {"text": "[SEC085] JS: child_process.exec with non-literal: child_process.exec with user-derived input enables command injection. Ported from eslint-plugin-security detect-child-process (Apache-2.0)."}, "properties": {"repobilityId": 152943, "scanner": "repobility-threat-engine", "fingerprint": "58a7a8cf341ffb0f3c4f19b6e99909d9615398d439b8c19e3f20ee4860688603", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "exec(msg", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC085", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|58a7a8cf341ffb0f3c4f19b6e99909d9615398d439b8c19e3f20ee4860688603"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/comboAgentMiddleware.ts"}, "region": {"startLine": 100}}}]}, {"ruleId": "SEC085", "level": "error", "message": {"text": "[SEC085] JS: child_process.exec with non-literal: child_process.exec with user-derived input enables command injection. Ported from eslint-plugin-security detect-child-process (Apache-2.0)."}, "properties": {"repobilityId": 152942, "scanner": "repobility-threat-engine", "fingerprint": "8fdfb3f4c8bc72469c2302b2563d2f03caa7cf3f1fd62d4fb3a6b8ea0ca8f0ea", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "exec(selectedKeyId", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC085", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|8fdfb3f4c8bc72469c2302b2563d2f03caa7cf3f1fd62d4fb3a6b8ea0ca8f0ea"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/apiKeyRotator.ts"}, "region": {"startLine": 331}}}]}, {"ruleId": "SEC083", "level": "error", "message": {"text": "[SEC083] JS: new RegExp() with non-literal: new RegExp(<variable>) \u2014 variable input can craft a ReDoS pattern. Ported from eslint-plugin-security detect-non-literal-regexp (Apache-2.0)."}, "properties": {"repobilityId": 152938, "scanner": "repobility-threat-engine", "fingerprint": "e439adbe02387967e14826ac0e183f9f779a06a6eab7149f0714c161960083cb", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "new RegExp(pattern", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC083", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|e439adbe02387967e14826ac0e183f9f779a06a6eab7149f0714c161960083cb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/comboAgentMiddleware.ts"}, "region": {"startLine": 134}}}]}, {"ruleId": "SEC083", "level": "error", "message": {"text": "[SEC083] JS: new RegExp() with non-literal: new RegExp(<variable>) \u2014 variable input can craft a ReDoS pattern. Ported from eslint-plugin-security detect-non-literal-regexp (Apache-2.0)."}, "properties": {"repobilityId": 152937, "scanner": "repobility-threat-engine", "fingerprint": "f999b34c1665a694648db3dbc1458482fdd49eefa07339313fe7f7a6b5e97b12", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "new RegExp(escapeRegex", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC083", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|f999b34c1665a694648db3dbc1458482fdd49eefa07339313fe7f7a6b5e97b12"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/claudeCodeObfuscation.ts"}, "region": {"startLine": 50}}}]}, {"ruleId": "SEC083", "level": "error", "message": {"text": "[SEC083] JS: new RegExp() with non-literal: new RegExp(<variable>) \u2014 variable input can craft a ReDoS pattern. Ported from eslint-plugin-security detect-non-literal-regexp (Apache-2.0)."}, "properties": {"repobilityId": 152936, "scanner": "repobility-threat-engine", "fingerprint": "ef51f915abfca5bb0fae3f369d14e93c6cd04f04425bfe7a94a7dcc095141d6a", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "new RegExp(escapeRegex", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC083", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|ef51f915abfca5bb0fae3f369d14e93c6cd04f04425bfe7a94a7dcc095141d6a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/antigravityObfuscation.ts"}, "region": {"startLine": 46}}}]}, {"ruleId": "SEC128", "level": "error", "message": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work completes \u2014 DB writes lost, emails not sent, race conditions. This is one of the top-3 errors AI coders make: they understand async-shape but drop the await keyword when chaining multiple ops. Surfaces as flaky tests or silently dropped data in production."}, "properties": {"repobilityId": 152911, "scanner": "repobility-threat-engine", "fingerprint": "46a4bef4abd1394416db41510864bb06f19d551ce516ab47d3201b8a05917f17", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "_streamableSessions.delete(sessionId);", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|46a4bef4abd1394416db41510864bb06f19d551ce516ab47d3201b8a05917f17"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/mcp-server/httpTransport.ts"}, "region": {"startLine": 71}}}]}, {"ruleId": "SEC128", "level": "error", "message": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work completes \u2014 DB writes lost, emails not sent, race conditions. This is one of the top-3 errors AI coders make: they understand async-shape but drop the await keyword when chaining multiple ops. Surfaces as flaky tests or silently dropped data in production."}, "properties": {"repobilityId": 152910, "scanner": "repobility-threat-engine", "fingerprint": "0dfad7207cf98ae9391d7beea37d39226fa9336aadcc3c1e11ec26e18b3e23c5", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "tokenCache.delete(this.currentUserToken);", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|0dfad7207cf98ae9391d7beea37d39226fa9336aadcc3c1e11ec26e18b3e23c5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/deepseek-web-with-auto-refresh.ts"}, "region": {"startLine": 104}}}]}, {"ruleId": "SEC128", "level": "error", "message": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work completes \u2014 DB writes lost, emails not sent, race conditions. This is one of the top-3 errors AI coders make: they understand async-shape but drop the await keyword when chaining multiple ops. Surfaces as flaky tests or silently dropped data in production."}, "properties": {"repobilityId": 152909, "scanner": "repobility-threat-engine", "fingerprint": "aa3b792986bfe05623b47b737256fbefd2478b36ce627180be94ad7f9edd2ff9", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "remaining.delete(key);", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|aa3b792986bfe05623b47b737256fbefd2478b36ce627180be94ad7f9edd2ff9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/config/cliFingerprints.ts"}, "region": {"startLine": 268}}}]}, {"ruleId": "SEC029", "level": "error", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches."}, "properties": {"repobilityId": 152907, "scanner": "repobility-threat-engine", "fingerprint": "bf8a8614a8d70cce787ac7a090dd08664a4931825b476ce135f43f6b5b99acc6", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "Url(v", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|bf8a8614a8d70cce787ac7a090dd08664a4931825b476ce135f43f6b5b99acc6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/config/datarobot.ts"}, "region": {"startLine": 9}}}]}, {"ruleId": "SEC029", "level": "error", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches."}, "properties": {"repobilityId": 152906, "scanner": "repobility-threat-engine", "fingerprint": "feb31f7b5bdb2ddc776a86a0da504c16de2b10e5677db95cf66fee41952b05e5", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "Url(v", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|feb31f7b5bdb2ddc776a86a0da504c16de2b10e5677db95cf66fee41952b05e5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/config/bedrock.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "SEC029", "level": "error", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches."}, "properties": {"repobilityId": 152905, "scanner": "repobility-threat-engine", "fingerprint": "86a151faa04dea49a08c2debb2b7cc8bf9f5e72f499b74053379127033687371", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "Url(v", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|86a151faa04dea49a08c2debb2b7cc8bf9f5e72f499b74053379127033687371"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/config/azureAi.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "SEC040", "level": "error", "message": {"text": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data: Setting .innerHTML with a template literal that interpolates server-supplied or user-supplied data is the canonical stored/reflected XSS vector. The browser parses the HTML and executes any <script> or event-handler attributes in the data. CWE-79. Especially dangerous when the data comes from a CV parser, profile field, or any user-input pipeline."}, "properties": {"repobilityId": 152903, "scanner": "repobility-threat-engine", "fingerprint": "cdb85f65eab19095f2a987e1f9f6709aa161deb004bbd433268e337dfc881fd7", "category": "xss", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "map(\n        (entry) =>\n          `${entry.target.modelStr}=${entry.score?.score.toFixed(3)} pass=${", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC040", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|cdb85f65eab19095f2a987e1f9f6709aa161deb004bbd433268e337dfc881fd7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/evalRouting.ts"}, "region": {"startLine": 264}}}]}, {"ruleId": "SEC040", "level": "error", "message": {"text": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data: Setting .innerHTML with a template literal that interpolates server-supplied or user-supplied data is the canonical stored/reflected XSS vector. The browser parses the HTML and executes any <script> or event-handler attributes in the data. CWE-79. Especially dangerous when the data comes from a CV parser, profile field, or any user-input pipeline."}, "properties": {"repobilityId": 152902, "scanner": "repobility-threat-engine", "fingerprint": "6b8da31ac8ac8e9511c4c04eeb58ca062616671a52f752dbb94d859ac86df113", "category": "xss", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "map((_, i) => `extra_${i}", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC040", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|6b8da31ac8ac8e9511c4c04eeb58ca062616671a52f752dbb94d859ac86df113"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/apiKeyRotator.ts"}, "region": {"startLine": 233}}}]}, {"ruleId": "SEC040", "level": "error", "message": {"text": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data: Setting .innerHTML with a template literal that interpolates server-supplied or user-supplied data is the canonical stored/reflected XSS vector. The browser parses the HTML and executes any <script> or event-handler attributes in the data. CWE-79. Especially dangerous when the data comes from a CV parser, profile field, or any user-input pipeline."}, "properties": {"repobilityId": 152901, "scanner": "repobility-threat-engine", "fingerprint": "b5d03b5e07d2c5697dbd0f0ce9d78caa6590f0e2da78ae7e66a7d625101d9b6c", "category": "xss", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "map((baseUrl) => `${baseUrl}${path}", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC040", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|b5d03b5e07d2c5697dbd0f0ce9d78caa6590f0e2da78ae7e66a7d625101d9b6c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/config/antigravityUpstream.ts"}, "region": {"startLine": 11}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "[MINED116] Workflow uses `secrets.SONAR_HOST_URL` on a `pull_request` trigger: This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.SONAR_HOST_URL }` lets a PR from any fork exfiltrate the secret (modify a script, log the value, etc.). Use `pull_request_target` ONLY with strict checkout discipline (no fork code in the trusted context)."}, "properties": {"repobilityId": 153014, "scanner": "repobility-supply-chain", "fingerprint": "4bd3a23c176581f06ba1fd573474374f0e5d894b77be2b30600396fa2ed5fed6", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|4bd3a23c176581f06ba1fd573474374f0e5d894b77be2b30600396fa2ed5fed6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 398}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "[MINED116] Workflow uses `secrets.SONAR_TOKEN` on a `pull_request` trigger: This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.SONAR_TOKEN }` lets a PR from any fork exfiltrate the secret (modify a script, log the value, etc.). Use `pull_request_target` ONLY with strict checkout discipline (no fork code in the trusted context)."}, "properties": {"repobilityId": 153013, "scanner": "repobility-supply-chain", "fingerprint": "1d543be636599570c41381680b147233d74f97c2cced0b82a27b8019d3e917dd", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|1d543be636599570c41381680b147233d74f97c2cced0b82a27b8019d3e917dd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 397}}}]}, {"ruleId": "JRN001", "level": "error", "message": {"text": "Token handoff appears to use a callback URL or fragment"}, "properties": {"repobilityId": 152980, "scanner": "repobility-journey-contract", "fingerprint": "d403e7432c22ec50940d4485009fc6bd43b19d9a786bbe56fcf7004bbdd9a1cf", "category": "auth", "severity": "critical", "confidence": 0.88, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Callback/redirect wording, token-in-URL syntax, and navigation code appear near each other.", "evidence": {"rule_id": "JRN001", "scanner": "repobility-journey-contract", "references": ["https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html", "https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html"], "correlation_key": "code|auth|token|275|jrn001"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/executors/chatgpt-web.ts"}, "region": {"startLine": 275}}}]}, {"ruleId": "scanner-34880db050e1ee34", "level": "note", "message": {"text": "Possibly dead Python function: bridge"}, "properties": {"repobilityId": "9cbfc3e6c0572b74", "scanner": "scanner-primary", "fingerprint": "34880db050e1ee34", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/vnc-browser/chromium/cdp-bridge.py:15"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4471264ad3dc2b76", "level": "note", "message": {"text": "Possibly dead Python function: pipe"}, "properties": {"repobilityId": "898ed0e84e7d1cd8", "scanner": "scanner-primary", "fingerprint": "4471264ad3dc2b76", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/vnc-browser/chromium/cdp-bridge.py:26"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-02702249c7fbdbb1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 open-sse/services/rateLimitManager.ts:521"}, "properties": {"repobilityId": "65551b0f61a77b3d", "scanner": "scanner-primary", "fingerprint": "02702249c7fbdbb1", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/rateLimitManager.ts"}, "region": {"startLine": 521}}}]}, {"ruleId": "scanner-388df324789223b3", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 open-sse/services/batchProcessor.ts:48"}, "properties": {"repobilityId": "41fff4b14155f8e4", "scanner": "scanner-primary", "fingerprint": "388df324789223b3", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/batchProcessor.ts"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-7aa4d9c03e7fbc92", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 tests/unit/t3-chat-web.test.ts:11"}, "properties": {"repobilityId": "3c9209941480e4df", "scanner": "scanner-primary", "fingerprint": "7aa4d9c03e7fbc92", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/t3-chat-web.test.ts"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-cdec911bcff7ab56", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 tests/unit/check-test-discovery.test.ts:2"}, "properties": {"repobilityId": "1e9b94beb6fbc81d", "scanner": "scanner-primary", "fingerprint": "cdec911bcff7ab56", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/check-test-discovery.test.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-99de015baaa57b9f", "level": "warning", "message": {"text": "Custom React Flow node registered without explicit width/height \u2014 tests/unit/ui/providerCascadeNode.test.tsx:70"}, "properties": {"repobilityId": "364f9969b5bcdce3", "scanner": "scanner-primary", "fingerprint": "99de015baaa57b9f", "layer": "frontend", "severity": "medium", "confidence": 0.85, "tags": ["frontend-quality", "fq.rfnode.no-dims"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/ui/providerCascadeNode.test.tsx"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-452c06ea175f5c95", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/shared/utils/machineId.ts:176"}, "properties": {"repobilityId": "af5d129b11483524", "scanner": "scanner-primary", "fingerprint": "452c06ea175f5c95", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/utils/machineId.ts"}, "region": {"startLine": 176}}}]}, {"ruleId": "scanner-d51e1845a898f1c4", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/CommandPalette.tsx:320"}, "properties": {"repobilityId": "9bbbb8c40c70ab8c", "scanner": "scanner-primary", "fingerprint": "d51e1845a898f1c4", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/CommandPalette.tsx"}, "region": {"startLine": 320}}}]}, {"ruleId": "scanner-96ef76fb938df6ec", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/shared/components/PricingModal.tsx:104"}, "properties": {"repobilityId": "657c6eb9af52143e", "scanner": "scanner-primary", "fingerprint": "96ef76fb938df6ec", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.button.no-label"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/PricingModal.tsx"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-1b2ee553db0eeeed", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/NoAuthAccountCard.tsx:406"}, "properties": {"repobilityId": "985decf79bac049a", "scanner": "scanner-primary", "fingerprint": "1b2ee553db0eeeed", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/NoAuthAccountCard.tsx"}, "region": {"startLine": 406}}}]}, {"ruleId": "scanner-44a327d6574faea1", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/shared/components/OAuthModal.tsx:733"}, "properties": {"repobilityId": "a6f9e70ca93cffd5", "scanner": "scanner-primary", "fingerprint": "44a327d6574faea1", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/OAuthModal.tsx"}, "region": {"startLine": 733}}}]}, {"ruleId": "scanner-4d5e74e22ac91c1c", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/Sidebar.tsx:401"}, "properties": {"repobilityId": "0b8ca97ad7d27818", "scanner": "scanner-primary", "fingerprint": "4d5e74e22ac91c1c", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/Sidebar.tsx"}, "region": {"startLine": 401}}}]}, {"ruleId": "scanner-1abc9bc4a9d678d9", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/ModelRoutingSection.tsx:304"}, "properties": {"repobilityId": "270a2100b253c4ad", "scanner": "scanner-primary", "fingerprint": "1abc9bc4a9d678d9", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/ModelRoutingSection.tsx"}, "region": {"startLine": 304}}}]}, {"ruleId": "scanner-a7f766b97be37b78", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/CollapsibleSection.tsx:39"}, "properties": {"repobilityId": "9cf4ff71f906e017", "scanner": "scanner-primary", "fingerprint": "a7f766b97be37b78", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/CollapsibleSection.tsx"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-95a322fb1e69d5bd", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/Collapsible.tsx:84"}, "properties": {"repobilityId": "059296e2dc367c1c", "scanner": "scanner-primary", "fingerprint": "95a322fb1e69d5bd", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/Collapsible.tsx"}, "region": {"startLine": 84}}}]}, {"ruleId": "scanner-819f402c2c1ca792", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/analytics/charts.tsx:64"}, "properties": {"repobilityId": "4ecbf6f26a0d2413", "scanner": "scanner-primary", "fingerprint": "819f402c2c1ca792", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/analytics/charts.tsx"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-bdb5fe1ad1781f00", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/analytics/ApiKeyFilterDropdown.tsx:190"}, "properties": {"repobilityId": "d00bdb167ac4d394", "scanner": "scanner-primary", "fingerprint": "bdb5fe1ad1781f00", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/analytics/ApiKeyFilterDropdown.tsx"}, "region": {"startLine": 190}}}]}, {"ruleId": "scanner-83ffb5dd778516ae", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/docs/DocsSidebar.tsx:68"}, "properties": {"repobilityId": "7b43dee51b0dd7dc", "scanner": "scanner-primary", "fingerprint": "83ffb5dd778516ae", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/docs/DocsSidebar.tsx"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-22f1871e3a98c806", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/shared/components/cli/CliToolCard.tsx:59"}, "properties": {"repobilityId": "689cd8a2d617442d", "scanner": "scanner-primary", "fingerprint": "22f1871e3a98c806", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/cli/CliToolCard.tsx"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-b8499727167c79ee", "level": "note", "message": {"text": "React Flow <Controls> without dark theming \u2014 src/shared/components/flow/FlowCanvas.tsx:145"}, "properties": {"repobilityId": "6fa172afc02a65d4", "scanner": "scanner-primary", "fingerprint": "b8499727167c79ee", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.controls.no-bg"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/flow/FlowCanvas.tsx"}, "region": {"startLine": 145}}}]}, {"ruleId": "scanner-fd33404fcf6ade2b", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:71"}, "properties": {"repobilityId": "0d72350965068f5b", "scanner": "scanner-primary", "fingerprint": "fd33404fcf6ade2b", "layer": "frontend", "severity": "medium", "confidence": 0.8, "tags": ["frontend-quality", "fq.dangerous-html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/layout.tsx"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-2731a458d9904736", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/api/providers/client/route.ts:17"}, "properties": {"repobilityId": "35ae9361a2d21b77", "scanner": "scanner-primary", "fingerprint": "2731a458d9904736", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/providers/client/route.ts"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-385b19c2a742c4fe", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/api/providers/[id]/route.ts:88"}, "properties": {"repobilityId": "3a06172c4314db32", "scanner": "scanner-primary", "fingerprint": "385b19c2a742c4fe", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/providers/[id]/route.ts"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-849b95d761769c36", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/HomePageClient.tsx:849"}, "properties": {"repobilityId": "abac12cb69091b43", "scanner": "scanner-primary", "fingerprint": "849b95d761769c36", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/HomePageClient.tsx"}, "region": {"startLine": 849}}}]}, {"ruleId": "scanner-f8303f784976eb98", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/HomePageClient.tsx:273"}, "properties": {"repobilityId": "009e3229905c4d50", "scanner": "scanner-primary", "fingerprint": "f8303f784976eb98", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/HomePageClient.tsx"}, "region": {"startLine": 273}}}]}, {"ruleId": "scanner-4c6a0aa279386b69", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/BackgroundDegradationTab.tsx:185"}, "properties": {"repobilityId": "80c53efd8bb3de1f", "scanner": "scanner-primary", "fingerprint": "4c6a0aa279386b69", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/BackgroundDegradationTab.tsx"}, "region": {"startLine": 185}}}]}, {"ruleId": "scanner-c8290f243a3e53d7", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/SidebarTab.tsx:268"}, "properties": {"repobilityId": "7da279dcccd35a21", "scanner": "scanner-primary", "fingerprint": "c8290f243a3e53d7", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/SidebarTab.tsx"}, "region": {"startLine": 268}}}]}, {"ruleId": "scanner-cf45c7eaaa4b4daa", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/ModelAliasesTab.tsx:136"}, "properties": {"repobilityId": "afa3bec56996ef55", "scanner": "scanner-primary", "fingerprint": "cf45c7eaaa4b4daa", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/ModelAliasesTab.tsx"}, "region": {"startLine": 136}}}]}, {"ruleId": "scanner-5223315a6e5c15fe", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/ComplianceTab.tsx:83"}, "properties": {"repobilityId": "153660b0a165b573", "scanner": "scanner-primary", "fingerprint": "5223315a6e5c15fe", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/ComplianceTab.tsx"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-1df64275fec9a6f9", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/FallbackChainsEditor.tsx:182"}, "properties": {"repobilityId": "a0f86dced748c41e", "scanner": "scanner-primary", "fingerprint": "1df64275fec9a6f9", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/FallbackChainsEditor.tsx"}, "region": {"startLine": 182}}}]}, {"ruleId": "scanner-6bfca72817d2d411", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/ModelCapabilityOverridesTab.tsx:296"}, "properties": {"repobilityId": "36d8c417a9ecba78", "scanner": "scanner-primary", "fingerprint": "6bfca72817d2d411", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/ModelCapabilityOverridesTab.tsx"}, "region": {"startLine": 296}}}]}, {"ruleId": "scanner-d9d5581c42db8aec", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/FeatureFlagCard.tsx:168"}, "properties": {"repobilityId": "ddc7bcce7ed03447", "scanner": "scanner-primary", "fingerprint": "d9d5581c42db8aec", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/FeatureFlagCard.tsx"}, "region": {"startLine": 168}}}]}, {"ruleId": "scanner-1584eb3ed0e1d02b", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/SystemStorageTab.tsx:842"}, "properties": {"repobilityId": "4c0a2fc9c32fe26e", "scanner": "scanner-primary", "fingerprint": "1584eb3ed0e1d02b", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/SystemStorageTab.tsx"}, "region": {"startLine": 842}}}]}, {"ruleId": "scanner-4be370a7b511645c", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/IPFilterSection.tsx:223"}, "properties": {"repobilityId": "2e2de8b0910f04ed", "scanner": "scanner-primary", "fingerprint": "4be370a7b511645c", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/IPFilterSection.tsx"}, "region": {"startLine": 223}}}]}, {"ruleId": "scanner-4b3fdfc65ea7ae5b", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/ModelAliasesUnified.tsx:287"}, "properties": {"repobilityId": "c7d2965132a075e5", "scanner": "scanner-primary", "fingerprint": "4b3fdfc65ea7ae5b", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/ModelAliasesUnified.tsx"}, "region": {"startLine": 287}}}]}, {"ruleId": "scanner-cb24de7dffac7014", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/PricingTab.tsx:723"}, "properties": {"repobilityId": "731dd4d59ff29c02", "scanner": "scanner-primary", "fingerprint": "cb24de7dffac7014", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/PricingTab.tsx"}, "region": {"startLine": 723}}}]}, {"ruleId": "scanner-0f6d1765d3844c86", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/SessionInfoCard.tsx:138"}, "properties": {"repobilityId": "b8e2ba439b2b696b", "scanner": "scanner-primary", "fingerprint": "0f6d1765d3844c86", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/SessionInfoCard.tsx"}, "region": {"startLine": 138}}}]}, {"ruleId": "scanner-860861ba2bb5b52b", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/CodexAutoPingTab.tsx:129"}, "properties": {"repobilityId": "cb348fe1fae748a7", "scanner": "scanner-primary", "fingerprint": "860861ba2bb5b52b", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/CodexAutoPingTab.tsx"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-680e6353bb4f9531", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/proxy/GlobalConfigTab.tsx:251"}, "properties": {"repobilityId": "c7d1a12f317380a3", "scanner": "scanner-primary", "fingerprint": "680e6353bb4f9531", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/proxy/GlobalConfigTab.tsx"}, "region": {"startLine": 251}}}]}, {"ruleId": "scanner-321751d1c05decf3", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/settings/components/proxy/SubscriptionTab.tsx:419"}, "properties": {"repobilityId": "793351efe579acf9", "scanner": "scanner-primary", "fingerprint": "321751d1c05decf3", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/proxy/SubscriptionTab.tsx"}, "region": {"startLine": 419}}}]}, {"ruleId": "scanner-3635873d0f8de487", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/search-tools/components/ScrapeResult.tsx:102"}, "properties": {"repobilityId": "be5af7708b8a0639", "scanner": "scanner-primary", "fingerprint": "3635873d0f8de487", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/search-tools/components/ScrapeResult.tsx"}, "region": {"startLine": 102}}}]}, {"ruleId": "scanner-87ee69ba87dc6240", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/(dashboard)/dashboard/search-tools/components/ProviderComparison.tsx:75"}, "properties": {"repobilityId": "e43350a44ae82af8", "scanner": "scanner-primary", "fingerprint": "87ee69ba87dc6240", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.button.no-label"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/search-tools/components/ProviderComparison.tsx"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-d5439f2c79ce6eee", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/search-tools/components/SearchHistory.tsx:58"}, "properties": {"repobilityId": "2ef57593956a9121", "scanner": "scanner-primary", "fingerprint": "d5439f2c79ce6eee", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/search-tools/components/SearchHistory.tsx"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-17841548817d51e1", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 src/app/(dashboard)/dashboard/search-tools/components/RerankPanel.tsx:99"}, "properties": {"repobilityId": "0c86d7a6a501feef", "scanner": "scanner-primary", "fingerprint": "17841548817d51e1", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.button.no-label"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/search-tools/components/RerankPanel.tsx"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-87c25fa09e90f3c8", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/search-tools/components/tabs/CompareTab.tsx:326"}, "properties": {"repobilityId": "e8e410f9680c435b", "scanner": "scanner-primary", "fingerprint": "87c25fa09e90f3c8", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/search-tools/components/tabs/CompareTab.tsx"}, "region": {"startLine": 326}}}]}, {"ruleId": "scanner-ea3a0d32766200c7", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/batch/FileDetailModal.tsx:212"}, "properties": {"repobilityId": "43e710121cf26d60", "scanner": "scanner-primary", "fingerprint": "ea3a0d32766200c7", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/batch/FileDetailModal.tsx"}, "region": {"startLine": 212}}}]}, {"ruleId": "scanner-996723b174d65398", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/batch/BatchDetailModal.tsx:334"}, "properties": {"repobilityId": "c9478d0f27a932ae", "scanner": "scanner-primary", "fingerprint": "996723b174d65398", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/batch/BatchDetailModal.tsx"}, "region": {"startLine": 334}}}]}, {"ruleId": "scanner-25b3618fd500ff9e", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/batch/components/wizard/CsvMappingStep.tsx:142"}, "properties": {"repobilityId": "2843eb684a4c684e", "scanner": "scanner-primary", "fingerprint": "25b3618fd500ff9e", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/batch/components/wizard/CsvMappingStep.tsx"}, "region": {"startLine": 142}}}]}, {"ruleId": "scanner-2568d53de341fa73", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/translator/components/advanced/PipelineView.tsx:255"}, "properties": {"repobilityId": "478acde8a810040a", "scanner": "scanner-primary", "fingerprint": "2568d53de341fa73", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/translator/components/advanced/PipelineView.tsx"}, "region": {"startLine": 255}}}]}, {"ruleId": "scanner-391124823cd1bb9a", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/translator/components/advanced/StreamTransformerAccordion.tsx:259"}, "properties": {"repobilityId": "ed6b54405a2fab8b", "scanner": "scanner-primary", "fingerprint": "391124823cd1bb9a", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/translator/components/advanced/StreamTransformerAccordion.tsx"}, "region": {"startLine": 259}}}]}, {"ruleId": "scanner-e79d67ea99445126", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/translator/components/advanced/CompressionPreviewAccordion.tsx:280"}, "properties": {"repobilityId": "f57525ca1c6de8c4", "scanner": "scanner-primary", "fingerprint": "e79d67ea99445126", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/translator/components/advanced/CompressionPreviewAccordion.tsx"}, "region": {"startLine": 280}}}]}, {"ruleId": "scanner-9f53475e59d2dec3", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/playground/components/ToolsBuilder.tsx:133"}, "properties": {"repobilityId": "4ad25a3e5617ac81", "scanner": "scanner-primary", "fingerprint": "9f53475e59d2dec3", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/playground/components/ToolsBuilder.tsx"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-bbfc3a8f185abe46", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/compression/studio/CompressionCockpit.tsx:185"}, "properties": {"repobilityId": "90bc7a5b746951b9", "scanner": "scanner-primary", "fingerprint": "bbfc3a8f185abe46", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/compression/studio/CompressionCockpit.tsx"}, "region": {"startLine": 185}}}]}, {"ruleId": "scanner-955dd569aa36c2c8", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/usage/components/BudgetTab.tsx:673"}, "properties": {"repobilityId": "3573edfc64a1ab82", "scanner": "scanner-primary", "fingerprint": "955dd569aa36c2c8", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/usage/components/BudgetTab.tsx"}, "region": {"startLine": 673}}}]}, {"ruleId": "scanner-8dfcbac5ef9b5eea", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx:1158"}, "properties": {"repobilityId": "247be499faf264ca", "scanner": "scanner-primary", "fingerprint": "8dfcbac5ef9b5eea", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx"}, "region": {"startLine": 1158}}}]}, {"ruleId": "scanner-e20244afc49bd20d", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/usage/components/ProviderLimits/ProviderUsdCostModal.tsx:263"}, "properties": {"repobilityId": "806622909e85e54a", "scanner": "scanner-primary", "fingerprint": "e20244afc49bd20d", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/usage/components/ProviderLimits/ProviderUsdCostModal.tsx"}, "region": {"startLine": 263}}}]}, {"ruleId": "scanner-e55c50b374bc1f68", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/usage/components/ProviderLimits/parts/QuotaCardBody.tsx:50"}, "properties": {"repobilityId": "a806a01c28c4c1f4", "scanner": "scanner-primary", "fingerprint": "e55c50b374bc1f68", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/usage/components/ProviderLimits/parts/QuotaCardBody.tsx"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-1ba62c0642d597d9", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/usage/components/ProviderLimits/parts/QuotaCardExpanded.tsx:120"}, "properties": {"repobilityId": "887aea6c314a5d31", "scanner": "scanner-primary", "fingerprint": "1ba62c0642d597d9", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/usage/components/ProviderLimits/parts/QuotaCardExpanded.tsx"}, "region": {"startLine": 120}}}]}, {"ruleId": "scanner-60489703e1a4f047", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx:1078"}, "properties": {"repobilityId": "863622d58ae34823", "scanner": "scanner-primary", "fingerprint": "60489703e1a4f047", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx"}, "region": {"startLine": 1078}}}]}, {"ruleId": "scanner-1ee71166019390a2", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx:384"}, "properties": {"repobilityId": "969f77dda6d6f623", "scanner": "scanner-primary", "fingerprint": "1ee71166019390a2", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx"}, "region": {"startLine": 384}}}]}, {"ruleId": "scanner-e64ecf7c0248bd3e", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/analytics/RouteExplainabilityTab.tsx:235"}, "properties": {"repobilityId": "46b8cab193cec7bd", "scanner": "scanner-primary", "fingerprint": "e64ecf7c0248bd3e", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/analytics/RouteExplainabilityTab.tsx"}, "region": {"startLine": 235}}}]}, {"ruleId": "scanner-613b3949747cbeb8", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/analytics/ComboHealthTab.tsx:123"}, "properties": {"repobilityId": "07d2fedb63457d32", "scanner": "scanner-primary", "fingerprint": "613b3949747cbeb8", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/analytics/ComboHealthTab.tsx"}, "region": {"startLine": 123}}}]}, {"ruleId": "scanner-6ca4543f31691102", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/analytics/components/DiversityScoreCard.tsx:165"}, "properties": {"repobilityId": "8e9727e36fb8d035", "scanner": "scanner-primary", "fingerprint": "6ca4543f31691102", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/analytics/components/DiversityScoreCard.tsx"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-0aba4014a42f1264", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/free-provider-rankings/page.tsx:234"}, "properties": {"repobilityId": "aa48681166729185", "scanner": "scanner-primary", "fingerprint": "0aba4014a42f1264", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/free-provider-rankings/page.tsx"}, "region": {"startLine": 234}}}]}, {"ruleId": "scanner-43f622b5067200b3", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/health/ProviderHealthMatrixCard.tsx:444"}, "properties": {"repobilityId": "ee4e02eb6a6c2b45", "scanner": "scanner-primary", "fingerprint": "43f622b5067200b3", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/health/ProviderHealthMatrixCard.tsx"}, "region": {"startLine": 444}}}]}, {"ruleId": "scanner-0bb2fa57ae822781", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/health/page.tsx:490"}, "properties": {"repobilityId": "0753266bb9fe769a", "scanner": "scanner-primary", "fingerprint": "0bb2fa57ae822781", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/health/page.tsx"}, "region": {"startLine": 490}}}]}, {"ruleId": "scanner-5c60c5ca55bb1af4", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/activity/components/ActivityItem.tsx:48"}, "properties": {"repobilityId": "d400d72a60e25906", "scanner": "scanner-primary", "fingerprint": "5c60c5ca55bb1af4", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/activity/components/ActivityItem.tsx"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-db1b7c86ef8671d5", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx:1310"}, "properties": {"repobilityId": "00cdf32f4fa2f9e5", "scanner": "scanner-primary", "fingerprint": "db1b7c86ef8671d5", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx"}, "region": {"startLine": 1310}}}]}, {"ruleId": "scanner-2a1b85e49a178d19", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx:128"}, "properties": {"repobilityId": "555753913610408a", "scanner": "scanner-primary", "fingerprint": "2a1b85e49a178d19", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-a4ebae0143bc9dc6", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/endpoint/ApiEndpointsTab.tsx:524"}, "properties": {"repobilityId": "f9ee05c99147f692", "scanner": "scanner-primary", "fingerprint": "a4ebae0143bc9dc6", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/endpoint/ApiEndpointsTab.tsx"}, "region": {"startLine": 524}}}]}, {"ruleId": "scanner-ea6dfe5524da4307", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/endpoint/VscodeTokenAliasCard.tsx:202"}, "properties": {"repobilityId": "1df6a6271220e1d0", "scanner": "scanner-primary", "fingerprint": "ea6dfe5524da4307", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/endpoint/VscodeTokenAliasCard.tsx"}, "region": {"startLine": 202}}}]}, {"ruleId": "scanner-770e15e86c6d2b02", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/endpoint/components/ObsidianSourceCard.tsx:344"}, "properties": {"repobilityId": "fef9804062521446", "scanner": "scanner-primary", "fingerprint": "770e15e86c6d2b02", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/endpoint/components/ObsidianSourceCard.tsx"}, "region": {"startLine": 344}}}]}, {"ruleId": "scanner-7f4ff566c647ebef", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/media-providers/components/PlaygroundCard.tsx:76"}, "properties": {"repobilityId": "fd5c2e09ab37186f", "scanner": "scanner-primary", "fingerprint": "7f4ff566c647ebef", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/media-providers/components/PlaygroundCard.tsx"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-ef8ee946d2657d72", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/media-providers/components/WebSearchExampleCard.tsx:48"}, "properties": {"repobilityId": "fa2ca2ae0d31e3bc", "scanner": "scanner-primary", "fingerprint": "ef8ee946d2657d72", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/media-providers/components/WebSearchExampleCard.tsx"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-7bf66476e1557aa6", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/media-providers/[kind]/page.tsx:82"}, "properties": {"repobilityId": "1a8bc49e7ca235b6", "scanner": "scanner-primary", "fingerprint": "7bf66476e1557aa6", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/media-providers/[kind]/page.tsx"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-ec473775ca26e97a", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/media-providers/[kind]/[id]/MediaProviderPageClient.tsx:186"}, "properties": {"repobilityId": "961c6acae8eceb4a", "scanner": "scanner-primary", "fingerprint": "ec473775ca26e97a", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/media-providers/[kind]/[id]/MediaProviderPageClient.tsx"}, "region": {"startLine": 186}}}]}, {"ruleId": "scanner-9059d708278abc6a", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/providers/page.tsx:256"}, "properties": {"repobilityId": "5d363bf73e9cd935", "scanner": "scanner-primary", "fingerprint": "9059d708278abc6a", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/page.tsx"}, "region": {"startLine": 256}}}]}, {"ruleId": "scanner-ce64bf6d0593bc62", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/providers/components/AddCompatibleProviderModal.tsx:211"}, "properties": {"repobilityId": "481ff62d73ad0d6f", "scanner": "scanner-primary", "fingerprint": "ce64bf6d0593bc62", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/components/AddCompatibleProviderModal.tsx"}, "region": {"startLine": 211}}}]}, {"ruleId": "scanner-38805b8f9485af26", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/components/ProviderCard.tsx:414"}, "properties": {"repobilityId": "aebea72e8125de79", "scanner": "scanner-primary", "fingerprint": "38805b8f9485af26", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/components/ProviderCard.tsx"}, "region": {"startLine": 414}}}]}, {"ruleId": "scanner-25c13a160c8462c4", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/components/NoAuthProvidersSection.tsx:136"}, "properties": {"repobilityId": "c0eb48dd056c5ab6", "scanner": "scanner-primary", "fingerprint": "25c13a160c8462c4", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/components/NoAuthProvidersSection.tsx"}, "region": {"startLine": 136}}}]}, {"ruleId": "scanner-83ab54073d2c558b", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/[id]/components/ConnectionRow.tsx:552"}, "properties": {"repobilityId": "d5bd2e6d59d35d83", "scanner": "scanner-primary", "fingerprint": "83ab54073d2c558b", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/[id]/components/ConnectionRow.tsx"}, "region": {"startLine": 552}}}]}, {"ruleId": "scanner-6599ab941ca55717", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/[id]/components/CustomModelsSection.tsx:479"}, "properties": {"repobilityId": "8bd2be9dee9c0f83", "scanner": "scanner-primary", "fingerprint": "6599ab941ca55717", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/[id]/components/CustomModelsSection.tsx"}, "region": {"startLine": 479}}}]}, {"ruleId": "scanner-617282ccbdbde8d1", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/[id]/components/NoAuthProviderControls.tsx:110"}, "properties": {"repobilityId": "bd83ca104a336bbd", "scanner": "scanner-primary", "fingerprint": "617282ccbdbde8d1", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/[id]/components/NoAuthProviderControls.tsx"}, "region": {"startLine": 110}}}]}, {"ruleId": "scanner-ea96d50b44ce563b", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/[id]/components/modals/ImportCodexAuthModal.tsx:573"}, "properties": {"repobilityId": "7769ca8fa815eb81", "scanner": "scanner-primary", "fingerprint": "ea96d50b44ce563b", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/[id]/components/modals/ImportCodexAuthModal.tsx"}, "region": {"startLine": 573}}}]}, {"ruleId": "scanner-97948c971faffad6", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelImportHandlers.ts:249"}, "properties": {"repobilityId": "94394aba5fa0bdf1", "scanner": "scanner-primary", "fingerprint": "97948c971faffad6", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelImportHandlers.ts"}, "region": {"startLine": 249}}}]}, {"ruleId": "scanner-c4ec29c5ed3875d1", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/services/components/ApiKeyField.tsx:108"}, "properties": {"repobilityId": "d55a641c18dafd80", "scanner": "scanner-primary", "fingerprint": "c4ec29c5ed3875d1", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/services/components/ApiKeyField.tsx"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-ef0c119247b09471", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/services/components/ServiceStatusCard.tsx:67"}, "properties": {"repobilityId": "c5e7acedeeb988bf", "scanner": "scanner-primary", "fingerprint": "ef0c119247b09471", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/services/components/ServiceStatusCard.tsx"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-abd60ea40020263d", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/providers/services/components/NinerouterModelList.tsx:130"}, "properties": {"repobilityId": "13f2b7670b8106e1", "scanner": "scanner-primary", "fingerprint": "abd60ea40020263d", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/services/components/NinerouterModelList.tsx"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-91b3f58800ac24b3", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/audit/ComplianceTab.tsx:347"}, "properties": {"repobilityId": "15ef6ee086508a8d", "scanner": "scanner-primary", "fingerprint": "91b3f58800ac24b3", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/audit/ComplianceTab.tsx"}, "region": {"startLine": 347}}}]}, {"ruleId": "scanner-1394b2b8b1b1deeb", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/audit/McpAuditTab.tsx:158"}, "properties": {"repobilityId": "eb4af83d5f38983c", "scanner": "scanner-primary", "fingerprint": "1394b2b8b1b1deeb", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/audit/McpAuditTab.tsx"}, "region": {"startLine": 158}}}]}, {"ruleId": "scanner-59939846fa19d6d8", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cache/components/CacheTrends.tsx:114"}, "properties": {"repobilityId": "1f3ec839697a016b", "scanner": "scanner-primary", "fingerprint": "59939846fa19d6d8", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cache/components/CacheTrends.tsx"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-3673bea5ec55f394", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/leaderboard/page.tsx:155"}, "properties": {"repobilityId": "6569d8ce546150c7", "scanner": "scanner-primary", "fingerprint": "3673bea5ec55f394", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/leaderboard/page.tsx"}, "region": {"startLine": 155}}}]}, {"ruleId": "scanner-d6f060b80c706b8a", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/tokens/page.tsx:563"}, "properties": {"repobilityId": "67b81e97fc449211", "scanner": "scanner-primary", "fingerprint": "d6f060b80c706b8a", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/tokens/page.tsx"}, "region": {"startLine": 563}}}]}, {"ruleId": "scanner-8788e197e119a8c1", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/agent-skills/components/SkillPreviewPane.tsx:78"}, "properties": {"repobilityId": "8f7960fabca0da42", "scanner": "scanner-primary", "fingerprint": "8788e197e119a8c1", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/agent-skills/components/SkillPreviewPane.tsx"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-b7d4bdd7b0e70b67", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/agent-skills/components/McpA2aLinksBar.tsx:61"}, "properties": {"repobilityId": "870d98bbc287d7ef", "scanner": "scanner-primary", "fingerprint": "b7d4bdd7b0e70b67", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/agent-skills/components/McpA2aLinksBar.tsx"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-959d2caa7bfcc453", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/memory/components/QdrantConfigCard.tsx:397"}, "properties": {"repobilityId": "61973aba6fd3fc86", "scanner": "scanner-primary", "fingerprint": "959d2caa7bfcc453", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/memory/components/QdrantConfigCard.tsx"}, "region": {"startLine": 397}}}]}, {"ruleId": "scanner-44f5c9c7b703bcdf", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/memory/components/RetrievePreview.tsx:77"}, "properties": {"repobilityId": "dde1a6bd082b83e6", "scanner": "scanner-primary", "fingerprint": "44f5c9c7b703bcdf", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/memory/components/RetrievePreview.tsx"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-f710b280997f56ab", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/memory/components/tabs/MemoriesTab.tsx:486"}, "properties": {"repobilityId": "22adc80974ce02a5", "scanner": "scanner-primary", "fingerprint": "f710b280997f56ab", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/memory/components/tabs/MemoriesTab.tsx"}, "region": {"startLine": 486}}}]}, {"ruleId": "scanner-fe96f9783cb1e512", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/runtime/RuntimePageClient.tsx:682"}, "properties": {"repobilityId": "42511369114df622", "scanner": "scanner-primary", "fingerprint": "fe96f9783cb1e512", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/runtime/RuntimePageClient.tsx"}, "region": {"startLine": 682}}}]}, {"ruleId": "scanner-a7907c758bb6bd2a", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/runtime/components/ModelCooldownsCard.tsx:132"}, "properties": {"repobilityId": "378f6049ce34bc71", "scanner": "scanner-primary", "fingerprint": "a7907c758bb6bd2a", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/runtime/components/ModelCooldownsCard.tsx"}, "region": {"startLine": 132}}}]}, {"ruleId": "scanner-6635beae72119e98", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/AntigravityToolCard.tsx:294"}, "properties": {"repobilityId": "f3b56d3733e33655", "scanner": "scanner-primary", "fingerprint": "6635beae72119e98", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/AntigravityToolCard.tsx"}, "region": {"startLine": 294}}}]}, {"ruleId": "scanner-39ca34d37bda7e58", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/AntigravityToolCard.tsx:79"}, "properties": {"repobilityId": "e88b1bdde292af06", "scanner": "scanner-primary", "fingerprint": "39ca34d37bda7e58", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/AntigravityToolCard.tsx"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-f08c641f185754c2", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/CliproxyapiToolCard.tsx:128"}, "properties": {"repobilityId": "34566c2cb3ac0570", "scanner": "scanner-primary", "fingerprint": "f08c641f185754c2", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/CliproxyapiToolCard.tsx"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-4ba2d352680abcbb", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/DroidToolCard.tsx:322"}, "properties": {"repobilityId": "20dabf0a6fbca948", "scanner": "scanner-primary", "fingerprint": "4ba2d352680abcbb", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/DroidToolCard.tsx"}, "region": {"startLine": 322}}}]}, {"ruleId": "scanner-cc4fd7c9f233c3cc", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/DroidToolCard.tsx:89"}, "properties": {"repobilityId": "ca2535e79d88dd1a", "scanner": "scanner-primary", "fingerprint": "cc4fd7c9f233c3cc", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/DroidToolCard.tsx"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-2f3a79797ced4c22", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/ToolDetailClient.tsx:48"}, "properties": {"repobilityId": "51ff251b7db43c66", "scanner": "scanner-primary", "fingerprint": "2f3a79797ced4c22", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/ToolDetailClient.tsx"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-e7890e9c6f907811", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/ClaudeToolCard.tsx:301"}, "properties": {"repobilityId": "09e36a9e839f0670", "scanner": "scanner-primary", "fingerprint": "e7890e9c6f907811", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/ClaudeToolCard.tsx"}, "region": {"startLine": 301}}}]}, {"ruleId": "scanner-67df3689536f6c8b", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/ClaudeToolCard.tsx:87"}, "properties": {"repobilityId": "27e67a91fd79ba6a", "scanner": "scanner-primary", "fingerprint": "67df3689536f6c8b", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/ClaudeToolCard.tsx"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-b69129d83db421f9", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/DefaultToolCard.tsx:545"}, "properties": {"repobilityId": "ec0ccd5e99d8248a", "scanner": "scanner-primary", "fingerprint": "b69129d83db421f9", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/DefaultToolCard.tsx"}, "region": {"startLine": 545}}}]}, {"ruleId": "scanner-37d61120332a0bfd", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/OpenClawToolCard.tsx:305"}, "properties": {"repobilityId": "7faa223a76843ce1", "scanner": "scanner-primary", "fingerprint": "37d61120332a0bfd", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/OpenClawToolCard.tsx"}, "region": {"startLine": 305}}}]}, {"ruleId": "scanner-d5b2d594aa09eb66", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/OpenClawToolCard.tsx:81"}, "properties": {"repobilityId": "8cc8eff73511f32a", "scanner": "scanner-primary", "fingerprint": "d5b2d594aa09eb66", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/OpenClawToolCard.tsx"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-9f2ab1c9ce8b47e6", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/ClineToolCard.tsx:255"}, "properties": {"repobilityId": "e674795d8952438b", "scanner": "scanner-primary", "fingerprint": "9f2ab1c9ce8b47e6", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/ClineToolCard.tsx"}, "region": {"startLine": 255}}}]}, {"ruleId": "scanner-dc706202fd3a5983", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/KiloToolCard.tsx:257"}, "properties": {"repobilityId": "a6a9f92b49bae59c", "scanner": "scanner-primary", "fingerprint": "dc706202fd3a5983", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/KiloToolCard.tsx"}, "region": {"startLine": 257}}}]}, {"ruleId": "scanner-60a88d0207c73c8b", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/CodexToolCard.tsx:411"}, "properties": {"repobilityId": "65bca926beb322e8", "scanner": "scanner-primary", "fingerprint": "60a88d0207c73c8b", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/CodexToolCard.tsx"}, "region": {"startLine": 411}}}]}, {"ruleId": "scanner-5ef464c045009a59", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/cli-code/components/CodexToolCard.tsx:75"}, "properties": {"repobilityId": "3ec48bdb2dabee9e", "scanner": "scanner-primary", "fingerprint": "5ef464c045009a59", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/CodexToolCard.tsx"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-d36cd2e039031e8a", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/HermesAgentToolCard.tsx:330"}, "properties": {"repobilityId": "b8affa5a4f917731", "scanner": "scanner-primary", "fingerprint": "d36cd2e039031e8a", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/HermesAgentToolCard.tsx"}, "region": {"startLine": 330}}}]}, {"ruleId": "scanner-f8651bcc9d13022c", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/CopilotToolCard.tsx:198"}, "properties": {"repobilityId": "3f3762fedf7d5f7a", "scanner": "scanner-primary", "fingerprint": "f8651bcc9d13022c", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/CopilotToolCard.tsx"}, "region": {"startLine": 198}}}]}, {"ruleId": "scanner-4f08fce771cf2a05", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/cli-code/components/CustomCliCard.tsx:135"}, "properties": {"repobilityId": "3789d56e72d9b1dc", "scanner": "scanner-primary", "fingerprint": "4f08fce771cf2a05", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/CustomCliCard.tsx"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-cc7d6c4302f7c7f0", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/tools/traffic-inspector/components/RequestRow.tsx:83"}, "properties": {"repobilityId": "b60274f7bdc81032", "scanner": "scanner-primary", "fingerprint": "cc7d6c4302f7c7f0", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/tools/traffic-inspector/components/RequestRow.tsx"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-d50ad140efe3d44d", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/tools/traffic-inspector/components/session/SessionRecorderBar.tsx:45"}, "properties": {"repobilityId": "53514a446c5a98a0", "scanner": "scanner-primary", "fingerprint": "d50ad140efe3d44d", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/tools/traffic-inspector/components/session/SessionRecorderBar.tsx"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-89711f45464d518b", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentCard.tsx:128"}, "properties": {"repobilityId": "bec5cd0c9938df9a", "scanner": "scanner-primary", "fingerprint": "89711f45464d518b", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentCard.tsx"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-74bc115f08131eeb", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/profile/page.tsx:268"}, "properties": {"repobilityId": "b9327835c61c5723", "scanner": "scanner-primary", "fingerprint": "74bc115f08131eeb", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/profile/page.tsx"}, "region": {"startLine": 268}}}]}, {"ruleId": "scanner-cc811491ec4fe674", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/context/rtk/RtkLearnDiscoverCard.tsx:122"}, "properties": {"repobilityId": "c2633e1764c083df", "scanner": "scanner-primary", "fingerprint": "cc811491ec4fe674", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/context/rtk/RtkLearnDiscoverCard.tsx"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-3454df6d045c5774", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/context/combos/CompressionCombosPageClient.tsx:264"}, "properties": {"repobilityId": "8fae8bec2c8397c1", "scanner": "scanner-primary", "fingerprint": "3454df6d045c5774", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/context/combos/CompressionCombosPageClient.tsx"}, "region": {"startLine": 264}}}]}, {"ruleId": "scanner-8b4dcc9d7388efba", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/CostOverviewTab.tsx:1069"}, "properties": {"repobilityId": "9cd8a4700229430d", "scanner": "scanner-primary", "fingerprint": "8b4dcc9d7388efba", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/costs/CostOverviewTab.tsx"}, "region": {"startLine": 1069}}}]}, {"ruleId": "scanner-47a36f6106e6223a", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/components/TopListCard.tsx:45"}, "properties": {"repobilityId": "15ed2c48e200115f", "scanner": "scanner-primary", "fingerprint": "47a36f6106e6223a", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/costs/components/TopListCard.tsx"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-8d61eb4b245f0ba0", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/components/CostCharts.tsx:107"}, "properties": {"repobilityId": "e8b5fdc338bd2629", "scanner": "scanner-primary", "fingerprint": "8d61eb4b245f0ba0", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/costs/components/CostCharts.tsx"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-b40ee5ff26740d82", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/components/ApiKeyUsageLimitCard.tsx:134"}, "properties": {"repobilityId": "a4925559bc470927", "scanner": "scanner-primary", "fingerprint": "b40ee5ff26740d82", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/costs/components/ApiKeyUsageLimitCard.tsx"}, "region": {"startLine": 134}}}]}, {"ruleId": "scanner-b2a01887d78b5d89", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/PoolCard.tsx:106"}, "properties": {"repobilityId": "36413848a0687b96", "scanner": "scanner-primary", "fingerprint": "b2a01887d78b5d89", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/costs/quota-share/components/PoolCard.tsx"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-74ec14495fd3c921", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/AllocationTable.tsx:70"}, "properties": {"repobilityId": "9bc2bc38a4f18435", "scanner": "scanner-primary", "fingerprint": "74ec14495fd3c921", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/costs/quota-share/components/AllocationTable.tsx"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-e9554e87014615ea", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/PoolWizard.tsx:598"}, "properties": {"repobilityId": "924eec779b4eae0d", "scanner": "scanner-primary", "fingerprint": "e9554e87014615ea", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/costs/quota-share/components/PoolWizard.tsx"}, "region": {"startLine": 598}}}]}, {"ruleId": "scanner-a4f139019f48af1f", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/UsageLogCard.tsx:101"}, "properties": {"repobilityId": "0dac56d8a0cc6172", "scanner": "scanner-primary", "fingerprint": "a4f139019f48af1f", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/costs/quota-share/components/UsageLogCard.tsx"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-57eb226d3c6b0fa8", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/omni-skills/components/OmniSkillCard.tsx:65"}, "properties": {"repobilityId": "94388d23d88c9b88", "scanner": "scanner-primary", "fingerprint": "57eb226d3c6b0fa8", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/omni-skills/components/OmniSkillCard.tsx"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-6f46b3504d701866", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/webhooks/components/WebhookCard.tsx:75"}, "properties": {"repobilityId": "7c1b0cd763114217", "scanner": "scanner-primary", "fingerprint": "6f46b3504d701866", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/webhooks/components/WebhookCard.tsx"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-3e2cf0bf0a919ae5", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/combos/ComboControlCenterClient.tsx:163"}, "properties": {"repobilityId": "0f48f0f737461ec9", "scanner": "scanner-primary", "fingerprint": "3e2cf0bf0a919ae5", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/combos/ComboControlCenterClient.tsx"}, "region": {"startLine": 163}}}]}, {"ruleId": "scanner-641ae79a219bbb96", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/combos/page.tsx:1636"}, "properties": {"repobilityId": "1d6edc04dde1970e", "scanner": "scanner-primary", "fingerprint": "641ae79a219bbb96", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/combos/page.tsx"}, "region": {"startLine": 1636}}}]}, {"ruleId": "scanner-560b646892065b29", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/(dashboard)/dashboard/combos/page.tsx:784"}, "properties": {"repobilityId": "e8963fc35b5b2345", "scanner": "scanner-primary", "fingerprint": "560b646892065b29", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/combos/page.tsx"}, "region": {"startLine": 784}}}]}, {"ruleId": "scanner-ff0341baa8f62472", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/combos/live/ComboLiveStudio.tsx:307"}, "properties": {"repobilityId": "e71bd22216e48191", "scanner": "scanner-primary", "fingerprint": "ff0341baa8f62472", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/combos/live/ComboLiveStudio.tsx"}, "region": {"startLine": 307}}}]}, {"ruleId": "scanner-cbfa4da04941f4a7", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/dashboard/combos/live/nodes/StrategyNode.tsx:72"}, "properties": {"repobilityId": "d16cc3bbbb4924f8", "scanner": "scanner-primary", "fingerprint": "cbfa4da04941f4a7", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/combos/live/nodes/StrategyNode.tsx"}, "region": {"startLine": 72}}}]}, {"ruleId": "scanner-9c420e1db2d1c629", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/home/ProviderTopology.tsx:96"}, "properties": {"repobilityId": "f1bde0680aef0395", "scanner": "scanner-primary", "fingerprint": "9c420e1db2d1c629", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/home/ProviderTopology.tsx"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-4b49f5f0bf3a26c2", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/(dashboard)/home/ProviderQuotaWidget.tsx:268"}, "properties": {"repobilityId": "97f9ddeb40f874f0", "scanner": "scanner-primary", "fingerprint": "4b49f5f0bf3a26c2", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/home/ProviderQuotaWidget.tsx"}, "region": {"startLine": 268}}}]}, {"ruleId": "scanner-06a2ce830fbef686", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/docs/[...slug]/page.tsx:85"}, "properties": {"repobilityId": "723f289d72fefa4b", "scanner": "scanner-primary", "fingerprint": "06a2ce830fbef686", "layer": "frontend", "severity": "medium", "confidence": 0.8, "tags": ["frontend-quality", "fq.dangerous-html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/docs/[...slug]/page.tsx"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-5e62abe3c8dc1011", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/docs/components/ApiExplorerClient.tsx:192"}, "properties": {"repobilityId": "63b58625272cfa1e", "scanner": "scanner-primary", "fingerprint": "5e62abe3c8dc1011", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/docs/components/ApiExplorerClient.tsx"}, "region": {"startLine": 192}}}]}, {"ruleId": "scanner-8a59e41bbee4287f", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 src/app/callback/page.tsx:78"}, "properties": {"repobilityId": "ecd4a4bc3e9ab947", "scanner": "scanner-primary", "fingerprint": "8a59e41bbee4287f", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/callback/page.tsx"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-2925271099500507", "level": "none", "message": {"text": "Truncated text has no discoverable full-value affordance \u2014 src/app/landing/components/Navigation.tsx:26"}, "properties": {"repobilityId": "4977f12fec1784b7", "scanner": "scanner-primary", "fingerprint": "2925271099500507", "layer": "frontend", "severity": "info", "confidence": 0.65, "tags": ["frontend-quality", "fq.truncate.no-title"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/landing/components/Navigation.tsx"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-485e75aacca03b97", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/lib/db/playgroundPresets.ts:14"}, "properties": {"repobilityId": "8037765de976eb1d", "scanner": "scanner-primary", "fingerprint": "485e75aacca03b97", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/db/playgroundPresets.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-6a292a0900735af4", "level": "warning", "message": {"text": "detect child process \u2014 open-sse/services/qoderCli.ts:138"}, "properties": {"repobilityId": "d541575810c2cded", "scanner": "scanner-primary", "fingerprint": "6a292a0900735af4", "layer": "security", "severity": "medium", "confidence": 0.55, "tags": ["semgrep", "security", "javascript"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/qoderCli.ts"}, "region": {"startLine": 138}}}]}, {"ruleId": "scanner-54306b96907d2c51", "level": "warning", "message": {"text": "detect child process \u2014 scripts/ad-hoc/resolve_all_conflicts.js:28"}, "properties": {"repobilityId": "95b531740629eb3a", "scanner": "scanner-primary", "fingerprint": "54306b96907d2c51", "layer": "security", "severity": "medium", "confidence": 0.55, "tags": ["semgrep", "security", "javascript"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ad-hoc/resolve_all_conflicts.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-fdcc61381ee76273", "level": "warning", "message": {"text": "detect child process \u2014 scripts/dev/system-info.mjs:30"}, "properties": {"repobilityId": "fd39af09753994fa", "scanner": "scanner-primary", "fingerprint": "fdcc61381ee76273", "layer": "security", "severity": "medium", "confidence": 0.55, "tags": ["semgrep", "security", "javascript"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dev/system-info.mjs"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-182491909fdea175", "level": "warning", "message": {"text": "dynamic urllib use detected \u2014 scripts/i18n/i18n_autotranslate.py:86"}, "properties": {"repobilityId": "14659083b797e989", "scanner": "scanner-primary", "fingerprint": "182491909fdea175", "layer": "security", "severity": "medium", "confidence": 0.55, "tags": ["semgrep", "security", "python"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/i18n/i18n_autotranslate.py"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-7c99601f9a309cbb", "level": "warning", "message": {"text": "react dangerouslysetinnerhtml \u2014 src/app/docs/[...slug]/page.tsx:85"}, "properties": {"repobilityId": "c7a3c29612b41973", "scanner": "scanner-primary", "fingerprint": "7c99601f9a309cbb", "layer": "security", "severity": "medium", "confidence": 0.7, "tags": ["semgrep", "security", "react"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/docs/[...slug]/page.tsx"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-8f522db215ace660", "level": "error", "message": {"text": "react insecure request \u2014 src/lib/memory/retrieval.ts:167"}, "properties": {"repobilityId": "3041afb9da86726b", "scanner": "scanner-primary", "fingerprint": "8f522db215ace660", "layer": "security", "severity": "high", "confidence": 0.75, "tags": ["semgrep", "security", "react"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/memory/retrieval.ts"}, "region": {"startLine": 167}}}]}, {"ruleId": "scanner-51ad3f511f11f7d4", "level": "warning", "message": {"text": "detect child process \u2014 src/lib/skills/containerProvider.ts:74"}, "properties": {"repobilityId": "6396ad25abdef07f", "scanner": "scanner-primary", "fingerprint": "51ad3f511f11f7d4", "layer": "security", "severity": "medium", "confidence": 0.55, "tags": ["semgrep", "security", "javascript"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/skills/containerProvider.ts"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-9343c5776b3a31b6", "level": "warning", "message": {"text": "detect child process \u2014 src/lib/skills/sandbox.ts:80"}, "properties": {"repobilityId": "90b363724f8dec18", "scanner": "scanner-primary", "fingerprint": "9343c5776b3a31b6", "layer": "security", "severity": "medium", "confidence": 0.55, "tags": ["semgrep", "security", "javascript"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/skills/sandbox.ts"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-46761954aeb4b2a5", "level": "warning", "message": {"text": "detect child process \u2014 src/lib/versionManager/processManager.ts:67"}, "properties": {"repobilityId": "249d3a66534d9f1b", "scanner": "scanner-primary", "fingerprint": "46761954aeb4b2a5", "layer": "security", "severity": "medium", "confidence": 0.55, "tags": ["semgrep", "security", "javascript"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/versionManager/processManager.ts"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-62cc303f3151dd5e", "level": "warning", "message": {"text": "detect child process \u2014 src/shared/services/cliRuntime.ts:334"}, "properties": {"repobilityId": "52a29b2400fe9d23", "scanner": "scanner-primary", "fingerprint": "62cc303f3151dd5e", "layer": "security", "severity": "medium", "confidence": 0.55, "tags": ["semgrep", "security", "javascript"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/services/cliRuntime.ts"}, "region": {"startLine": 334}}}]}, {"ruleId": "scanner-382e4c9b06555799", "level": "warning", "message": {"text": "CVE-2026-59877: protobufjs 7.6.4 \u2014 package-lock.json"}, "properties": {"repobilityId": "0585cee0a924cd91", "scanner": "scanner-primary", "fingerprint": "382e4c9b06555799", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59877"]}}, {"ruleId": "scanner-20594ff327d8fc59", "level": "error", "message": {"text": "DS-0017: 'RUN <package-manager> update' instruction alone \u2014 Dockerfile"}, "properties": {"repobilityId": "959564066531ba3f", "scanner": "scanner-primary", "fingerprint": "20594ff327d8fc59", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "misconfig"]}}, {"ruleId": "scanner-8226fa9ac64fc2c6", "level": "warning", "message": {"text": "DS-0001: ':latest' tag used \u2014 docker/vnc-browser/chromium/Dockerfile"}, "properties": {"repobilityId": "6f4def04da6b7ae1", "scanner": "scanner-primary", "fingerprint": "8226fa9ac64fc2c6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "misconfig"]}}, {"ruleId": "scanner-c50aaff2fde4d7a6", "level": "error", "message": {"text": "DS-0002: Image user should not be 'root' \u2014 docker/vnc-browser/chromium/Dockerfile"}, "properties": {"repobilityId": "9d3b63d4d99278f0", "scanner": "scanner-primary", "fingerprint": "c50aaff2fde4d7a6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "misconfig"]}}, {"ruleId": "scanner-8fc8bc6f5c90fc01", "level": "note", "message": {"text": "DS-0026: No HEALTHCHECK defined \u2014 docker/vnc-browser/chromium/Dockerfile"}, "properties": {"repobilityId": "e3d8bcad688bdf73", "scanner": "scanner-primary", "fingerprint": "8fc8bc6f5c90fc01", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "misconfig"]}}, {"ruleId": "scanner-b1d2ebb3fe2036f3", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: GEMINI.md"}, "properties": {"repobilityId": "aed665d000b9a23e", "scanner": "scanner-primary", "fingerprint": "b1d2ebb3fe2036f3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "GEMINI.md"}, "region": {"startLine": 1}}}]}, {"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-2679282aa1c484b5", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: AGENTS.md"}, "properties": {"repobilityId": "27d579812e6be614", "scanner": "scanner-primary", "fingerprint": "2679282aa1c484b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "agents_md"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "AGENTS.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fd96f75d3b1dede8", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: open-sse/services/AGENTS.md"}, "properties": {"repobilityId": "b8682bf4a53fbb2c", "scanner": "scanner-primary", "fingerprint": "fd96f75d3b1dede8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "agents_md"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/AGENTS.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0f9d56ad7ab6441f", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/it/GEMINI.md"}, "properties": {"repobilityId": "ac4b0b442f071f71", "scanner": "scanner-primary", "fingerprint": "0f9d56ad7ab6441f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/it/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c50b966d6bcd912b", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/it/CLAUDE.md"}, "properties": {"repobilityId": "76a4bd4419986337", "scanner": "scanner-primary", "fingerprint": "c50b966d6bcd912b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/it/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d80627e9ba367017", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/ur/GEMINI.md"}, "properties": {"repobilityId": "68642728f170f262", "scanner": "scanner-primary", "fingerprint": "d80627e9ba367017", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/ur/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f7a15a6e916aca99", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/ur/CLAUDE.md"}, "properties": {"repobilityId": "0fadf4c99457ce62", "scanner": "scanner-primary", "fingerprint": "f7a15a6e916aca99", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/ur/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9c3d53dce1be9015", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/id/CLAUDE.md"}, "properties": {"repobilityId": "b3b9b09028f97396", "scanner": "scanner-primary", "fingerprint": "9c3d53dce1be9015", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/id/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b6bb6056b843a4fd", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/ko/GEMINI.md"}, "properties": {"repobilityId": "f9a60752dafaebd5", "scanner": "scanner-primary", "fingerprint": "b6bb6056b843a4fd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/ko/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c6b1eb9a0cdaf5ba", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/ko/CLAUDE.md"}, "properties": {"repobilityId": "02cde51ca2b91e49", "scanner": "scanner-primary", "fingerprint": "c6b1eb9a0cdaf5ba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/ko/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3365e521e089fc4c", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/pt/GEMINI.md"}, "properties": {"repobilityId": "247bf8f2f5b48b4f", "scanner": "scanner-primary", "fingerprint": "3365e521e089fc4c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/pt/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb146f0ae69c88ed", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/pt/CLAUDE.md"}, "properties": {"repobilityId": "cf41ce4b67f968f4", "scanner": "scanner-primary", "fingerprint": "cb146f0ae69c88ed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/pt/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2c3756d32dc45fbb", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/hu/GEMINI.md"}, "properties": {"repobilityId": "adb92ebfd6d5f4b2", "scanner": "scanner-primary", "fingerprint": "2c3756d32dc45fbb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/hu/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c8835ff93bfdf2ae", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/hu/CLAUDE.md"}, "properties": {"repobilityId": "aae0231af764e657", "scanner": "scanner-primary", "fingerprint": "c8835ff93bfdf2ae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/hu/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a083909e48b3a896", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/ar/GEMINI.md"}, "properties": {"repobilityId": "4b6e892ca0c52a1b", "scanner": "scanner-primary", "fingerprint": "a083909e48b3a896", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/ar/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9dbeab3655728640", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/ar/CLAUDE.md"}, "properties": {"repobilityId": "c48e828b483480f8", "scanner": "scanner-primary", "fingerprint": "9dbeab3655728640", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/ar/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c037247dddf8e9f4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/fi/GEMINI.md"}, "properties": {"repobilityId": "8a4337660aa1deda", "scanner": "scanner-primary", "fingerprint": "c037247dddf8e9f4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/fi/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f2036006e012d481", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/fi/CLAUDE.md"}, "properties": {"repobilityId": "f38cdc4c3958f7ba", "scanner": "scanner-primary", "fingerprint": "f2036006e012d481", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/fi/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9e2f6c43d4edacfa", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/th/GEMINI.md"}, "properties": {"repobilityId": "2244d058e381a6ee", "scanner": "scanner-primary", "fingerprint": "9e2f6c43d4edacfa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/th/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-119cc18b7b477cbf", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/th/CLAUDE.md"}, "properties": {"repobilityId": "1a0f0403bd0ae8b2", "scanner": "scanner-primary", "fingerprint": "119cc18b7b477cbf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/th/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-654a5dfe408d263b", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/fa/GEMINI.md"}, "properties": {"repobilityId": "4f65afc4dc38e04b", "scanner": "scanner-primary", "fingerprint": "654a5dfe408d263b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/fa/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3e34c36687828149", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/fa/CLAUDE.md"}, "properties": {"repobilityId": "b819053e80f56243", "scanner": "scanner-primary", "fingerprint": "3e34c36687828149", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/fa/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6bbc67fa10c26f6e", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/ms/GEMINI.md"}, "properties": {"repobilityId": "7957f92629ab3e0d", "scanner": "scanner-primary", "fingerprint": "6bbc67fa10c26f6e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/ms/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ade4f0f151b5f1ec", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/ms/CLAUDE.md"}, "properties": {"repobilityId": "f2daa289e270d27d", "scanner": "scanner-primary", "fingerprint": "ade4f0f151b5f1ec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/ms/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-756eb2fe8b49673d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/es/GEMINI.md"}, "properties": {"repobilityId": "1a2e8b77095df336", "scanner": "scanner-primary", "fingerprint": "756eb2fe8b49673d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/es/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-28bb78dca1b6cd34", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/es/CLAUDE.md"}, "properties": {"repobilityId": "25b973280d6d647b", "scanner": "scanner-primary", "fingerprint": "28bb78dca1b6cd34", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/es/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-049863f3594584d8", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/pt-BR/GEMINI.md"}, "properties": {"repobilityId": "09a1506bcdcb8c88", "scanner": "scanner-primary", "fingerprint": "049863f3594584d8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/pt-BR/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1ce575c3b5366362", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/pt-BR/CLAUDE.md"}, "properties": {"repobilityId": "e7de686400ac5519", "scanner": "scanner-primary", "fingerprint": "1ce575c3b5366362", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/pt-BR/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b4ec649dccf2c2dc", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/sk/GEMINI.md"}, "properties": {"repobilityId": "101109d374d022d2", "scanner": "scanner-primary", "fingerprint": "b4ec649dccf2c2dc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/sk/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f3c4bbb6bc491669", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/sk/CLAUDE.md"}, "properties": {"repobilityId": "54bed0232f03ab19", "scanner": "scanner-primary", "fingerprint": "f3c4bbb6bc491669", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/sk/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-34786f898c893ff5", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/ja/GEMINI.md"}, "properties": {"repobilityId": "be071b4bea6be1b6", "scanner": "scanner-primary", "fingerprint": "34786f898c893ff5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/ja/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5d0cfa387c2b79bb", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/ja/CLAUDE.md"}, "properties": {"repobilityId": "d9c3809423708c61", "scanner": "scanner-primary", "fingerprint": "5d0cfa387c2b79bb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/ja/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3a58e37a0a3a44c1", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/da/GEMINI.md"}, "properties": {"repobilityId": "e1481f8db6cd09af", "scanner": "scanner-primary", "fingerprint": "3a58e37a0a3a44c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/da/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d0c64f3974169dcc", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/da/CLAUDE.md"}, "properties": {"repobilityId": "7c8b86e62532d5a6", "scanner": "scanner-primary", "fingerprint": "d0c64f3974169dcc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/da/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6a250fddd331a6ec", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/az/GEMINI.md"}, "properties": {"repobilityId": "d5479a6359765aa9", "scanner": "scanner-primary", "fingerprint": "6a250fddd331a6ec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/az/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-70c79a938e119b2c", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/az/CLAUDE.md"}, "properties": {"repobilityId": "636d8dc76071b752", "scanner": "scanner-primary", "fingerprint": "70c79a938e119b2c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/az/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5c7477d15b347975", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/fr/GEMINI.md"}, "properties": {"repobilityId": "28e10419f346f804", "scanner": "scanner-primary", "fingerprint": "5c7477d15b347975", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/fr/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-720c7c50d670cbbd", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/fr/CLAUDE.md"}, "properties": {"repobilityId": "47c1b8c7bf08417e", "scanner": "scanner-primary", "fingerprint": "720c7c50d670cbbd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/fr/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d3e99628ee7e11cf", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/cs/GEMINI.md"}, "properties": {"repobilityId": "aac7eba902ab7c0e", "scanner": "scanner-primary", "fingerprint": "d3e99628ee7e11cf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/cs/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1f834d508484948e", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/cs/CLAUDE.md"}, "properties": {"repobilityId": "f6f81d37696bd8a6", "scanner": "scanner-primary", "fingerprint": "1f834d508484948e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/cs/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c3d7e8d3937b7323", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/te/GEMINI.md"}, "properties": {"repobilityId": "e92a70cbe2c1c421", "scanner": "scanner-primary", "fingerprint": "c3d7e8d3937b7323", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/te/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c8493204f3ada2d7", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/te/CLAUDE.md"}, "properties": {"repobilityId": "d8f36b12723c599e", "scanner": "scanner-primary", "fingerprint": "c8493204f3ada2d7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/te/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c528700b18930916", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/sw/GEMINI.md"}, "properties": {"repobilityId": "aa2483f59ae9862a", "scanner": "scanner-primary", "fingerprint": "c528700b18930916", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/sw/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9bb3be67991fd3e7", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/sw/CLAUDE.md"}, "properties": {"repobilityId": "9c03fa23f4720332", "scanner": "scanner-primary", "fingerprint": "9bb3be67991fd3e7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/sw/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a52dc71365de9fd2", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/phi/GEMINI.md"}, "properties": {"repobilityId": "4ada70abe7801911", "scanner": "scanner-primary", "fingerprint": "a52dc71365de9fd2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/phi/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cab8029a20d9e0ee", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/phi/CLAUDE.md"}, "properties": {"repobilityId": "0cc875d7be13e279", "scanner": "scanner-primary", "fingerprint": "cab8029a20d9e0ee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/phi/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2e832bdd6f007ed7", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/bn/GEMINI.md"}, "properties": {"repobilityId": "d77844cdb3db3c2a", "scanner": "scanner-primary", "fingerprint": "2e832bdd6f007ed7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/bn/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2ce26d7ab125e892", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/bn/CLAUDE.md"}, "properties": {"repobilityId": "637be3ac7a261396", "scanner": "scanner-primary", "fingerprint": "2ce26d7ab125e892", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/bn/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dd20ae90e72f0970", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/sv/GEMINI.md"}, "properties": {"repobilityId": "99b82db82a12e473", "scanner": "scanner-primary", "fingerprint": "dd20ae90e72f0970", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/sv/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4e440501c3e899bc", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/sv/CLAUDE.md"}, "properties": {"repobilityId": "23f122cfdb72210b", "scanner": "scanner-primary", "fingerprint": "4e440501c3e899bc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/sv/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1914de9422feff4a", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/uk-UA/GEMINI.md"}, "properties": {"repobilityId": "36e96bd3b155dab3", "scanner": "scanner-primary", "fingerprint": "1914de9422feff4a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/uk-UA/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0fc8a2dc52b134d8", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/uk-UA/CLAUDE.md"}, "properties": {"repobilityId": "6a3b03dab1463981", "scanner": "scanner-primary", "fingerprint": "0fc8a2dc52b134d8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/uk-UA/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-17b88d7d25c70600", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/gu/GEMINI.md"}, "properties": {"repobilityId": "423fb20add7db4a3", "scanner": "scanner-primary", "fingerprint": "17b88d7d25c70600", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/gu/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6ea89fd942c73b2c", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/gu/CLAUDE.md"}, "properties": {"repobilityId": "cc72f101f03863a5", "scanner": "scanner-primary", "fingerprint": "6ea89fd942c73b2c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/gu/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f05097a8c715243c", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/hi/GEMINI.md"}, "properties": {"repobilityId": "ff571ed141a477b6", "scanner": "scanner-primary", "fingerprint": "f05097a8c715243c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/hi/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2b9fade60b8790be", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/hi/CLAUDE.md"}, "properties": {"repobilityId": "6711496aaa2f6570", "scanner": "scanner-primary", "fingerprint": "2b9fade60b8790be", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/hi/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8d45dd299414f542", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/pl/GEMINI.md"}, "properties": {"repobilityId": "0dc213b974cc6bdb", "scanner": "scanner-primary", "fingerprint": "8d45dd299414f542", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/pl/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9a8587bb962cdc87", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/pl/CLAUDE.md"}, "properties": {"repobilityId": "c1f1cfbf7989e40a", "scanner": "scanner-primary", "fingerprint": "9a8587bb962cdc87", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/pl/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bb772ccdb47cb664", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/mr/GEMINI.md"}, "properties": {"repobilityId": "1450364a33d8f01c", "scanner": "scanner-primary", "fingerprint": "bb772ccdb47cb664", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/mr/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e33a926944592e17", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/mr/CLAUDE.md"}, "properties": {"repobilityId": "8fa901cfd282739d", "scanner": "scanner-primary", "fingerprint": "e33a926944592e17", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/mr/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aab20449a71289ca", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/ta/GEMINI.md"}, "properties": {"repobilityId": "544b83e9020b91c6", "scanner": "scanner-primary", "fingerprint": "aab20449a71289ca", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/ta/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-83c021b163a83683", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/ta/CLAUDE.md"}, "properties": {"repobilityId": "b9bde497a7fb2ab5", "scanner": "scanner-primary", "fingerprint": "83c021b163a83683", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/ta/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-297cf3944785b341", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/nl/GEMINI.md"}, "properties": {"repobilityId": "d0e71d401bffbf74", "scanner": "scanner-primary", "fingerprint": "297cf3944785b341", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/nl/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8c46057747709b3d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/nl/CLAUDE.md"}, "properties": {"repobilityId": "b28a95ad409e4a48", "scanner": "scanner-primary", "fingerprint": "8c46057747709b3d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/nl/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6f86b103918a66fb", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/de/GEMINI.md"}, "properties": {"repobilityId": "1fab970ec048c7f4", "scanner": "scanner-primary", "fingerprint": "6f86b103918a66fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/de/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-407b19da7bb31968", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/de/CLAUDE.md"}, "properties": {"repobilityId": "efad0aa0463f7eda", "scanner": "scanner-primary", "fingerprint": "407b19da7bb31968", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/de/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e46024b5aa64d71d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/zh-TW/CLAUDE.md"}, "properties": {"repobilityId": "469bb7413403dffc", "scanner": "scanner-primary", "fingerprint": "e46024b5aa64d71d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/zh-TW/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-745a44266d3997da", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/vi/GEMINI.md"}, "properties": {"repobilityId": "cf703ef3c3d72957", "scanner": "scanner-primary", "fingerprint": "745a44266d3997da", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/vi/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a590af85d90efc58", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/vi/CLAUDE.md"}, "properties": {"repobilityId": "92423bb6153098da", "scanner": "scanner-primary", "fingerprint": "a590af85d90efc58", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/vi/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e58818bc1ee70f09", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/tr/GEMINI.md"}, "properties": {"repobilityId": "a1b8359b0e388b52", "scanner": "scanner-primary", "fingerprint": "e58818bc1ee70f09", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/tr/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1a480e0d8c952e47", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/tr/CLAUDE.md"}, "properties": {"repobilityId": "15f284c72a2b13ed", "scanner": "scanner-primary", "fingerprint": "1a480e0d8c952e47", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/tr/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-88269dd1ba7c8bb5", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/ru/GEMINI.md"}, "properties": {"repobilityId": "55acc08793b30e77", "scanner": "scanner-primary", "fingerprint": "88269dd1ba7c8bb5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/ru/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e456a90a0c651bb6", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/ru/CLAUDE.md"}, "properties": {"repobilityId": "88a1b85f3d735bc3", "scanner": "scanner-primary", "fingerprint": "e456a90a0c651bb6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/ru/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6562760c0cf31262", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/zh-CN/CLAUDE.md"}, "properties": {"repobilityId": "a4091f0a7511a322", "scanner": "scanner-primary", "fingerprint": "6562760c0cf31262", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/zh-CN/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-92dd398529d68dc4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/bg/GEMINI.md"}, "properties": {"repobilityId": "e663c06b9d188aa9", "scanner": "scanner-primary", "fingerprint": "92dd398529d68dc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/bg/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e714ce2302ec34c6", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/bg/CLAUDE.md"}, "properties": {"repobilityId": "1f1a3947e27e4a10", "scanner": "scanner-primary", "fingerprint": "e714ce2302ec34c6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/bg/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1e6d08b857af7e0c", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/ro/GEMINI.md"}, "properties": {"repobilityId": "c281f867cce94467", "scanner": "scanner-primary", "fingerprint": "1e6d08b857af7e0c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/ro/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7a08f885afb82952", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/ro/CLAUDE.md"}, "properties": {"repobilityId": "2cba195c4e41cf71", "scanner": "scanner-primary", "fingerprint": "7a08f885afb82952", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/ro/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3e308ee161a65460", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/no/GEMINI.md"}, "properties": {"repobilityId": "4509037fdb9eef07", "scanner": "scanner-primary", "fingerprint": "3e308ee161a65460", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/no/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0c3514f61e47c3e0", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/no/CLAUDE.md"}, "properties": {"repobilityId": "70c6ab2e69b12124", "scanner": "scanner-primary", "fingerprint": "0c3514f61e47c3e0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/no/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0da8d68a2b4687f4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/he/GEMINI.md"}, "properties": {"repobilityId": "319a6f2be33152fd", "scanner": "scanner-primary", "fingerprint": "0da8d68a2b4687f4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/he/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1ec0b55751c4c380", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/he/CLAUDE.md"}, "properties": {"repobilityId": "44c9e4040622b5fa", "scanner": "scanner-primary", "fingerprint": "1ec0b55751c4c380", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/he/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-04e81b976df7e190", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/in/GEMINI.md"}, "properties": {"repobilityId": "1507898f494e50bb", "scanner": "scanner-primary", "fingerprint": "04e81b976df7e190", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "gemini_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/in/GEMINI.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-85685caaff6ddc55", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/i18n/in/CLAUDE.md"}, "properties": {"repobilityId": "61df554f455941d0", "scanner": "scanner-primary", "fingerprint": "85685caaff6ddc55", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/i18n/in/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f0aeedcf993661b3", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/cli-providers/SKILL.md"}, "properties": {"repobilityId": "7767255e3929ebec", "scanner": "scanner-primary", "fingerprint": "f0aeedcf993661b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-providers/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a55a196b7fd31ed3", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-providers/SKILL.md"}, "properties": {"repobilityId": "3e87b88ecb2a3f30", "scanner": "scanner-primary", "fingerprint": "a55a196b7fd31ed3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-providers/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-acffff52d03fe89e", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/omni-cache/SKILL.md"}, "properties": {"repobilityId": "b4d7a4239dd5a16d", "scanner": "scanner-primary", "fingerprint": "acffff52d03fe89e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/omni-cache/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fd805d2e14dbb892", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/cli-mcp/SKILL.md"}, "properties": {"repobilityId": "a2eca51ab6b9a831", "scanner": "scanner-primary", "fingerprint": "fd805d2e14dbb892", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-mcp/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-072727bcc87baf0b", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-mcp/SKILL.md"}, "properties": {"repobilityId": "78da4c57ed63ce0b", "scanner": "scanner-primary", "fingerprint": "072727bcc87baf0b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-mcp/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-66fc124db635bce5", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/config-codex-cli/SKILL.md"}, "properties": {"repobilityId": "f7f2396df38dde19", "scanner": "scanner-primary", "fingerprint": "66fc124db635bce5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/config-codex-cli/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d44ef5b78e245ef1", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/config-codex-cli/SKILL.md"}, "properties": {"repobilityId": "23e34db1f5445d01", "scanner": "scanner-primary", "fingerprint": "d44ef5b78e245ef1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/config-codex-cli/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-a22f0a54079c4c02", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/omni-usage-logs/SKILL.md"}, "properties": {"repobilityId": "2c9e3353c9475a02", "scanner": "scanner-primary", "fingerprint": "a22f0a54079c4c02", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/omni-usage-logs/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-951f3683e814ec3c", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/cli-keys/SKILL.md"}, "properties": {"repobilityId": "a2a7a7d8d36c2536", "scanner": "scanner-primary", "fingerprint": "951f3683e814ec3c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-keys/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-13801b88d47ced19", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-keys/SKILL.md"}, "properties": {"repobilityId": "188fc8406e61a607", "scanner": "scanner-primary", "fingerprint": "13801b88d47ced19", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-keys/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-d437a992d27bc4a4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/cli-cost-usage/SKILL.md"}, "properties": {"repobilityId": "9fd30476f2255d7e", "scanner": "scanner-primary", "fingerprint": "d437a992d27bc4a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-cost-usage/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-da8a9d860a38e46d", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-cost-usage/SKILL.md"}, "properties": {"repobilityId": "1ea159874a0c211a", "scanner": "scanner-primary", "fingerprint": "da8a9d860a38e46d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-cost-usage/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-58e95fd269f86830", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/omni-version-manager/SKILL.md"}, "properties": {"repobilityId": "54543c2a7f754df5", "scanner": "scanner-primary", "fingerprint": "58e95fd269f86830", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/omni-version-manager/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-33e4baa2808a028d", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-plugins-skills/SKILL.md"}, "properties": {"repobilityId": "894178d41ddaeeb1", "scanner": "scanner-primary", "fingerprint": "33e4baa2808a028d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-plugins-skills/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-5a8860c3bf3c4315", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/omni-cli-tools/SKILL.md"}, "properties": {"repobilityId": "af3c0d4fa0f97b08", "scanner": "scanner-primary", "fingerprint": "5a8860c3bf3c4315", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/omni-cli-tools/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cdd73a93fed3473c", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/omni-models/SKILL.md"}, "properties": {"repobilityId": "a3ccdfa03a8020c9", "scanner": "scanner-primary", "fingerprint": "cdd73a93fed3473c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/omni-models/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fd6e4754816cd766", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/cli-backup-sync/SKILL.md"}, "properties": {"repobilityId": "368f888f520c0824", "scanner": "scanner-primary", "fingerprint": "fd6e4754816cd766", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-backup-sync/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-59b704a0ee452646", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-backup-sync/SKILL.md"}, "properties": {"repobilityId": "5e187dd29a7efb67", "scanner": "scanner-primary", "fingerprint": "59b704a0ee452646", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-backup-sync/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-6535c0fa658cef25", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-skill-collector/SKILL.md"}, "properties": {"repobilityId": "06e308724963bff7", "scanner": "scanner-primary", "fingerprint": "6535c0fa658cef25", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-skill-collector/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-fedd1b87d4c5bf89", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/cli-setup/SKILL.md"}, "properties": {"repobilityId": "5349d85d2016b064", "scanner": "scanner-primary", "fingerprint": "fedd1b87d4c5bf89", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-setup/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-73fd3081ab0c9e1c", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-setup/SKILL.md"}, "properties": {"repobilityId": "377333549d6da63b", "scanner": "scanner-primary", "fingerprint": "73fd3081ab0c9e1c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-setup/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-19017e8ab694f790", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/omni-resilience/SKILL.md"}, "properties": {"repobilityId": "89c7c03e305e70e4", "scanner": "scanner-primary", "fingerprint": "19017e8ab694f790", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/omni-resilience/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8c4151a80093d0ef", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/omni-budget/SKILL.md"}, "properties": {"repobilityId": "827b224314d1e3b3", "scanner": "scanner-primary", "fingerprint": "8c4151a80093d0ef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/omni-budget/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-65d0487b0278cf47", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/cli-models/SKILL.md"}, "properties": {"repobilityId": "50e9ede2ebf17b31", "scanner": "scanner-primary", "fingerprint": "65d0487b0278cf47", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-models/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e9aa3f83eb09d136", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-models/SKILL.md"}, "properties": {"repobilityId": "59833a91a7cb21a2", "scanner": "scanner-primary", "fingerprint": "e9aa3f83eb09d136", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-models/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-615c91c0459b1a57", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/omni-api-keys/SKILL.md"}, "properties": {"repobilityId": "cfedbc32fb8ee887", "scanner": "scanner-primary", "fingerprint": "615c91c0459b1a57", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/omni-api-keys/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-581658f8d2660e36", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/omni-agents-a2a/SKILL.md"}, "properties": {"repobilityId": "9303129d01b8740f", "scanner": "scanner-primary", "fingerprint": "581658f8d2660e36", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/omni-agents-a2a/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7853b16a1c8cfe11", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-tunnel/SKILL.md"}, "properties": {"repobilityId": "58627837861b7442", "scanner": "scanner-primary", "fingerprint": "7853b16a1c8cfe11", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-tunnel/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-c7e91585223b7527", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/cli-resilience/SKILL.md"}, "properties": {"repobilityId": "b98e7133836d69f4", "scanner": "scanner-primary", "fingerprint": "c7e91585223b7527", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-resilience/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9f98e211413e252e", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-resilience/SKILL.md"}, "properties": {"repobilityId": "583cf4eba3628177", "scanner": "scanner-primary", "fingerprint": "9f98e211413e252e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-resilience/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-685ddb91bd3f5dcf", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-a2a/SKILL.md"}, "properties": {"repobilityId": "9b1c5408da6529ed", "scanner": "scanner-primary", "fingerprint": "685ddb91bd3f5dcf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-a2a/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-603f0d1688339191", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-routing/SKILL.md"}, "properties": {"repobilityId": "933fdbc1f2f6b2a0", "scanner": "scanner-primary", "fingerprint": "603f0d1688339191", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-routing/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-202da5e832edfc28", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-compression/SKILL.md"}, "properties": {"repobilityId": "c453053e15792b08", "scanner": "scanner-primary", "fingerprint": "202da5e832edfc28", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-compression/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-dce2b6e723acb1bf", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/omni-mcp/SKILL.md"}, "properties": {"repobilityId": "b9518e7183d1977c", "scanner": "scanner-primary", "fingerprint": "dce2b6e723acb1bf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/omni-mcp/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-086a9a6403307ab0", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/cli-policy-audit/SKILL.md"}, "properties": {"repobilityId": "08dd28bffce241bc", "scanner": "scanner-primary", "fingerprint": "086a9a6403307ab0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-policy-audit/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e7f3ed3d8dbb2992", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-policy-audit/SKILL.md"}, "properties": {"repobilityId": "6cd09cae3034eaa6", "scanner": "scanner-primary", "fingerprint": "e7f3ed3d8dbb2992", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-policy-audit/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-92088dd4d57e9da6", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/cli-chat/SKILL.md"}, "properties": {"repobilityId": "f8bb541d86438aed", "scanner": "scanner-primary", "fingerprint": "92088dd4d57e9da6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-chat/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8eaba82b06cfef93", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-chat/SKILL.md"}, "properties": {"repobilityId": "56d7cf2e677e6889", "scanner": "scanner-primary", "fingerprint": "8eaba82b06cfef93", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-chat/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-7a9032cdb3c639b6", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/cli-health/SKILL.md"}, "properties": {"repobilityId": "7ba62b163232508e", "scanner": "scanner-primary", "fingerprint": "7a9032cdb3c639b6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-health/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e5082fd104935685", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-health/SKILL.md"}, "properties": {"repobilityId": "d6cbd5bca2dbfd08", "scanner": "scanner-primary", "fingerprint": "e5082fd104935685", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-health/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-93e9f24f7ccdcc8a", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-eval/SKILL.md"}, "properties": {"repobilityId": "707bb55c4a2bbe18", "scanner": "scanner-primary", "fingerprint": "93e9f24f7ccdcc8a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-eval/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-a55556246585d2c5", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-contexts/SKILL.md"}, "properties": {"repobilityId": "d4384085f5344543", "scanner": "scanner-primary", "fingerprint": "a55556246585d2c5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-contexts/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-34fe71af71338239", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/omni-sync-cloud/SKILL.md"}, "properties": {"repobilityId": "4c21b57f69b0654c", "scanner": "scanner-primary", "fingerprint": "34fe71af71338239", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/omni-sync-cloud/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-faf5990119b3ca51", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/cli-batches/SKILL.md"}, "properties": {"repobilityId": "fea0bf577b62ba38", "scanner": "scanner-primary", "fingerprint": "faf5990119b3ca51", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-batches/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0f69d81e1cf5cb1e", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-batches/SKILL.md"}, "properties": {"repobilityId": "3d6ffe77856a12d3", "scanner": "scanner-primary", "fingerprint": "0f69d81e1cf5cb1e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-batches/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-0063b1f93b4f9632", "level": "warning", "message": {"text": "Agent instruction contains unpinned remote install: skills/cli-serve/SKILL.md"}, "properties": {"repobilityId": "938c6abf8bdcc435", "scanner": "scanner-primary", "fingerprint": "0063b1f93b4f9632", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "supply-chain", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-serve/SKILL.md"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-a331e8184b85eb8a", "level": "error", "message": {"text": "SkillSpector E4 (data-exfil) in skills/cli-chat/SKILL.md"}, "properties": {"repobilityId": "50329cb373a444d6", "scanner": "scanner-primary", "fingerprint": "a331e8184b85eb8a", "layer": "security", "severity": "high", "confidence": 0.85, "tags": ["skillspector", "mcp-skill", "data-exfil", "E4"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-chat/SKILL.md"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-b391e5e372ae4506", "level": "error", "message": {"text": "SkillSpector P2 (prompt-injection) in skills/cli-eval/SKILL.md"}, "properties": {"repobilityId": "e2fbd61a8211840b", "scanner": "scanner-primary", "fingerprint": "b391e5e372ae4506", "layer": "security", "severity": "high", "confidence": 0.7, "tags": ["skillspector", "mcp-skill", "prompt-injection", "P2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-eval/SKILL.md"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-dc2898b530073492", "level": "error", "message": {"text": "SkillSpector P2 (prompt-injection) in skills/cli-providers/SKILL.md"}, "properties": {"repobilityId": "4a7de29aed734ff9", "scanner": "scanner-primary", "fingerprint": "dc2898b530073492", "layer": "security", "severity": "high", "confidence": 0.7, "tags": ["skillspector", "mcp-skill", "prompt-injection", "P2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-providers/SKILL.md"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-a04f6422519a7b4a", "level": "error", "message": {"text": "SkillSpector TM1 (tool-misuse) in skills/cli-providers/SKILL.md"}, "properties": {"repobilityId": "6b018cbea2518e47", "scanner": "scanner-primary", "fingerprint": "a04f6422519a7b4a", "layer": "security", "severity": "high", "confidence": 0.7, "tags": ["skillspector", "mcp-skill", "tool-misuse", "TM1"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-providers/SKILL.md"}, "region": {"startLine": 119}}}]}, {"ruleId": "scanner-25ce0f6f6642d0bd", "level": "warning", "message": {"text": "SkillSpector EA2 (excessive-agency) in skills/cli-serve/SKILL.md"}, "properties": {"repobilityId": "a5e6f83d0a4bbbb9", "scanner": "scanner-primary", "fingerprint": "25ce0f6f6642d0bd", "layer": "security", "severity": "medium", "confidence": 0.85, "tags": ["skillspector", "mcp-skill", "excessive-agency", "EA2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-serve/SKILL.md"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-230c934053663820", "level": "error", "message": {"text": "SkillSpector P2 (prompt-injection) in skills/cli-serve/SKILL.md"}, "properties": {"repobilityId": "704493d61cd8972d", "scanner": "scanner-primary", "fingerprint": "230c934053663820", "layer": "security", "severity": "high", "confidence": 0.7, "tags": ["skillspector", "mcp-skill", "prompt-injection", "P2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-serve/SKILL.md"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-16358d22b63e69b7", "level": "warning", "message": {"text": "SkillSpector RA2 (rogue-agent) in skills/cli-serve/SKILL.md"}, "properties": {"repobilityId": "b389f66fb5e64627", "scanner": "scanner-primary", "fingerprint": "16358d22b63e69b7", "layer": "security", "severity": "medium", "confidence": 0.8, "tags": ["skillspector", "mcp-skill", "rogue-agent", "RA2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-serve/SKILL.md"}, "region": {"startLine": 259}}}]}, {"ruleId": "scanner-22b3c6c735a7f2d1", "level": "warning", "message": {"text": "SkillSpector E1 (data-exfil) in skills/cli-skill-collector/SKILL.md"}, "properties": {"repobilityId": "46a749cb6adccd70", "scanner": "scanner-primary", "fingerprint": "22b3c6c735a7f2d1", "layer": "security", "severity": "medium", "confidence": 0.6, "tags": ["skillspector", "mcp-skill", "data-exfil", "E1"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-skill-collector/SKILL.md"}, "region": {"startLine": 336}}}]}, {"ruleId": "scanner-71b10455414fbe72", "level": "warning", "message": {"text": "SkillSpector E3 (data-exfil) in skills/cli-skill-collector/SKILL.md"}, "properties": {"repobilityId": "1ec6600f503b82c0", "scanner": "scanner-primary", "fingerprint": "71b10455414fbe72", "layer": "security", "severity": "medium", "confidence": 0.6, "tags": ["skillspector", "mcp-skill", "data-exfil", "E3"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-skill-collector/SKILL.md"}, "region": {"startLine": 375}}}]}, {"ruleId": "scanner-2ecf44bda3b13bfd", "level": "error", "message": {"text": "SkillSpector P2 (prompt-injection) in skills/cli-skill-collector/SKILL.md"}, "properties": {"repobilityId": "1d9987d5b654800c", "scanner": "scanner-primary", "fingerprint": "2ecf44bda3b13bfd", "layer": "security", "severity": "high", "confidence": 0.7, "tags": ["skillspector", "mcp-skill", "prompt-injection", "P2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-skill-collector/SKILL.md"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-9980f754673195e6", "level": "error", "message": {"text": "SkillSpector SC2 (supply-chain) in skills/cli-skill-collector/SKILL.md"}, "properties": {"repobilityId": "02d4699c1d516ac7", "scanner": "scanner-primary", "fingerprint": "9980f754673195e6", "layer": "security", "severity": "high", "confidence": 0.9, "tags": ["skillspector", "mcp-skill", "supply-chain", "SC2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/cli-skill-collector/SKILL.md"}, "region": {"startLine": 336}}}]}, {"ruleId": "scanner-fa3719df7b91508a", "level": "warning", "message": {"text": "SkillSpector E1 (data-exfil) in skills/omni-agents-a2a/SKILL.md"}, "properties": {"repobilityId": "0d24fb4a8b424783", "scanner": "scanner-primary", "fingerprint": "fa3719df7b91508a", "layer": "security", "severity": "medium", "confidence": 0.6, "tags": ["skillspector", "mcp-skill", "data-exfil", "E1"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/omni-agents-a2a/SKILL.md"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-7ccbbca0f99d068f", "level": "error", "message": {"text": "SkillSpector P2 (prompt-injection) in skills/omni-agents-a2a/SKILL.md"}, "properties": {"repobilityId": "e16f08760a05ce8d", "scanner": "scanner-primary", "fingerprint": "7ccbbca0f99d068f", "layer": "security", "severity": "high", "confidence": 0.7, "tags": ["skillspector", "mcp-skill", "prompt-injection", "P2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/omni-agents-a2a/SKILL.md"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-5ca3c66cb9c7f3c0", "level": "warning", "message": {"text": "SkillSpector E1 (data-exfil) in skills/omni-api-keys/SKILL.md"}, "properties": {"repobilityId": "16a548f83a60e315", "scanner": "scanner-primary", "fingerprint": "5ca3c66cb9c7f3c0", "layer": "security", "severity": "medium", "confidence": 0.6, "tags": ["skillspector", "mcp-skill", "data-exfil", "E1"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/omni-api-keys/SKILL.md"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-178d1357bfa7bed4", "level": "error", "message": {"text": "SkillSpector TM1 (tool-misuse) in skills/omni-api-keys/SKILL.md"}, "properties": {"repobilityId": "dd3f54e4240328d0", "scanner": "scanner-primary", "fingerprint": "178d1357bfa7bed4", "layer": "security", "severity": "high", "confidence": 0.8, "tags": ["skillspector", "mcp-skill", "tool-misuse", "TM1"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/omni-api-keys/SKILL.md"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-e5f3190e4931e97d", "level": "warning", "message": {"text": "SkillSpector E1 (data-exfil) in skills/omni-auth/SKILL.md"}, "properties": {"repobilityId": "884f90029a7162d4", "scanner": "scanner-primary", "fingerprint": "e5f3190e4931e97d", "layer": "security", "severity": "medium", "confidence": 0.6, "tags": ["skillspector", "mcp-skill", "data-exfil", "E1"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/omni-auth/SKILL.md"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-26923fac5074dedc", "level": "error", "message": {"text": "SkillSpector P2 (prompt-injection) in skills/omni-auth/SKILL.md"}, "properties": {"repobilityId": "72ed99e5526a4a7f", "scanner": "scanner-primary", "fingerprint": "26923fac5074dedc", "layer": "security", "severity": "high", "confidence": 0.7, "tags": ["skillspector", "mcp-skill", "prompt-injection", "P2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/omni-auth/SKILL.md"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-e637c415447867e4", "level": "none", "message": {"text": "Run SkillSpector's LLM-backed analysis in your own pipeline"}, "properties": {"repobilityId": "1936f198ff5212bf", "scanner": "scanner-primary", "fingerprint": "e637c415447867e4", "layer": "security", "severity": "info", "confidence": 1.0, "tags": ["skillspector", "mcp-skill", "llm-advisory", "ai-coder"]}}, {"ruleId": "scanner-bc449d02a8f99438", "level": "warning", "message": {"text": "Privileged port 64 in use"}, "properties": {"repobilityId": "be19cd18e8b66910", "scanner": "scanner-primary", "fingerprint": "bc449d02a8f99438", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/vnc-browser/chromium/cdp-bridge.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d42fe9088d37503d", "level": "warning", "message": {"text": "Privileged port 32 in use"}, "properties": {"repobilityId": "20c0fabc691cdde4", "scanner": "scanner-primary", "fingerprint": "d42fe9088d37503d", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/edgetts-provider.test.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2e05976495715bfc", "level": "warning", "message": {"text": "Privileged port 21 in use"}, "properties": {"repobilityId": "d920b7cd1b1a16dc", "scanner": "scanner-primary", "fingerprint": "2e05976495715bfc", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/fixes-p1.test.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-01ce5d6d56d0679b", "level": "warning", "message": {"text": "Privileged port 5 in use"}, "properties": {"repobilityId": "a8f80b4866464301", "scanner": "scanner-primary", "fingerprint": "01ce5d6d56d0679b", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/quality.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dbcd417659cfba72", "level": "warning", "message": {"text": "Privileged port 212 in use"}, "properties": {"repobilityId": "e8292faa56e11ddc", "scanner": "scanner-primary", "fingerprint": "dbcd417659cfba72", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/quality.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-6a5e128fbcdefa67", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:24-trixie-slim"}, "properties": {"repobilityId": "e37f7b9a476330a2", "scanner": "scanner-primary", "fingerprint": "6a5e128fbcdefa67", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-d1ac919e548cf26c", "level": "warning", "message": {"text": "Dockerfile runs as root: docker/vnc-browser/chromium/Dockerfile"}, "properties": {"repobilityId": "d4ade88059f45764", "scanner": "scanner-primary", "fingerprint": "d1ac919e548cf26c", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-20e54996f1ef5e97", "level": "warning", "message": {"text": "Docker base image uses a mutable or implicit tag: linuxserver/chromium:latest"}, "properties": {"repobilityId": "2ae14ea2267a9810", "scanner": "scanner-primary", "fingerprint": "20e54996f1ef5e97", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/vnc-browser/chromium/Dockerfile"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-167e4667ddba8f95", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in open-sse/translator/response/openai-to-gemini-sse.ts:289"}, "properties": {"repobilityId": "524a7b91b3d3d3ed", "scanner": "scanner-primary", "fingerprint": "167e4667ddba8f95", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/translator/response/openai-to-gemini-sse.ts"}, "region": {"startLine": 289}}}]}, {"ruleId": "scanner-42a1641a3bb1caba", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in open-sse/mcp-server/tools/githubSkillTools.ts:124"}, "properties": {"repobilityId": "d36cece64788f2b4", "scanner": "scanner-primary", "fingerprint": "42a1641a3bb1caba", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/mcp-server/tools/githubSkillTools.ts"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-d579b165290fd121", "level": "error", "message": {"text": "Insecure pattern 'node_child_process' in open-sse/services/qoderCli.ts:1"}, "properties": {"repobilityId": "2de3e2e165cfdcf9", "scanner": "scanner-primary", "fingerprint": "d579b165290fd121", "layer": "security", "severity": "high", "confidence": 0.9, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/qoderCli.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8af8470257976947", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in electron/main.js:32"}, "properties": {"repobilityId": "62f4d103c3300b41", "scanner": "scanner-primary", "fingerprint": "8af8470257976947", "layer": "security", "severity": "medium", "confidence": 0.8, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "electron/main.js"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-229627e09152ee5d", "level": "error", "message": {"text": "Possible secret in tests/unit/inspector-har-export.test.ts"}, "properties": {"repobilityId": "4c5d58eb6f08fb0c", "scanner": "scanner-primary", "fingerprint": "229627e09152ee5d", "layer": "security", "severity": "critical", "confidence": 0.95, "tags": ["secrets", "openai_or_anthropic_key", "high-confidence-secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/inspector-har-export.test.ts"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-23c4d7cc41975263", "level": "error", "message": {"text": "Possible secret in tests/unit/log-redaction.test.ts"}, "properties": {"repobilityId": "a84633cef2344e9b", "scanner": "scanner-primary", "fingerprint": "23c4d7cc41975263", "layer": "security", "severity": "critical", "confidence": 0.95, "tags": ["secrets", "openai_or_anthropic_key", "high-confidence-secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/log-redaction.test.ts"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-b035fbb65e3b0356", "level": "error", "message": {"text": "Possible secret in tests/unit/api-key-mask-fix.test.mjs"}, "properties": {"repobilityId": "c5f885792aa97cb1", "scanner": "scanner-primary", "fingerprint": "b035fbb65e3b0356", "layer": "security", "severity": "critical", "confidence": 0.95, "tags": ["secrets", "openai_or_anthropic_key", "high-confidence-secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/api-key-mask-fix.test.mjs"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-3637f3ff50be6bab", "level": "error", "message": {"text": "Possible secret in tests/unit/db-backups-skills-3500.test.ts"}, "properties": {"repobilityId": "688368c2b8e96f2e", "scanner": "scanner-primary", "fingerprint": "3637f3ff50be6bab", "layer": "security", "severity": "critical", "confidence": 0.95, "tags": ["secrets", "openai_or_anthropic_key", "high-confidence-secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/db-backups-skills-3500.test.ts"}, "region": {"startLine": 178}}}]}, {"ruleId": "scanner-6c4109dd2e3c690f", "level": "error", "message": {"text": "Possible secret in tests/unit/issue-agent-runner.test.ts"}, "properties": {"repobilityId": "496cada78a263e91", "scanner": "scanner-primary", "fingerprint": "6c4109dd2e3c690f", "layer": "security", "severity": "critical", "confidence": 0.95, "tags": ["secrets", "openai_or_anthropic_key", "high-confidence-secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/issue-agent-runner.test.ts"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-8b448401ea304b05", "level": "error", "message": {"text": "Possible secret in tests/unit/issue-agent-runs-route.test.ts"}, "properties": {"repobilityId": "f5371920fec258f9", "scanner": "scanner-primary", "fingerprint": "8b448401ea304b05", "layer": "security", "severity": "critical", "confidence": 0.95, "tags": ["secrets", "openai_or_anthropic_key", "high-confidence-secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/issue-agent-runs-route.test.ts"}, "region": {"startLine": 178}}}]}, {"ruleId": "scanner-6a5f17df2a358b8d", "level": "error", "message": {"text": "Possible secret in tests/unit/github-collector.test.ts"}, "properties": {"repobilityId": "cafd23232af9489c", "scanner": "scanner-primary", "fingerprint": "6a5f17df2a358b8d", "layer": "security", "severity": "critical", "confidence": 0.99, "tags": ["secrets", "github_token", "high-confidence-secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/github-collector.test.ts"}, "region": {"startLine": 170}}}]}, {"ruleId": "scanner-716d3685b72680cc", "level": "error", "message": {"text": "Possible secret in tests/unit/issue-agent-audit.test.ts"}, "properties": {"repobilityId": "b70a69c46610c9cf", "scanner": "scanner-primary", "fingerprint": "716d3685b72680cc", "layer": "security", "severity": "critical", "confidence": 0.95, "tags": ["secrets", "openai_or_anthropic_key", "high-confidence-secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/issue-agent-audit.test.ts"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-38ab24c0b7fa6855", "level": "error", "message": {"text": "Possible secret in tests/unit/logger-redaction-wiring.test.ts"}, "properties": {"repobilityId": "946643bb65b35b4d", "scanner": "scanner-primary", "fingerprint": "38ab24c0b7fa6855", "layer": "security", "severity": "critical", "confidence": 0.95, "tags": ["secrets", "openai_or_anthropic_key", "high-confidence-secret"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/unit/logger-redaction-wiring.test.ts"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-4df44cbfc5aeac35", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/router-eval/compare.ts:4"}, "properties": {"repobilityId": "2e525bd8fefc4fd6", "scanner": "scanner-primary", "fingerprint": "4df44cbfc5aeac35", "layer": "security", "severity": "medium", "confidence": 0.8, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/router-eval/compare.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-748e8e9bfa8fc29d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/router-eval/search.ts:4"}, "properties": {"repobilityId": "7be0346e2b989639", "scanner": "scanner-primary", "fingerprint": "748e8e9bfa8fc29d", "layer": "security", "severity": "medium", "confidence": 0.8, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/router-eval/search.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-5c211973eced2f0d", "level": "error", "message": {"text": "Insecure pattern 'node_child_process' in scripts/i18n/extract-keys-from-diff.mjs:12"}, "properties": {"repobilityId": "c39c804c0a08920b", "scanner": "scanner-primary", "fingerprint": "5c211973eced2f0d", "layer": "security", "severity": "high", "confidence": 0.9, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/i18n/extract-keys-from-diff.mjs"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-d9eb59c590a82666", "level": "error", "message": {"text": "Insecure pattern 'node_child_process' in scripts/i18n/build-pending-from-missing.mjs:11"}, "properties": {"repobilityId": "43f9412cd3281dd5", "scanner": "scanner-primary", "fingerprint": "d9eb59c590a82666", "layer": "security", "severity": "high", "confidence": 0.9, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/i18n/build-pending-from-missing.mjs"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-1fe686fdf1449ffd", "level": "error", "message": {"text": "Insecure pattern 'node_child_process' in scripts/homolog/run.mjs:2"}, "properties": {"repobilityId": "5e8ce0103192b249", "scanner": "scanner-primary", "fingerprint": "1fe686fdf1449ffd", "layer": "security", "severity": "high", "confidence": 0.9, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/homolog/run.mjs"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-9ecc0ba68e1487ae", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/release/sync-next-cycle.mjs:17"}, "properties": {"repobilityId": "63d8e52c48821916", "scanner": "scanner-primary", "fingerprint": "9ecc0ba68e1487ae", "layer": "security", "severity": "medium", "confidence": 0.8, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/release/sync-next-cycle.mjs"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-ee12bfae93bed0cf", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/release/verify-published.mjs:15"}, "properties": {"repobilityId": "3a7020c909bc6f75", "scanner": "scanner-primary", "fingerprint": "ee12bfae93bed0cf", "layer": "security", "severity": "medium", "confidence": 0.8, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/release/verify-published.mjs"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-3f05262b972452fa", "level": "error", "message": {"text": "Insecure pattern 'node_child_process' in scripts/dev/system-info.mjs:17"}, "properties": {"repobilityId": "0e6ab13aeb4d6a41", "scanner": "scanner-primary", "fingerprint": "3f05262b972452fa", "layer": "security", "severity": "high", "confidence": 0.9, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dev/system-info.mjs"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-459deac5face5714", "level": "error", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ad-hoc/resolve_all_conflicts.js:2"}, "properties": {"repobilityId": "d40cd650d9539059", "scanner": "scanner-primary", "fingerprint": "459deac5face5714", "layer": "security", "severity": "high", "confidence": 0.9, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ad-hoc/resolve_all_conflicts.js"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-6f30991f4fb67090", "level": "error", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ad-hoc/delete-non-green-runs.mjs:1"}, "properties": {"repobilityId": "2e07dce76b101e11", "scanner": "scanner-primary", "fingerprint": "6f30991f4fb67090", "layer": "security", "severity": "high", "confidence": 0.9, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ad-hoc/delete-non-green-runs.mjs"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9da1221ecb01cd82", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in scripts/ad-hoc/dbsetup.js:7"}, "properties": {"repobilityId": "874b503385f9ebfd", "scanner": "scanner-primary", "fingerprint": "9da1221ecb01cd82", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ad-hoc/dbsetup.js"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-bc3e0f6089756264", "level": "error", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ad-hoc/fetch_prs.js:1"}, "properties": {"repobilityId": "1771f71ae6036fb8", "scanner": "scanner-primary", "fingerprint": "bc3e0f6089756264", "layer": "security", "severity": "high", "confidence": 0.9, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ad-hoc/fetch_prs.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-43b5fb6afd26b7d4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check/check-mutation-test-coverage.mjs:27"}, "properties": {"repobilityId": "a376345f1c58fe89", "scanner": "scanner-primary", "fingerprint": "43b5fb6afd26b7d4", "layer": "security", "severity": "medium", "confidence": 0.8, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check/check-mutation-test-coverage.mjs"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-e84ddde04b66c2fd", "level": "error", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check/check-env-doc-sync.mjs:29"}, "properties": {"repobilityId": "c9e58bba5244f0f5", "scanner": "scanner-primary", "fingerprint": "e84ddde04b66c2fd", "layer": "security", "severity": "high", "confidence": 0.9, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check/check-env-doc-sync.mjs"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-5c1bcf643a6c2862", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check/check-router-eval-regression.ts:5"}, "properties": {"repobilityId": "f0edae12b01f74f2", "scanner": "scanner-primary", "fingerprint": "5c1bcf643a6c2862", "layer": "security", "severity": "medium", "confidence": 0.8, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check/check-router-eval-regression.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-d1060444b64ecd09", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in src/types/sqljs.d.ts:17"}, "properties": {"repobilityId": "947977593325776c", "scanner": "scanner-primary", "fingerprint": "d1060444b64ecd09", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/types/sqljs.d.ts"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-93a41eb4297b1232", "level": "error", "message": {"text": "Insecure pattern 'node_child_process' in src/shared/utils/machineId.ts:1"}, "properties": {"repobilityId": "13cb17a499d7144b", "scanner": "scanner-primary", "fingerprint": "93a41eb4297b1232", "layer": "security", "severity": "high", "confidence": 0.9, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/utils/machineId.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-69ffec00063e16f4", "level": "error", "message": {"text": "Insecure pattern 'node_child_process' in src/shared/services/cliRuntime.ts:5"}, "properties": {"repobilityId": "5052485118e4a875", "scanner": "scanner-primary", "fingerprint": "69ffec00063e16f4", "layer": "security", "severity": "high", "confidence": 0.9, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/services/cliRuntime.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-c0a22b616f23599c", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in src/mitm/cert/install.ts:89"}, "properties": {"repobilityId": "05634cae23a7d75b", "scanner": "scanner-primary", "fingerprint": "c0a22b616f23599c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/mitm/cert/install.ts"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-6d996c7d0089244e", "level": "error", "message": {"text": "Insecure pattern 'node_child_process' in src/mitm/cert/install.ts:3"}, "properties": {"repobilityId": "f714f0b8ab2cd63a", "scanner": "scanner-primary", "fingerprint": "6d996c7d0089244e", "layer": "security", "severity": "high", "confidence": 0.9, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/mitm/cert/install.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-d9aa4149ad5a074c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:71"}, "properties": {"repobilityId": "0bca654fa2052eb0", "scanner": "scanner-primary", "fingerprint": "d9aa4149ad5a074c", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/layout.tsx"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-fe5c43c3791a7e44", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in src/app/api/oauth/cursor/auto-import/route.ts:51"}, "properties": {"repobilityId": "da329c5d71937cd6", "scanner": "scanner-primary", "fingerprint": "fe5c43c3791a7e44", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/oauth/cursor/auto-import/route.ts"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-4b524d8efa67266a", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in src/app/api/free-tier/summary/route.ts:7"}, "properties": {"repobilityId": "7d6b3fec245c81d2", "scanner": "scanner-primary", "fingerprint": "4b524d8efa67266a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/free-tier/summary/route.ts"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-b12d11b4ffe92bbf", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/docs/[...slug]/page.tsx:85"}, "properties": {"repobilityId": "57b7de53567c167c", "scanner": "scanner-primary", "fingerprint": "b12d11b4ffe92bbf", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/docs/[...slug]/page.tsx"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-37d3534e58a87dfd", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in src/app/callback/page.tsx:96"}, "properties": {"repobilityId": "04755bf859c3e40c", "scanner": "scanner-primary", "fingerprint": "37d3534e58a87dfd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/callback/page.tsx"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-05cf0d315746ad2b", "level": "error", "message": {"text": "Insecure pattern 'node_child_process' in src/lib/acp/registry.ts:13"}, "properties": {"repobilityId": "4d9dac605af38e69", "scanner": "scanner-primary", "fingerprint": "05cf0d315746ad2b", "layer": "security", "severity": "high", "confidence": 0.9, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/acp/registry.ts"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-9373ffa946dd4c79", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in src/lib/db/adapters/betterSqliteAdapter.ts:24"}, "properties": {"repobilityId": "90f4212b07c35c2e", "scanner": "scanner-primary", "fingerprint": "9373ffa946dd4c79", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/db/adapters/betterSqliteAdapter.ts"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-9f98ed8c14b121b3", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in src/lib/db/adapters/bunSqliteAdapter.ts:15"}, "properties": {"repobilityId": "234e54fd9767da10", "scanner": "scanner-primary", "fingerprint": "9f98ed8c14b121b3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/db/adapters/bunSqliteAdapter.ts"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-a6d296051889cc27", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in src/lib/db/adapters/types.ts:18"}, "properties": {"repobilityId": "f8f1fd684b32d226", "scanner": "scanner-primary", "fingerprint": "a6d296051889cc27", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/db/adapters/types.ts"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-722c7155e3e51408", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in src/lib/db/adapters/nodeSqliteShared.ts:10"}, "properties": {"repobilityId": "b94debf324c67de6", "scanner": "scanner-primary", "fingerprint": "722c7155e3e51408", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/db/adapters/nodeSqliteShared.ts"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-999ab7543d716922", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in src/lib/skills/githubCollector.ts:48"}, "properties": {"repobilityId": "567fb8f975f64cb7", "scanner": "scanner-primary", "fingerprint": "999ab7543d716922", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/skills/githubCollector.ts"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-dfc1fa3e0a505321", "level": "error", "message": {"text": "Insecure pattern 'python_os_system' in src/lib/skills/githubCollector.ts:50"}, "properties": {"repobilityId": "66161cb98f58df3d", "scanner": "scanner-primary", "fingerprint": "dfc1fa3e0a505321", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "python_os_system"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/skills/githubCollector.ts"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-4e403ddab612a854", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in src/lib/skills/githubCollector.ts:49"}, "properties": {"repobilityId": "e3a19fe02e50057f", "scanner": "scanner-primary", "fingerprint": "4e403ddab612a854", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/skills/githubCollector.ts"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-e05251130aff10f5", "level": "error", "message": {"text": "Insecure pattern 'node_child_process' in src/lib/copilot/tools.ts:8"}, "properties": {"repobilityId": "08e5de3b99db41f5", "scanner": "scanner-primary", "fingerprint": "e05251130aff10f5", "layer": "security", "severity": "high", "confidence": 0.9, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/copilot/tools.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-7e303d1261324cd9", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in src/lib/quota/redisQuotaStore.ts:39"}, "properties": {"repobilityId": "2a465595aef2685c", "scanner": "scanner-primary", "fingerprint": "7e303d1261324cd9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/quota/redisQuotaStore.ts"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-42a374e3d347f431", "level": "error", "message": {"text": "Insecure pattern 'node_child_process' in src/lib/cli-helper/tool-detector.ts:3"}, "properties": {"repobilityId": "a369e3753df6e97c", "scanner": "scanner-primary", "fingerprint": "42a374e3d347f431", "layer": "security", "severity": "high", "confidence": 0.9, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/cli-helper/tool-detector.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-8d52c6ee33f9c983", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7267cc3f32aff862", "scanner": "scanner-primary", "fingerprint": "8d52c6ee33f9c983", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/nightly-resilience.yml"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-7a1e6c351573749e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "df2458f45a006f39", "scanner": "scanner-primary", "fingerprint": "7a1e6c351573749e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/wiki-sync.yml"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-7c4be30924b0d0da", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "f29703e785ac72af", "scanner": "scanner-primary", "fingerprint": "7c4be30924b0d0da", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/wiki-sync.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fa9b995646930c75", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f84a879490ba8598", "scanner": "scanner-primary", "fingerprint": "fa9b995646930c75", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/npm-publish.yml"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-0fe2cc8022e468a5", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "511b516ef93e6937", "scanner": "scanner-primary", "fingerprint": "0fe2cc8022e468a5", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/npm-publish.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9a899e2e6f7bb10a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "02f1002706d7b77b", "scanner": "scanner-primary", "fingerprint": "9a899e2e6f7bb10a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mutation-redundancy.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-108b9e42f7cc0e7c", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0ff93e1492719329", "scanner": "scanner-primary", "fingerprint": "108b9e42f7cc0e7c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/electron-release.yml"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-abc0a90d9fac8c0b", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "cef1579073fcc62d", "scanner": "scanner-primary", "fingerprint": "abc0a90d9fac8c0b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/electron-release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8265e7396e2f7333", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "18c6fdde4cbea577", "scanner": "scanner-primary", "fingerprint": "8265e7396e2f7333", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/nightly-property.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-b841c61fdfcff569", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "72f8e70cfd3aba03", "scanner": "scanner-primary", "fingerprint": "b841c61fdfcff569", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-076b03a16e76601d", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "a42462ccbe3d06f2", "scanner": "scanner-primary", "fingerprint": "076b03a16e76601d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-publish.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e04eab3aa1f521d4", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d06176f0b836371c", "scanner": "scanner-primary", "fingerprint": "e04eab3aa1f521d4", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scorecard.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-65a716a27d2be993", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "3133a88ce98acc76", "scanner": "scanner-primary", "fingerprint": "65a716a27d2be993", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scorecard.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7bcb78951d8589a8", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-23275a81025207c4", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ddb34162b7739911", "scanner": "scanner-primary", "fingerprint": "23275a81025207c4", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy-vps.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-8c45cbace34fe908", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "86c9867cb661f6b1", "scanner": "scanner-primary", "fingerprint": "8c45cbace34fe908", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/quality.yml"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-fd21be71f0897870", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "992767de416908ef", "scanner": "scanner-primary", "fingerprint": "fd21be71f0897870", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/nightly-release-green.yml"}, "region": {"startLine": 200}}}]}, {"ruleId": "scanner-de53ac274e5b4ecf", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fd3b1dfc8995472e", "scanner": "scanner-primary", "fingerprint": "de53ac274e5b4ecf", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/claude.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-37716d9c0a33ad5c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "abfb5752158cf655", "scanner": "scanner-primary", "fingerprint": "37716d9c0a33ad5c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/claude.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e4d1813370599f41", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bb2554c60d486d54", "scanner": "scanner-primary", "fingerprint": "e4d1813370599f41", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/nightly-mutation.yml"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-6efb0669920054fa", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1d681342e40f15b9", "scanner": "scanner-primary", "fingerprint": "6efb0669920054fa", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-fork.yml"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-0b8f1cf46718eaac", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "8ad420742cd4056e", "scanner": "scanner-primary", "fingerprint": "0b8f1cf46718eaac", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-fork.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-58b901fe458245c3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "57ecfd46648f3e4c", "scanner": "scanner-primary", "fingerprint": "58b901fe458245c3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/nightly-schemathesis.yml"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "714673743ff59cef", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0604121f91fb5a09", "level": "note", "message": {"text": "Very large file: open-sse/executors/codex.ts (1533 lines)"}, "properties": {"repobilityId": "30ec83119172c252", "scanner": "scanner-primary", "fingerprint": "0604121f91fb5a09", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-90072f8573d2971d", "level": "note", "message": {"text": "Very large file: open-sse/executors/cursor.ts (1541 lines)"}, "properties": {"repobilityId": "9a4f7a7fd1d65399", "scanner": "scanner-primary", "fingerprint": "90072f8573d2971d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-12782b53a781262d", "level": "note", "message": {"text": "Very large file: open-sse/executors/chatgpt-web.ts (3203 lines)"}, "properties": {"repobilityId": "aa99182f5c4af1ac", "scanner": "scanner-primary", "fingerprint": "12782b53a781262d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0e0577363947ea14", "level": "note", "message": {"text": "Very large file: open-sse/executors/base.ts (1400 lines)"}, "properties": {"repobilityId": "542a3dc546c5371b", "scanner": "scanner-primary", "fingerprint": "0e0577363947ea14", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c8b5ae42f3b8bc82", "level": "note", "message": {"text": "Very large file: open-sse/executors/antigravity.ts (1482 lines)"}, "properties": {"repobilityId": "fc5f30a2bd7643d3", "scanner": "scanner-primary", "fingerprint": "c8b5ae42f3b8bc82", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4a19203a04c1e58a", "level": "note", "message": {"text": "Very large file: open-sse/utils/cursorAgentProtobuf.ts (1491 lines)"}, "properties": {"repobilityId": "f9eb0364ca1d9146", "scanner": "scanner-primary", "fingerprint": "4a19203a04c1e58a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-99cbe310d9876d54", "level": "note", "message": {"text": "Very large file: open-sse/utils/stream.ts (2886 lines)"}, "properties": {"repobilityId": "c8ede358e9ec7960", "scanner": "scanner-primary", "fingerprint": "99cbe310d9876d54", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8b93184cf054e750", "level": "note", "message": {"text": "Very large file: open-sse/services/accountFallback.ts (1939 lines)"}, "properties": {"repobilityId": "e0de730caf2d0c09", "scanner": "scanner-primary", "fingerprint": "8b93184cf054e750", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-706b82ec1923484a", "level": "note", "message": {"text": "Very large file: open-sse/services/adobeFireflyClient.ts (1957 lines)"}, "properties": {"repobilityId": "c6ff3036f24c70e3", "scanner": "scanner-primary", "fingerprint": "706b82ec1923484a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d757a3db76645097", "level": "note", "message": {"text": "Very large file: open-sse/services/combo.ts (3629 lines)"}, "properties": {"repobilityId": "fe3f597b9a7f3f26", "scanner": "scanner-primary", "fingerprint": "d757a3db76645097", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-222c44f41129eba4", "level": "note", "message": {"text": "Very large file: open-sse/handlers/chatCore.ts (4865 lines)"}, "properties": {"repobilityId": "574e05f8607263fa", "scanner": "scanner-primary", "fingerprint": "222c44f41129eba4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bd70b320a5753deb", "level": "note", "message": {"text": "Very large file: open-sse/handlers/imageGeneration.ts (3096 lines)"}, "properties": {"repobilityId": "903354668aa82569", "scanner": "scanner-primary", "fingerprint": "bd70b320a5753deb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bf5de4443db7e58f", "level": "note", "message": {"text": "Very large file: tests/integration/liveGeminiShared.ts (1691 lines)"}, "properties": {"repobilityId": "3fd29ea2f7f5948f", "scanner": "scanner-primary", "fingerprint": "bf5de4443db7e58f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1958da2c836a6690", "level": "note", "message": {"text": "Very large file: tests/unit/account-fallback-service.test.ts (1562 lines)"}, "properties": {"repobilityId": "af53ff89becbde61", "scanner": "scanner-primary", "fingerprint": "1958da2c836a6690", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4c0a9f1a8ef5ab9a", "level": "note", "message": {"text": "Very large file: tests/unit/models-catalog-route.test.ts (1607 lines)"}, "properties": {"repobilityId": "c3bda5c536f37159", "scanner": "scanner-primary", "fingerprint": "4c0a9f1a8ef5ab9a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b3b9af64e7f74341", "level": "note", "message": {"text": "Very large file: tests/unit/sse-auth.test.ts (1599 lines)"}, "properties": {"repobilityId": "4468079ff47cbd7a", "scanner": "scanner-primary", "fingerprint": "b3b9af64e7f74341", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1d9c9f499eddfc00", "level": "note", "message": {"text": "Very large file: tests/unit/executor-default-base.test.ts (1489 lines)"}, "properties": {"repobilityId": "f4e24391a54f0778", "scanner": "scanner-primary", "fingerprint": "1d9c9f499eddfc00", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6944a4ee07b7a86c", "level": "note", "message": {"text": "Very large file: tests/unit/provider-validation-specialty.test.ts (2979 lines)"}, "properties": {"repobilityId": "156942843f9f6e98", "scanner": "scanner-primary", "fingerprint": "6944a4ee07b7a86c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3dce399e19e7ac8d", "level": "note", "message": {"text": "Very large file: tests/unit/image-generation-handler.test.ts (2028 lines)"}, "properties": {"repobilityId": "b3fae2dc3c85bfd5", "scanner": "scanner-primary", "fingerprint": "3dce399e19e7ac8d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-09828ef15d67d094", "level": "note", "message": {"text": "Very large file: tests/unit/stream-utils.test.ts (2444 lines)"}, "properties": {"repobilityId": "981233c291508dcd", "scanner": "scanner-primary", "fingerprint": "09828ef15d67d094", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-70e0309679659074", "level": "note", "message": {"text": "Very large file: tests/unit/grok-web.test.ts (2436 lines)"}, "properties": {"repobilityId": "1e58043d79f9ba6b", "scanner": "scanner-primary", "fingerprint": "70e0309679659074", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0e930ab97c4701b2", "level": "note", "message": {"text": "Very large file: tests/unit/chatcore-translation-paths.test.ts (2768 lines)"}, "properties": {"repobilityId": "9da260f1d6fa1078", "scanner": "scanner-primary", "fingerprint": "0e930ab97c4701b2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b44026acc0d15fbc", "level": "note", "message": {"text": "Very large file: tests/unit/translator-openai-to-gemini.test.ts (1523 lines)"}, "properties": {"repobilityId": "224bb010df5b4e87", "scanner": "scanner-primary", "fingerprint": "b44026acc0d15fbc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f843e69940aec881", "level": "note", "message": {"text": "Very large file: tests/unit/provider-models-route.test.ts (1783 lines)"}, "properties": {"repobilityId": "7c8674d8dfbb4b57", "scanner": "scanner-primary", "fingerprint": "f843e69940aec881", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cac8f30027b43cff", "level": "note", "message": {"text": "Very large file: tests/unit/combo-routing-engine.test.ts (3408 lines)"}, "properties": {"repobilityId": "6b7e63632aae03a7", "scanner": "scanner-primary", "fingerprint": "cac8f30027b43cff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9ab0967d70a6dc2d", "level": "note", "message": {"text": "Very large file: tests/unit/chatgpt-web.test.ts (3147 lines)"}, "properties": {"repobilityId": "0015021b22a77aac", "scanner": "scanner-primary", "fingerprint": "9ab0967d70a6dc2d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5fb1584eb3d99f80", "level": "note", "message": {"text": "Very large file: @omniroute/opencode-plugin/tests/config-shim.test.ts (1522 lines)"}, "properties": {"repobilityId": "769d0da9ed0aa9a7", "scanner": "scanner-primary", "fingerprint": "5fb1584eb3d99f80", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dbe1043aa8de64c4", "level": "note", "message": {"text": "Very large file: @omniroute/opencode-plugin/src/index.ts (4831 lines)"}, "properties": {"repobilityId": "5fc6be9c5a9172e6", "scanner": "scanner-primary", "fingerprint": "dbe1043aa8de64c4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e81d367552b225ef", "level": "note", "message": {"text": "Very large file: src/shared/components/RequestLoggerV2.tsx (1628 lines)"}, "properties": {"repobilityId": "a0442589fdb4dca7", "scanner": "scanner-primary", "fingerprint": "e81d367552b225ef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1f2562a3c8b3fcc2", "level": "note", "message": {"text": "Very large file: src/app/api/v1/models/catalog.ts (1591 lines)"}, "properties": {"repobilityId": "855623363c335f8d", "scanner": "scanner-primary", "fingerprint": "1f2562a3c8b3fcc2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9bed94029792ee36", "level": "note", "message": {"text": "Very large file: src/app/api/providers/[id]/models/route.ts (2237 lines)"}, "properties": {"repobilityId": "d0851c1215526b07", "scanner": "scanner-primary", "fingerprint": "9bed94029792ee36", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1cdf503088ba3bb9", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/dashboard/HomePageClient.tsx (1376 lines)"}, "properties": {"repobilityId": "46d63882b8b6379f", "scanner": "scanner-primary", "fingerprint": "1cdf503088ba3bb9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bd4fdc96d219ad07", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/dashboard/settings/components/RoutingTab.tsx (1623 lines)"}, "properties": {"repobilityId": "be54f7a1970b7995", "scanner": "scanner-primary", "fingerprint": "bd4fdc96d219ad07", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b95a96b108e582f7", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx (1463 lines)"}, "properties": {"repobilityId": "35cc5602647e2e9f", "scanner": "scanner-primary", "fingerprint": "b95a96b108e582f7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ef4c49275b82ab35", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/dashboard/settings/components/SystemStorageTab.tsx (1572 lines)"}, "properties": {"repobilityId": "8949547264458d2a", "scanner": "scanner-primary", "fingerprint": "ef4c49275b82ab35", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6ce6287bf51e74f9", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx (2147 lines)"}, "properties": {"repobilityId": "753d62117e77bb58", "scanner": "scanner-primary", "fingerprint": "6ce6287bf51e74f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5a8da345a39922e6", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx (3116 lines)"}, "properties": {"repobilityId": "eba7ea0b6afab3bc", "scanner": "scanner-primary", "fingerprint": "5a8da345a39922e6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5b47da77fa109081", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/dashboard/health/page.tsx (1164 lines)"}, "properties": {"repobilityId": "c2177ff57767a520", "scanner": "scanner-primary", "fingerprint": "5b47da77fa109081", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-130dbe9cf294eb34", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx (2614 lines)"}, "properties": {"repobilityId": "4a576887dda03c11", "scanner": "scanner-primary", "fingerprint": "130dbe9cf294eb34", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-916049a053589619", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/dashboard/providers/page.tsx (1917 lines)"}, "properties": {"repobilityId": "3be6b6acb42cd918", "scanner": "scanner-primary", "fingerprint": "916049a053589619", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8ef4f6f3be8cb243", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/dashboard/providers/[id]/components/modals/EditConnectionModal.tsx (1282 lines)"}, "properties": {"repobilityId": "a3d2e8aba93bd7e5", "scanner": "scanner-primary", "fingerprint": "8ef4f6f3be8cb243", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-51dddff9279b166b", "level": "note", "message": {"text": "Very large file: src/app/(dashboard)/dashboard/combos/page.tsx (4622 lines)"}, "properties": {"repobilityId": "829d8425352b9435", "scanner": "scanner-primary", "fingerprint": "51dddff9279b166b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5ef4343f029ee979", "level": "note", "message": {"text": "Very large file: src/lib/db/core.ts (1636 lines)"}, "properties": {"repobilityId": "40f957fc26edcc27", "scanner": "scanner-primary", "fingerprint": "5ef4343f029ee979", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9d2024850f3ea4b8", "level": "note", "message": {"text": "Very large file: src/lib/db/apiKeys.ts (1517 lines)"}, "properties": {"repobilityId": "dfcd5cfe0b30f521", "scanner": "scanner-primary", "fingerprint": "9d2024850f3ea4b8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-658feca8c6527a04", "level": "note", "message": {"text": "Very large file: src/sse/services/auth.ts (2448 lines)"}, "properties": {"repobilityId": "fbacf5d5e1638c22", "scanner": "scanner-primary", "fingerprint": "658feca8c6527a04", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fa22af2978f7664b", "level": "note", "message": {"text": "Very large file: src/sse/handlers/chat.ts (1864 lines)"}, "properties": {"repobilityId": "1ce485741e79fa4b", "scanner": "scanner-primary", "fingerprint": "fa22af2978f7664b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c1c50b392d6630c3", "level": "note", "message": {"text": "46 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "c1c50b392d6630c3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-9fe68f69841f1c8c", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: open-sse/package.json"}, "properties": {"repobilityId": "0c4b11bbcfe326ba", "scanner": "scanner-primary", "fingerprint": "9fe68f69841f1c8c", "layer": "dependencies", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "fc3427579373803d", "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": "c85a82f6684fd67c", "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": "a23733e52a7d49a4", "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": "2eec8bc453af1214", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "86c98f24c4bfc22f", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-457e0599d0e9e6ad", "level": "note", "message": {"text": "Legacy-named symbol `__qa_backup` in eslint.config.mjs:143"}, "properties": {"repobilityId": "6035884e1ca86339", "scanner": "scanner-primary", "fingerprint": "457e0599d0e9e6ad", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-41b6102de9eb900f", "level": "note", "message": {"text": "Legacy-named symbol `__qa_backup` in next.config.mjs:230"}, "properties": {"repobilityId": "c74d5f6daa7d7d03", "scanner": "scanner-primary", "fingerprint": "41b6102de9eb900f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5a451018e3a2b81e", "level": "note", "message": {"text": "Legacy-named symbol `eleven_multilingual_v2` in open-sse/config/audioRegistry.ts:322"}, "properties": {"repobilityId": "a5e274ba8a6bf6ee", "scanner": "scanner-primary", "fingerprint": "5a451018e3a2b81e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-22259113eed8da15", "level": "note", "message": {"text": "Legacy-named symbol `model_configs_v2` in open-sse/config/providers/registry/windsurf/index.ts:16"}, "properties": {"repobilityId": "fece48ec8350363e", "scanner": "scanner-primary", "fingerprint": "22259113eed8da15", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bdb4ab84b45f473e", "level": "note", "message": {"text": "Legacy-named symbol `model_configs_v2` in open-sse/executors/windsurf.ts:46"}, "properties": {"repobilityId": "7cc8616aa660a744", "scanner": "scanner-primary", "fingerprint": "bdb4ab84b45f473e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5192266d784c03e4", "level": "note", "message": {"text": "Legacy-named symbol `token_v2` in open-sse/executors/notion-web.ts:7"}, "properties": {"repobilityId": "92a52d2e09a63c61", "scanner": "scanner-primary", "fingerprint": "5192266d784c03e4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1a74f1f2157a66df", "level": "note", "message": {"text": "Legacy-named symbol `message_center_v1` in open-sse/executors/felo-web.ts:119"}, "properties": {"repobilityId": "b1c9f82755f75681", "scanner": "scanner-primary", "fingerprint": "1a74f1f2157a66df", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ef7966a51aef112d", "level": "note", "message": {"text": "Legacy-named symbol `entity_group_v2` in open-sse/executors/perplexity-web/protocol.ts:28"}, "properties": {"repobilityId": "b196fd3d5be33196", "scanner": "scanner-primary", "fingerprint": "ef7966a51aef112d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9d7b5d67c0775b8f", "level": "note", "message": {"text": "Legacy-named symbol `token_v2` in open-sse/services/notionWebModels.ts:53"}, "properties": {"repobilityId": "5ca32630e9f9ac94", "scanner": "scanner-primary", "fingerprint": "9d7b5d67c0775b8f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-dc63dbb569e7c5ac", "level": "note", "message": {"text": "Legacy-named symbol `isDeprecated` in open-sse/services/modelDeprecation.ts:145"}, "properties": {"repobilityId": "f611270afe688436", "scanner": "scanner-primary", "fingerprint": "dc63dbb569e7c5ac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d9a7b6b335f99dd0", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh.ts:326"}, "properties": {"repobilityId": "a29f7198831c7ec3", "scanner": "scanner-primary", "fingerprint": "d9a7b6b335f99dd0", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/tokenRefresh.ts"}, "region": {"startLine": 326}}}]}, {"ruleId": "scanner-cb9d078739c60e9a", "level": "note", "message": {"text": "Legacy-named symbol `grok_api_v2` in open-sse/services/grokCliQuotaFetcher.ts:11"}, "properties": {"repobilityId": "424f4d76e92a5052", "scanner": "scanner-primary", "fingerprint": "cb9d078739c60e9a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-57266fce92fe269c", "level": "note", "message": {"text": "Legacy-named symbol `defaultRawLegacy` in open-sse/services/payloadRules.ts:123"}, "properties": {"repobilityId": "bbc0b3c394e517e7", "scanner": "scanner-primary", "fingerprint": "57266fce92fe269c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-53995b94b849f221", "level": "note", "message": {"text": "Legacy-named symbol `lastLegacy` in open-sse/services/notionStreamParser.ts:84"}, "properties": {"repobilityId": "35a70b165204cd17", "scanner": "scanner-primary", "fingerprint": "53995b94b849f221", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a30c57a5d2bfba8e", "level": "note", "message": {"text": "Legacy-named symbol `grok_api_v2` in open-sse/services/grokCliQuotaFrame.ts:3"}, "properties": {"repobilityId": "383f76de445055dc", "scanner": "scanner-primary", "fingerprint": "a30c57a5d2bfba8e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2a3630cab09bebcc", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh/providers/kiro.ts:41"}, "properties": {"repobilityId": "f081362fb438e7ae", "scanner": "scanner-primary", "fingerprint": "2a3630cab09bebcc", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/tokenRefresh/providers/kiro.ts"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-e218a522f6e86452", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh/providers/claudeOAuth.ts:21"}, "properties": {"repobilityId": "c0ad0d929169beb5", "scanner": "scanner-primary", "fingerprint": "e218a522f6e86452", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/tokenRefresh/providers/claudeOAuth.ts"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-1fca88ca618c2dd0", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh/providers/github.ts:13"}, "properties": {"repobilityId": "8f710f55584a719c", "scanner": "scanner-primary", "fingerprint": "1fca88ca618c2dd0", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/tokenRefresh/providers/github.ts"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-3c1d3a88c3e01e43", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh/providers/qoder.ts:23"}, "properties": {"repobilityId": "d1ed79f1990c7710", "scanner": "scanner-primary", "fingerprint": "3c1d3a88c3e01e43", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/tokenRefresh/providers/qoder.ts"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-ef64bf39651093ca", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/tokenRefresh/providers/google.ts:19"}, "properties": {"repobilityId": "74cfe07d687a5d5a", "scanner": "scanner-primary", "fingerprint": "ef64bf39651093ca", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/tokenRefresh/providers/google.ts"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-9b9e68b1c483d702", "level": "note", "message": {"text": "Legacy-named symbol `encodeTabularBlockLegacy` in open-sse/services/compression/engines/headroom/tabular.ts:14"}, "properties": {"repobilityId": "410cd5d33efad9c1", "scanner": "scanner-primary", "fingerprint": "9b9e68b1c483d702", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ad81bb5f2a22b691", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in open-sse/services/compression/engines/session-dedup/index.ts:403"}, "properties": {"repobilityId": "a641e8f56ba3941e", "scanner": "scanner-primary", "fingerprint": "ad81bb5f2a22b691", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f72202d536aef403", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 open-sse/services/usage/kiro.ts:194"}, "properties": {"repobilityId": "a8a1f3fc9c49b241", "scanner": "scanner-primary", "fingerprint": "f72202d536aef403", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/services/usage/kiro.ts"}, "region": {"startLine": 194}}}]}, {"ruleId": "scanner-e5b224939e303f73", "level": "note", "message": {"text": "Legacy-named symbol `getClaudeUsageLegacy` in open-sse/services/usage/claude.ts:6"}, "properties": {"repobilityId": "38fe6c3e2deb522e", "scanner": "scanner-primary", "fingerprint": "e5b224939e303f73", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3c9c33e0cbe758f7", "level": "note", "message": {"text": "Legacy-named symbol `__qa_backup` in scripts/dev/run-next-playwright.mjs:20"}, "properties": {"repobilityId": "f48715a70a2d3180", "scanner": "scanner-primary", "fingerprint": "3c9c33e0cbe758f7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2ceaa8b794fa85fb", "level": "note", "message": {"text": "Legacy-named symbol `token_v2` in src/shared/constants/providers/web-cookie.ts:423"}, "properties": {"repobilityId": "2c6ead61eb4057fb", "scanner": "scanner-primary", "fingerprint": "2ceaa8b794fa85fb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6a42c805f3529efc", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/shared/constants/sidebarVisibility/sections.ts:135"}, "properties": {"repobilityId": "6a34aff815be06df", "scanner": "scanner-primary", "fingerprint": "6a42c805f3529efc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-355a5a09991ee136", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/shared/components/RequestLoggerDetail.tsx:51"}, "properties": {"repobilityId": "44412ab3e8a596c9", "scanner": "scanner-primary", "fingerprint": "355a5a09991ee136", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0bd7af772dd2ac56", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/CommandPalette.tsx:66"}, "properties": {"repobilityId": "af19083494f5fde1", "scanner": "scanner-primary", "fingerprint": "0bd7af772dd2ac56", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/CommandPalette.tsx"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-8ca2437fd837cd56", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/ReasoningRoutingRules.tsx:119"}, "properties": {"repobilityId": "2e2fab4fe706c45d", "scanner": "scanner-primary", "fingerprint": "8ca2437fd837cd56", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/ReasoningRoutingRules.tsx"}, "region": {"startLine": 119}}}]}, {"ruleId": "scanner-261e694f496cce7e", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/shared/components/KiroSocialOAuthModal.tsx:143"}, "properties": {"repobilityId": "53b4076041ceb81f", "scanner": "scanner-primary", "fingerprint": "261e694f496cce7e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-080881944f7e1d83", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/shared/components/ConsoleLogViewer.tsx:308"}, "properties": {"repobilityId": "6697182d6db97b4a", "scanner": "scanner-primary", "fingerprint": "080881944f7e1d83", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-033983daaced7c7c", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/RequestLoggerV2.tsx:298"}, "properties": {"repobilityId": "38dec88406606ba6", "scanner": "scanner-primary", "fingerprint": "033983daaced7c7c", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/RequestLoggerV2.tsx"}, "region": {"startLine": 298}}}]}, {"ruleId": "scanner-5adc8702cce93736", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/shared/components/ManualConfigModal.tsx:38"}, "properties": {"repobilityId": "5e62be4d54ee1b8f", "scanner": "scanner-primary", "fingerprint": "5adc8702cce93736", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c02908c0aa1eb6c3", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/Sidebar.tsx:152"}, "properties": {"repobilityId": "4bbbe80514347587", "scanner": "scanner-primary", "fingerprint": "c02908c0aa1eb6c3", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/Sidebar.tsx"}, "region": {"startLine": 152}}}]}, {"ruleId": "scanner-c1c84d3df8421449", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/shared/components/OAuthModalPanels.tsx:50"}, "properties": {"repobilityId": "19e346bc5f3e86fa", "scanner": "scanner-primary", "fingerprint": "c1c84d3df8421449", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-184dbbf8e368fd20", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/ModelRoutingSection.tsx:67"}, "properties": {"repobilityId": "4297f5dd1e5e4dc1", "scanner": "scanner-primary", "fingerprint": "184dbbf8e368fd20", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/ModelRoutingSection.tsx"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-c31bb07a863a8711", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/shared/components/ModelSelectField.tsx:52"}, "properties": {"repobilityId": "4229200ebf0a1d61", "scanner": "scanner-primary", "fingerprint": "c31bb07a863a8711", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/ModelSelectField.tsx"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-e6da1d8c0f03fe91", "level": "note", "message": {"text": "Legacy-named symbol `token_v2` in src/shared/providers/webSessionCredentials.ts:66"}, "properties": {"repobilityId": "482a926f29aeef6a", "scanner": "scanner-primary", "fingerprint": "e6da1d8c0f03fe91", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7cfc7ded6c343a57", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/connect/codex/[token]/CodexConnectClient.tsx:151"}, "properties": {"repobilityId": "52674a45d1a996fd", "scanner": "scanner-primary", "fingerprint": "7cfc7ded6c343a57", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4909161d14973040", "level": "note", "message": {"text": "Legacy-named symbol `token_v2` in src/app/api/providers/[id]/models/route.ts:626"}, "properties": {"repobilityId": "45390db22ac30264", "scanner": "scanner-primary", "fingerprint": "4909161d14973040", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e332bfdf5777b8fd", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/HomePageClient.tsx:1349"}, "properties": {"repobilityId": "291153e6d6c06cdf", "scanner": "scanner-primary", "fingerprint": "e332bfdf5777b8fd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-48c39848d498399f", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/HomePageClient.tsx:212"}, "properties": {"repobilityId": "3718bbefbf21d82d", "scanner": "scanner-primary", "fingerprint": "48c39848d498399f", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/HomePageClient.tsx"}, "region": {"startLine": 212}}}]}, {"ruleId": "scanner-5ac3f0911de7a53a", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/CodexFastTierTab.tsx:37"}, "properties": {"repobilityId": "286df246cde6b78e", "scanner": "scanner-primary", "fingerprint": "5ac3f0911de7a53a", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/CodexFastTierTab.tsx"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-841d9498c29b93f4", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/SystemPromptTab.tsx:16"}, "properties": {"repobilityId": "c2b96e0f1244cf20", "scanner": "scanner-primary", "fingerprint": "841d9498c29b93f4", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/SystemPromptTab.tsx"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-e11c79e3f553859f", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/BackgroundDegradationTab.tsx:23"}, "properties": {"repobilityId": "580a51fec0e6e91e", "scanner": "scanner-primary", "fingerprint": "e11c79e3f553859f", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/BackgroundDegradationTab.tsx"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-a40bf18baeaf0cae", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/SidebarTab.tsx:396"}, "properties": {"repobilityId": "e9e0243e0ed03625", "scanner": "scanner-primary", "fingerprint": "a40bf18baeaf0cae", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/SidebarTab.tsx"}, "region": {"startLine": 396}}}]}, {"ruleId": "scanner-300e74ab69f4bb29", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/VisionBridgeSettingsTab.tsx:28"}, "properties": {"repobilityId": "552bc68f7310a289", "scanner": "scanner-primary", "fingerprint": "300e74ab69f4bb29", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/VisionBridgeSettingsTab.tsx"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-8edd2383d4b5e75e", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/RoutingTab.tsx:682"}, "properties": {"repobilityId": "39855ba351a116ab", "scanner": "scanner-primary", "fingerprint": "8edd2383d4b5e75e", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/RoutingTab.tsx"}, "region": {"startLine": 682}}}]}, {"ruleId": "scanner-437f5267eb8326fc", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/AutoDisableCard.tsx:19"}, "properties": {"repobilityId": "e5bf7a4cc1f23bc9", "scanner": "scanner-primary", "fingerprint": "437f5267eb8326fc", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/AutoDisableCard.tsx"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-c1de2464a0d46f4c", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ModelAliasesTab.tsx:18"}, "properties": {"repobilityId": "6f2682962aeda29e", "scanner": "scanner-primary", "fingerprint": "c1de2464a0d46f4c", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/ModelAliasesTab.tsx"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-6ab48cbb49ba36a6", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ComplianceTab.tsx:30"}, "properties": {"repobilityId": "26a26bb21539144e", "scanner": "scanner-primary", "fingerprint": "6ab48cbb49ba36a6", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/ComplianceTab.tsx"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-1d3783c364542f6c", "level": "note", "message": {"text": "Legacy-named symbol `importLegacy` in src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx:753"}, "properties": {"repobilityId": "bef0bbf4bba1c566", "scanner": "scanner-primary", "fingerprint": "1d3783c364542f6c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-06495321369d9da7", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/OneproxyTab.tsx:60"}, "properties": {"repobilityId": "4b5dce04219e25c5", "scanner": "scanner-primary", "fingerprint": "06495321369d9da7", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/OneproxyTab.tsx"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-e58b84834de5fb7d", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ComboDefaultsTab.tsx:140"}, "properties": {"repobilityId": "a21abe8e1b7ad2d2", "scanner": "scanner-primary", "fingerprint": "e58b84834de5fb7d", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/ComboDefaultsTab.tsx"}, "region": {"startLine": 140}}}]}, {"ruleId": "scanner-ae6eae40e92f8e67", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ClaudeFastModeTab.tsx:26"}, "properties": {"repobilityId": "5421a1e2c5e55947", "scanner": "scanner-primary", "fingerprint": "ae6eae40e92f8e67", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/ClaudeFastModeTab.tsx"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-dbd5fe715061b864", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/CacheSettingsTab.tsx:29"}, "properties": {"repobilityId": "ca644d93d4b82a39", "scanner": "scanner-primary", "fingerprint": "dbd5fe715061b864", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/CacheSettingsTab.tsx"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-c00788ca2f1145c2", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ResponsesStatePolicyTab.tsx:31"}, "properties": {"repobilityId": "db661bd2a27b0434", "scanner": "scanner-primary", "fingerprint": "c00788ca2f1145c2", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/ResponsesStatePolicyTab.tsx"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-9d6d4d1f8f35bdf5", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/ThinkingBudgetTab.tsx:53"}, "properties": {"repobilityId": "14e3404fb5ea4b0f", "scanner": "scanner-primary", "fingerprint": "9d6d4d1f8f35bdf5", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/ThinkingBudgetTab.tsx"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-ab662448814d5861", "level": "note", "message": {"text": "Legacy-named symbol `storageBackupCleanOld` in src/app/(dashboard)/dashboard/settings/components/DatabaseBackupRetentionCard.tsx:160"}, "properties": {"repobilityId": "c5b45dd1ec155573", "scanner": "scanner-primary", "fingerprint": "ab662448814d5861", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-78ae608d2f580034", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/CliproxyapiSettingsTab.tsx:65"}, "properties": {"repobilityId": "12c9c0320618c6ad", "scanner": "scanner-primary", "fingerprint": "78ae608d2f580034", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/CliproxyapiSettingsTab.tsx"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-69f6a116ca137c1b", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/MemorySkillsTab.tsx:89"}, "properties": {"repobilityId": "d551ce79a0eaf333", "scanner": "scanner-primary", "fingerprint": "69f6a116ca137c1b", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/MemorySkillsTab.tsx"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-25d72317beec03f3", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/RequestLimitsTab.tsx:36"}, "properties": {"repobilityId": "2acefeb138a9dc2a", "scanner": "scanner-primary", "fingerprint": "25d72317beec03f3", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/RequestLimitsTab.tsx"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-dffd6a466873bc1c", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/CompressionSettingsTab.tsx:220"}, "properties": {"repobilityId": "9c3e9868157633d2", "scanner": "scanner-primary", "fingerprint": "dffd6a466873bc1c", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/CompressionSettingsTab.tsx"}, "region": {"startLine": 220}}}]}, {"ruleId": "scanner-d3499ffc199f74ab", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/AppearanceTab.tsx:74"}, "properties": {"repobilityId": "0a245fa1ba7eeb51", "scanner": "scanner-primary", "fingerprint": "d3499ffc199f74ab", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/AppearanceTab.tsx"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-06089d862d44254e", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/SecurityTab.tsx:32"}, "properties": {"repobilityId": "6d389334b1b4f0b9", "scanner": "scanner-primary", "fingerprint": "06089d862d44254e", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/SecurityTab.tsx"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-0d52220c61362e30", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/CodexAutoPingTab.tsx:30"}, "properties": {"repobilityId": "0709c14a07252490", "scanner": "scanner-primary", "fingerprint": "0d52220c61362e30", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/CodexAutoPingTab.tsx"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-1b1e3bae202c99d2", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/settings/components/proxy/FreePoolTab.tsx:83"}, "properties": {"repobilityId": "7914aa29ce0cbb07", "scanner": "scanner-primary", "fingerprint": "1b1e3bae202c99d2", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/proxy/FreePoolTab.tsx"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-bbe6e43c1980e197", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/search-tools/components/RerankPanel.tsx:31"}, "properties": {"repobilityId": "8b4a9c073460ed29", "scanner": "scanner-primary", "fingerprint": "bbe6e43c1980e197", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/search-tools/components/RerankPanel.tsx"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-d5a4c5726ddafc8e", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/batch/FileDetailModal.tsx:147"}, "properties": {"repobilityId": "b5ff3beca22cd9c8", "scanner": "scanner-primary", "fingerprint": "d5a4c5726ddafc8e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-532f038f7075a9e3", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/batch/BatchDetailModal.tsx:210"}, "properties": {"repobilityId": "c11e64410ec3b1f7", "scanner": "scanner-primary", "fingerprint": "532f038f7075a9e3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-34c6c71b4e070cd4", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/translator/components/advanced/RawJsonPanel.tsx:435"}, "properties": {"repobilityId": "e0ff18fb7b35a90a", "scanner": "scanner-primary", "fingerprint": "34c6c71b4e070cd4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3742379fd338c1b5", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/translator/components/advanced/StreamTransformerAccordion.tsx:350"}, "properties": {"repobilityId": "3e4478197574cc23", "scanner": "scanner-primary", "fingerprint": "3742379fd338c1b5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e0a85cbdb9984c95", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/playground/components/ExportCodeModal.tsx:150"}, "properties": {"repobilityId": "87d18cc0ab171767", "scanner": "scanner-primary", "fingerprint": "e0a85cbdb9984c95", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-dd7e6c09a21321cd", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/playground/components/tabs/ApiTab.tsx:711"}, "properties": {"repobilityId": "f07196cc678761fa", "scanner": "scanner-primary", "fingerprint": "dd7e6c09a21321cd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0c46799c918dab38", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/compression/exclusions/ExclusionsPanel.tsx:32"}, "properties": {"repobilityId": "e912498e2809b548", "scanner": "scanner-primary", "fingerprint": "0c46799c918dab38", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/compression/exclusions/ExclusionsPanel.tsx"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-13265aa641580b58", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/usage/components/BudgetTelemetryCards.tsx:16"}, "properties": {"repobilityId": "81b513b25799d8bb", "scanner": "scanner-primary", "fingerprint": "13265aa641580b58", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/usage/components/BudgetTelemetryCards.tsx"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-a83699f2a288e91e", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/usage/components/FreeBudgetCard.tsx:572"}, "properties": {"repobilityId": "77c895eb5e738e9a", "scanner": "scanner-primary", "fingerprint": "a83699f2a288e91e", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/usage/components/FreeBudgetCard.tsx"}, "region": {"startLine": 572}}}]}, {"ruleId": "scanner-948b53f5478e2814", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx:1485"}, "properties": {"repobilityId": "2bd21960770048d2", "scanner": "scanner-primary", "fingerprint": "948b53f5478e2814", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9e16789a317b68ad", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/usage/components/ProviderLimits/useQuotaVisibility.ts:30"}, "properties": {"repobilityId": "ab46bc9c73126736", "scanner": "scanner-primary", "fingerprint": "9e16789a317b68ad", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/usage/components/ProviderLimits/useQuotaVisibility.ts"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-9e3c0a447931f2d3", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.tsx:249"}, "properties": {"repobilityId": "4a78d52b63249c37", "scanner": "scanner-primary", "fingerprint": "9e3c0a447931f2d3", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.tsx"}, "region": {"startLine": 249}}}]}, {"ruleId": "scanner-aa1cfd7ee1ad7545", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx:1101"}, "properties": {"repobilityId": "bbb647ac8c7a1151", "scanner": "scanner-primary", "fingerprint": "aa1cfd7ee1ad7545", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c6e91fda47acd732", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx:343"}, "properties": {"repobilityId": "399c0824e5697523", "scanner": "scanner-primary", "fingerprint": "c6e91fda47acd732", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx"}, "region": {"startLine": 343}}}]}, {"ruleId": "scanner-fc3697a42518c9c6", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/analytics/CompressionAnalyticsTab.tsx:151"}, "properties": {"repobilityId": "ce34275f2e97b09e", "scanner": "scanner-primary", "fingerprint": "fc3697a42518c9c6", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/analytics/CompressionAnalyticsTab.tsx"}, "region": {"startLine": 151}}}]}, {"ruleId": "scanner-d75b3c349cfc2a30", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/analytics/AutoRoutingAnalyticsTab.tsx:22"}, "properties": {"repobilityId": "cc2d619a2f36bc40", "scanner": "scanner-primary", "fingerprint": "d75b3c349cfc2a30", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/analytics/AutoRoutingAnalyticsTab.tsx"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-60ab980a8209b336", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/analytics/SearchAnalyticsTab.tsx:86"}, "properties": {"repobilityId": "13607c2554396838", "scanner": "scanner-primary", "fingerprint": "60ab980a8209b336", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/analytics/SearchAnalyticsTab.tsx"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-787fc7d1d42974b8", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/health/page.tsx:106"}, "properties": {"repobilityId": "0d108369e845829d", "scanner": "scanner-primary", "fingerprint": "787fc7d1d42974b8", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/health/page.tsx"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-b9e0822033f7131f", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx:1318"}, "properties": {"repobilityId": "881e1c288cbab761", "scanner": "scanner-primary", "fingerprint": "b9e0822033f7131f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d907d654746cd769", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx:516"}, "properties": {"repobilityId": "ae9a1c73d46ac52d", "scanner": "scanner-primary", "fingerprint": "d907d654746cd769", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx"}, "region": {"startLine": 516}}}]}, {"ruleId": "scanner-f30a3b299395c66c", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/endpoint/ApiEndpointsTab.tsx:149"}, "properties": {"repobilityId": "c2b84b4504b5bf12", "scanner": "scanner-primary", "fingerprint": "f30a3b299395c66c", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/endpoint/ApiEndpointsTab.tsx"}, "region": {"startLine": 149}}}]}, {"ruleId": "scanner-2504fdbb9bd7d1fe", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/endpoint/VscodeTokenAliasCard.tsx:208"}, "properties": {"repobilityId": "ec008b61eda3f7e5", "scanner": "scanner-primary", "fingerprint": "2504fdbb9bd7d1fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-384c1c1322be2aa1", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/media-providers/components/ImageExampleCard.tsx:36"}, "properties": {"repobilityId": "389b831d1c09b147", "scanner": "scanner-primary", "fingerprint": "384c1c1322be2aa1", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/media-providers/components/ImageExampleCard.tsx"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-d30294e2f851a31d", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/media-providers/components/PlaygroundCard.tsx:91"}, "properties": {"repobilityId": "cb89bb2e76ccd00d", "scanner": "scanner-primary", "fingerprint": "d30294e2f851a31d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-be3ef380b00fb846", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/providers/page.tsx:415"}, "properties": {"repobilityId": "5ae44988ae888eec", "scanner": "scanner-primary", "fingerprint": "be3ef380b00fb846", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/page.tsx"}, "region": {"startLine": 415}}}]}, {"ruleId": "scanner-e4e565c29ec37bf4", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/providers/[id]/components/ExternalLinkModal.tsx:64"}, "properties": {"repobilityId": "6a25808f2534c0ed", "scanner": "scanner-primary", "fingerprint": "e4e565c29ec37bf4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9a25cea93601a6b7", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/providers/[id]/components/PassthroughModelRow.tsx:179"}, "properties": {"repobilityId": "8d513367ecbfd67b", "scanner": "scanner-primary", "fingerprint": "9a25cea93601a6b7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e8f780ef70377542", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/providers/[id]/components/CustomModelsSection.tsx:490"}, "properties": {"repobilityId": "b7f8ab8b878b731b", "scanner": "scanner-primary", "fingerprint": "e8f780ef70377542", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f80960d2b8328a9a", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/providers/[id]/components/ModelRow.tsx:398"}, "properties": {"repobilityId": "ca7c2dd1e73e75f6", "scanner": "scanner-primary", "fingerprint": "f80960d2b8328a9a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e70bfbd3dd4c6f2f", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/providers/[id]/components/modals/AddApiKeyModal.tsx:636"}, "properties": {"repobilityId": "4c616214eca1d03d", "scanner": "scanner-primary", "fingerprint": "e70bfbd3dd4c6f2f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6ff032ae74e31583", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderConnections.ts:286"}, "properties": {"repobilityId": "e202e832df06fe44", "scanner": "scanner-primary", "fingerprint": "6ff032ae74e31583", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderConnections.ts"}, "region": {"startLine": 286}}}]}, {"ruleId": "scanner-65c5bbc561f6a71d", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/providers/hooks/useSyncedModelsByProvider.ts:22"}, "properties": {"repobilityId": "351c58fe1363fe37", "scanner": "scanner-primary", "fingerprint": "65c5bbc561f6a71d", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/hooks/useSyncedModelsByProvider.ts"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-adeda05ad27259fe", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/providers/services/components/CliproxyModelMappingEditor.tsx:88"}, "properties": {"repobilityId": "59726971e88fe8fe", "scanner": "scanner-primary", "fingerprint": "adeda05ad27259fe", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/services/components/CliproxyModelMappingEditor.tsx"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-aa8b3b23b4a15da8", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/providers/services/components/CliproxyConnectionPanel.tsx:34"}, "properties": {"repobilityId": "d529dfd3641fb18c", "scanner": "scanner-primary", "fingerprint": "aa8b3b23b4a15da8", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/services/components/CliproxyConnectionPanel.tsx"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-54ff0edad164479c", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/logs/CompressionLogTab.tsx:32"}, "properties": {"repobilityId": "80699330ac9e6096", "scanner": "scanner-primary", "fingerprint": "54ff0edad164479c", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/logs/CompressionLogTab.tsx"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-63f42fc59038051c", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/agent-skills/components/SkillPreviewPane.tsx:103"}, "properties": {"repobilityId": "f28e60ebd1e04fd7", "scanner": "scanner-primary", "fingerprint": "63f42fc59038051c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-506dcbadb9d80990", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/agent-skills/components/McpA2aLinksBar.tsx:56"}, "properties": {"repobilityId": "cc48a7ab06a62b02", "scanner": "scanner-primary", "fingerprint": "506dcbadb9d80990", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4153429400f9913a", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/memory/components/QdrantConfigCard.tsx:52"}, "properties": {"repobilityId": "a730e6cdff8294ce", "scanner": "scanner-primary", "fingerprint": "4153429400f9913a", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/memory/components/QdrantConfigCard.tsx"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-1054c7f0d9f30203", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/memory/components/tabs/EngineTab.tsx:29"}, "properties": {"repobilityId": "59191794fca12a92", "scanner": "scanner-primary", "fingerprint": "1054c7f0d9f30203", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/memory/components/tabs/EngineTab.tsx"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-323c05d2d7d5769a", "level": "note", "message": {"text": "Legacy-named symbol `compactOld` in src/app/(dashboard)/dashboard/memory/components/tabs/MemoriesTab.tsx:348"}, "properties": {"repobilityId": "b15cde23eb3d6539", "scanner": "scanner-primary", "fingerprint": "323c05d2d7d5769a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-147e334826515ebc", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/cli-code/CliCodePageClient.tsx:61"}, "properties": {"repobilityId": "532b60b3867b663e", "scanner": "scanner-primary", "fingerprint": "147e334826515ebc", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/CliCodePageClient.tsx"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-1431491faef5b8f9", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/DroidToolCard.tsx:531"}, "properties": {"repobilityId": "4da086ca218632ea", "scanner": "scanner-primary", "fingerprint": "1431491faef5b8f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-389d5d94acdbac67", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/ClaudeToolCard.tsx:352"}, "properties": {"repobilityId": "933caf295cf69d24", "scanner": "scanner-primary", "fingerprint": "389d5d94acdbac67", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-532b2022a4c89bd9", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/DefaultToolCard.tsx:341"}, "properties": {"repobilityId": "671384102393bcdb", "scanner": "scanner-primary", "fingerprint": "532b2022a4c89bd9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-afb97bb6e373a40a", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/OpenClawToolCard.tsx:349"}, "properties": {"repobilityId": "5192bf6ddc2a34df", "scanner": "scanner-primary", "fingerprint": "afb97bb6e373a40a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d12b6add23035053", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/CodexToolCard.tsx:734"}, "properties": {"repobilityId": "1e8fd6185053ce2f", "scanner": "scanner-primary", "fingerprint": "d12b6add23035053", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5938b62277d611de", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/CopilotToolCard.tsx:415"}, "properties": {"repobilityId": "4e1b401d1f15a4fc", "scanner": "scanner-primary", "fingerprint": "5938b62277d611de", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4c3e0a54e070766b", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/cli-code/components/CopilotToolCard.tsx:59"}, "properties": {"repobilityId": "238b878d11f71bca", "scanner": "scanner-primary", "fingerprint": "4c3e0a54e070766b", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/CopilotToolCard.tsx"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-6b4ffb6ca1e69412", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/cli-code/components/CustomCliCard.tsx:346"}, "properties": {"repobilityId": "b0e63fa20f9006ad", "scanner": "scanner-primary", "fingerprint": "6b4ffb6ca1e69412", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b8d960f5c0835a90", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/tools/traffic-inspector/TrafficInspectorPageClient.tsx:41"}, "properties": {"repobilityId": "791fd789e1ad6c1e", "scanner": "scanner-primary", "fingerprint": "b8d960f5c0835a90", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/tools/traffic-inspector/TrafficInspectorPageClient.tsx"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-bf32f6ecb79546c1", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/tools/traffic-inspector/components/HttpProxySnippetCard.tsx:79"}, "properties": {"repobilityId": "29b61dc817c6e122", "scanner": "scanner-primary", "fingerprint": "bf32f6ecb79546c1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-218550bcca31b271", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/context/CompressionStylesTile.tsx:30"}, "properties": {"repobilityId": "ec955a3e462c4728", "scanner": "scanner-primary", "fingerprint": "218550bcca31b271", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/context/CompressionStylesTile.tsx"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-553fa74e40fd036f", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/context/settings/CompressionPanel.tsx:158"}, "properties": {"repobilityId": "cbef5093096d6a77", "scanner": "scanner-primary", "fingerprint": "553fa74e40fd036f", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/context/settings/CompressionPanel.tsx"}, "region": {"startLine": 158}}}]}, {"ruleId": "scanner-735fcc54593b3714", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/context/omniglyph/OmniglyphContextPageClient.tsx:207"}, "properties": {"repobilityId": "af170b3c39b18c77", "scanner": "scanner-primary", "fingerprint": "735fcc54593b3714", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/context/omniglyph/OmniglyphContextPageClient.tsx"}, "region": {"startLine": 207}}}]}, {"ruleId": "scanner-487af4126da3b382", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/context/combos/CompressionCombosPageClient.tsx:74"}, "properties": {"repobilityId": "97716e24a4f59bd7", "scanner": "scanner-primary", "fingerprint": "487af4126da3b382", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/context/combos/CompressionCombosPageClient.tsx"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-8902c4b297f1439a", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/QuotaEndpointsCard.tsx:103"}, "properties": {"repobilityId": "fec9c9c7610243f2", "scanner": "scanner-primary", "fingerprint": "8902c4b297f1439a", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/costs/quota-share/components/QuotaEndpointsCard.tsx"}, "region": {"startLine": 103}}}]}, {"ruleId": "scanner-b040ef8e38a80e8d", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/UsageLogCard.tsx:44"}, "properties": {"repobilityId": "f0d8bf31b8566313", "scanner": "scanner-primary", "fingerprint": "b040ef8e38a80e8d", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/costs/quota-share/components/UsageLogCard.tsx"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-e3a20cb5e836761b", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/costs/quota-share/components/AccountQuotaRow.tsx:96"}, "properties": {"repobilityId": "caf4db9c253b53c2", "scanner": "scanner-primary", "fingerprint": "e3a20cb5e836761b", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/costs/quota-share/components/AccountQuotaRow.tsx"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-823269093bc89b53", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/costs/quota-share/hooks/useLocalStoragePoolMigration.ts:93"}, "properties": {"repobilityId": "9dc984df4b323287", "scanner": "scanner-primary", "fingerprint": "823269093bc89b53", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/costs/quota-share/hooks/useLocalStoragePoolMigration.ts"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-d3e0b4cc6d310c40", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/omni-skills/OmniSkillsPageClient.tsx:81"}, "properties": {"repobilityId": "652abadc0c812ba2", "scanner": "scanner-primary", "fingerprint": "d3e0b4cc6d310c40", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/omni-skills/OmniSkillsPageClient.tsx"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-4a78f8cf528c4cd7", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/omni-skills/components/SkillInspectorPane.tsx:61"}, "properties": {"repobilityId": "99e0922acd62966e", "scanner": "scanner-primary", "fingerprint": "4a78f8cf528c4cd7", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/omni-skills/components/SkillInspectorPane.tsx"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-b7453680522b104b", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/discovery/DiscoveryPageClient.tsx:106"}, "properties": {"repobilityId": "5abc284f29876275", "scanner": "scanner-primary", "fingerprint": "b7453680522b104b", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/discovery/DiscoveryPageClient.tsx"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-beff096814e9dabd", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/quota/page.tsx:12"}, "properties": {"repobilityId": "e7aa5d94f6585344", "scanner": "scanner-primary", "fingerprint": "beff096814e9dabd", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/quota/page.tsx"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-d70405db7c24fe48", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/webhooks/components/shared/HmacRecipeBlock.tsx:65"}, "properties": {"repobilityId": "32c67fa9ce63304c", "scanner": "scanner-primary", "fingerprint": "d70405db7c24fe48", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e7eea5998453ecfc", "level": "note", "message": {"text": "Legacy-named symbol `content_copy` in src/app/(dashboard)/dashboard/combos/page.tsx:1664"}, "properties": {"repobilityId": "4c347914f5d7c4de", "scanner": "scanner-primary", "fingerprint": "e7eea5998453ecfc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e60113068ca5b97c", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/app/(dashboard)/dashboard/combos/playground/ComboPlaygroundClient.tsx:76"}, "properties": {"repobilityId": "5a58897dd530348e", "scanner": "scanner-primary", "fingerprint": "e60113068ca5b97c", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/combos/playground/ComboPlaygroundClient.tsx"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-40356545e96d178b", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/lib/display/useProviderNodeMap.ts:47"}, "properties": {"repobilityId": "78e40fc5b9ac671f", "scanner": "scanner-primary", "fingerprint": "40356545e96d178b", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/display/useProviderNodeMap.ts"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-fec0d3789d7b3987", "level": "note", "message": {"text": "Legacy-named symbol `call_logs_v1_legacy` in src/lib/usage/callLogs.ts:554"}, "properties": {"repobilityId": "a20a798139cac53e", "scanner": "scanner-primary", "fingerprint": "fec0d3789d7b3987", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e5ddbff328bcec09", "level": "note", "message": {"text": "Legacy-named symbol `oauthLegacy` in src/lib/resilience/settings.ts:165"}, "properties": {"repobilityId": "113a2ae64dc7093f", "scanner": "scanner-primary", "fingerprint": "e5ddbff328bcec09", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7e92acbf75b8ed00", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/lib/cloudAgent/agents/jules.ts:251"}, "properties": {"repobilityId": "306134200401b405", "scanner": "scanner-primary", "fingerprint": "7e92acbf75b8ed00", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/cloudAgent/agents/jules.ts"}, "region": {"startLine": 251}}}]}, {"ruleId": "scanner-7a475c87d724c715", "level": "note", "message": {"text": "Legacy-named symbol `token_v2` in src/lib/providers/validation/webProvidersB.ts:529"}, "properties": {"repobilityId": "df861f8c76130d55", "scanner": "scanner-primary", "fingerprint": "7a475c87d724c715", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8228359c134ff678", "level": "note", "message": {"text": "Legacy-named symbol `call_logs_v1_legacy` in src/lib/db/core.ts:692"}, "properties": {"repobilityId": "649d2119e95bb6c1", "scanner": "scanner-primary", "fingerprint": "8228359c134ff678", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b8b2db9c498260ac", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 src/hooks/useLiveDashboard.ts:116"}, "properties": {"repobilityId": "494e733fdf2e7058", "scanner": "scanner-primary", "fingerprint": "b8b2db9c498260ac", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/hooks/useLiveDashboard.ts"}, "region": {"startLine": 116}}}]}, {"ruleId": "scanner-232280e648470954", "level": "note", "message": {"text": "Legacy-named symbol `client_api_v1` in src/server/authz/classify.ts:90"}, "properties": {"repobilityId": "4aa575c71b540c64", "scanner": "scanner-primary", "fingerprint": "232280e648470954", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c5e2f864e3de5318", "level": "note", "message": {"text": "Legacy-named symbol `client_api_v1` in src/server/authz/types.ts:33"}, "properties": {"repobilityId": "e6ac10ecb6f41d92", "scanner": "scanner-primary", "fingerprint": "c5e2f864e3de5318", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f6b8bd507bb049f4", "level": "note", "message": {"text": "479 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "a38ac474903d6688", "scanner": "scanner-primary", "fingerprint": "f6b8bd507bb049f4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2329ab96f6a27cb9", "level": "note", "message": {"text": "Vulnerable dependency undici 8.3.0: GHSA-35p6-xmwp-9g52"}, "properties": {"repobilityId": "586efa0af0d5fe78", "scanner": "scanner-primary", "fingerprint": "2329ab96f6a27cb9", "layer": "dependencies", "severity": "low", "confidence": 0.7, "tags": ["dependency", "sca", "osv", "GHSA-35p6-xmwp-9g52"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-91ce3bdba78acf1d", "level": "error", "message": {"text": "Vulnerable dependency undici 8.3.0: GHSA-38rv-x7px-6hhq"}, "properties": {"repobilityId": "28edbfb1bc6577d8", "scanner": "scanner-primary", "fingerprint": "91ce3bdba78acf1d", "layer": "dependencies", "severity": "high", "confidence": 0.7, "tags": ["dependency", "sca", "osv", "GHSA-38rv-x7px-6hhq"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dd8de9d500c41720", "level": "note", "message": {"text": "Vulnerable dependency undici 8.3.0: GHSA-g8m3-5g58-fq7m"}, "properties": {"repobilityId": "f6a52798ea553860", "scanner": "scanner-primary", "fingerprint": "dd8de9d500c41720", "layer": "dependencies", "severity": "low", "confidence": 0.7, "tags": ["dependency", "sca", "osv", "GHSA-g8m3-5g58-fq7m"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4a1e4ebaeb94b70c", "level": "warning", "message": {"text": "Vulnerable dependency undici 8.3.0: GHSA-p88m-4jfj-68fv"}, "properties": {"repobilityId": "29a6a9221b663076", "scanner": "scanner-primary", "fingerprint": "4a1e4ebaeb94b70c", "layer": "dependencies", "severity": "medium", "confidence": 0.7, "tags": ["dependency", "sca", "osv", "GHSA-p88m-4jfj-68fv"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f448283207259c0f", "level": "warning", "message": {"text": "Vulnerable dependency undici 8.3.0: GHSA-pr7r-676h-xcf6"}, "properties": {"repobilityId": "f25ec2263b4bc7e0", "scanner": "scanner-primary", "fingerprint": "f448283207259c0f", "layer": "dependencies", "severity": "medium", "confidence": 0.7, "tags": ["dependency", "sca", "osv", "GHSA-pr7r-676h-xcf6"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-198d6f0c258b9b08", "level": "error", "message": {"text": "Vulnerable dependency undici 8.3.0: GHSA-vmh5-mc38-953g"}, "properties": {"repobilityId": "f0a4e3feab8ed4b7", "scanner": "scanner-primary", "fingerprint": "198d6f0c258b9b08", "layer": "dependencies", "severity": "high", "confidence": 0.7, "tags": ["dependency", "sca", "osv", "GHSA-vmh5-mc38-953g"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dee4c7b7d599ac44", "level": "error", "message": {"text": "Vulnerable dependency undici 8.3.0: GHSA-vxpw-j846-p89q"}, "properties": {"repobilityId": "eab4937c3f5d5c35", "scanner": "scanner-primary", "fingerprint": "dee4c7b7d599ac44", "layer": "dependencies", "severity": "high", "confidence": 0.7, "tags": ["dependency", "sca", "osv", "GHSA-vxpw-j846-p89q"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-93ba4d5bc7da6348", "level": "warning", "message": {"text": "Vulnerable dependency ws 8.18.0: GHSA-58qx-3vcg-4xpx"}, "properties": {"repobilityId": "4b711e251c99749c", "scanner": "scanner-primary", "fingerprint": "93ba4d5bc7da6348", "layer": "dependencies", "severity": "medium", "confidence": 0.7, "tags": ["dependency", "sca", "osv", "GHSA-58qx-3vcg-4xpx"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a754f02cc109ce7b", "level": "error", "message": {"text": "Vulnerable dependency ws 8.18.0: GHSA-96hv-2xvq-fx4p"}, "properties": {"repobilityId": "ac83265fafaa07b6", "scanner": "scanner-primary", "fingerprint": "a754f02cc109ce7b", "layer": "dependencies", "severity": "high", "confidence": 0.7, "tags": ["dependency", "sca", "osv", "GHSA-96hv-2xvq-fx4p"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-14b1d2244ac20a01", "level": "warning", "message": {"text": "Dependency @toon-format/toon is two or more major versions behind"}, "properties": {"repobilityId": "6034ed0dc94f7ffd", "scanner": "scanner-primary", "fingerprint": "14b1d2244ac20a01", "layer": "dependencies", "severity": "medium", "confidence": 0.9, "tags": ["dependency", "freshness", "outdated"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open-sse/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-71b3ee8b41760da3", "level": "error", "message": {"text": "Dangling fetch: POST /api/settings/proxy/test (src/shared/components/ProxyConfigModal.tsx:508)"}, "properties": {"repobilityId": "f095ab47c6d0e7bd", "scanner": "scanner-primary", "fingerprint": "71b3ee8b41760da3", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/ProxyConfigModal.tsx"}, "region": {"startLine": 508}}}]}, {"ruleId": "scanner-a7952ebc1de30959", "level": "error", "message": {"text": "Dangling fetch: POST /api/oauth/${provider}/poll (src/shared/components/OAuthModal.tsx:96)"}, "properties": {"repobilityId": "9d34a7fe9c2942f4", "scanner": "scanner-primary", "fingerprint": "a7952ebc1de30959", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/OAuthModal.tsx"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-3e9045d5d8647689", "level": "error", "message": {"text": "Dangling fetch: POST /api/oauth/${provider}/exchange (src/shared/components/OAuthModal.tsx:210)"}, "properties": {"repobilityId": "0f07549041f689d2", "scanner": "scanner-primary", "fingerprint": "3e9045d5d8647689", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/OAuthModal.tsx"}, "region": {"startLine": 210}}}]}, {"ruleId": "scanner-d9af8b169c9d9ea8", "level": "error", "message": {"text": "Dangling fetch: POST /api/oauth/${provider}/import-token (src/shared/components/OAuthModal.tsx:284)"}, "properties": {"repobilityId": "8341269c78a56b54", "scanner": "scanner-primary", "fingerprint": "d9af8b169c9d9ea8", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/OAuthModal.tsx"}, "region": {"startLine": 284}}}]}, {"ruleId": "scanner-8d4a74827d87b6e4", "level": "error", "message": {"text": "Dangling fetch: GET /api/oauth/${provider}/start-callback-server (src/shared/components/OAuthModal.tsx:460)"}, "properties": {"repobilityId": "4f49790153b8f09c", "scanner": "scanner-primary", "fingerprint": "8d4a74827d87b6e4", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/OAuthModal.tsx"}, "region": {"startLine": 460}}}]}, {"ruleId": "scanner-34112a0211cb21ba", "level": "error", "message": {"text": "Dangling fetch: POST /api/oauth/${provider}/poll-callback (src/shared/components/OAuthModal.tsx:481)"}, "properties": {"repobilityId": "b9a8fee3c2cdfa17", "scanner": "scanner-primary", "fingerprint": "34112a0211cb21ba", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/shared/components/OAuthModal.tsx"}, "region": {"startLine": 481}}}]}, {"ruleId": "scanner-6532489b80e579ef", "level": "error", "message": {"text": "Dangling fetch: POST /api/settings/proxy/test (src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx:320)"}, "properties": {"repobilityId": "8d9ca308106d8c6b", "scanner": "scanner-primary", "fingerprint": "6532489b80e579ef", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx"}, "region": {"startLine": 320}}}]}, {"ruleId": "scanner-3e0ef6536587231b", "level": "error", "message": {"text": "Dangling fetch: GET /api/local/redis${endpoint} (src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx:18)"}, "properties": {"repobilityId": "47fe167ce5dd44ea", "scanner": "scanner-primary", "fingerprint": "3e0ef6536587231b", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-87cca45e04d972c3", "level": "error", "message": {"text": "Dangling fetch: GET /status (src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx:53)"}, "properties": {"repobilityId": "1fefdb0ef0c7ff21", "scanner": "scanner-primary", "fingerprint": "87cca45e04d972c3", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "helper:apiCall"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-4710a4731784d3bb", "level": "error", "message": {"text": "Dangling fetch: POST /start (src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx:66)"}, "properties": {"repobilityId": "26df4850e9e7e382", "scanner": "scanner-primary", "fingerprint": "4710a4731784d3bb", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "helper:apiCall"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-024ab947102ffa61", "level": "error", "message": {"text": "Dangling fetch: POST /stop (src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx:79)"}, "properties": {"repobilityId": "f8c5ec6f33781974", "scanner": "scanner-primary", "fingerprint": "024ab947102ffa61", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "helper:apiCall"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-18454219cbcaf51a", "level": "error", "message": {"text": "Dangling fetch: POST /api/proxy-fallback/test (src/app/(dashboard)/dashboard/settings/components/proxy/GlobalConfigTab.tsx:90)"}, "properties": {"repobilityId": "eb6ccfbaa690cedc", "scanner": "scanner-primary", "fingerprint": "18454219cbcaf51a", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/settings/components/proxy/GlobalConfigTab.tsx"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-132e2f2d1941c399", "level": "warning", "message": {"text": "Dangling fetch: POST /api${path} (src/app/(dashboard)/dashboard/playground/components/tabs/ApiTab.tsx:412)"}, "properties": {"repobilityId": "5ada040a517d3419", "scanner": "scanner-primary", "fingerprint": "132e2f2d1941c399", "layer": "api", "severity": "medium", "confidence": 0.55, "tags": ["wiring", "dangling-fetch", "fetch", "non-production-context", "development-endpoint"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/playground/components/tabs/ApiTab.tsx"}, "region": {"startLine": 412}}}]}, {"ruleId": "scanner-6cdfeff6f0a0be93", "level": "error", "message": {"text": "Dangling fetch: GET /api/openapi/spec (src/app/(dashboard)/dashboard/endpoint/ApiEndpointsTab.tsx:114)"}, "properties": {"repobilityId": "6679cd54835007bf", "scanner": "scanner-primary", "fingerprint": "6cdfeff6f0a0be93", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/endpoint/ApiEndpointsTab.tsx"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-9e29d1f4fd2f11b7", "level": "error", "message": {"text": "Dangling fetch: POST /a2a (src/app/(dashboard)/dashboard/endpoint/components/A2ADashboard.tsx:193)"}, "properties": {"repobilityId": "3dcdfec9ee7b5e73", "scanner": "scanner-primary", "fingerprint": "9e29d1f4fd2f11b7", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/endpoint/components/A2ADashboard.tsx"}, "region": {"startLine": 193}}}]}, {"ruleId": "scanner-f11b26d68a7e5456", "level": "error", "message": {"text": "Dangling fetch: GET /api/system/env/repair (src/app/(dashboard)/dashboard/providers/page.tsx:283)"}, "properties": {"repobilityId": "cc22ee4339eebe9e", "scanner": "scanner-primary", "fingerprint": "f11b26d68a7e5456", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/page.tsx"}, "region": {"startLine": 283}}}]}, {"ruleId": "scanner-45412b8811a97b9b", "level": "error", "message": {"text": "Dangling fetch: POST /api/system/env/repair (src/app/(dashboard)/dashboard/providers/page.tsx:307)"}, "properties": {"repobilityId": "b348945031039f18", "scanner": "scanner-primary", "fingerprint": "45412b8811a97b9b", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/page.tsx"}, "region": {"startLine": 307}}}]}, {"ruleId": "scanner-960d49655f40758f", "level": "error", "message": {"text": "Dangling fetch: POST /api/providers/${encodeURIComponent(connectionId)}/test (src/app/(dashboard)/dashboard/providers/components/onboarding/providerOnboardingApi.ts:215)"}, "properties": {"repobilityId": "78600805ccd80494", "scanner": "scanner-primary", "fingerprint": "960d49655f40758f", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/components/onboarding/providerOnboardingApi.ts"}, "region": {"startLine": 215}}}]}, {"ruleId": "scanner-811e2f8f548c7bee", "level": "error", "message": {"text": "Dangling fetch: POST /api/providers/${connection.id}/test (src/app/(dashboard)/dashboard/providers/[id]/components/modals/EditConnectionModal.tsx:372)"}, "properties": {"repobilityId": "80eb87e45c7fb87e", "scanner": "scanner-primary", "fingerprint": "811e2f8f548c7bee", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/[id]/components/modals/EditConnectionModal.tsx"}, "region": {"startLine": 372}}}]}, {"ruleId": "scanner-21506110c5d592eb", "level": "error", "message": {"text": "Dangling fetch: POST /api/oauth/grok-cli/import-token (src/app/(dashboard)/dashboard/providers/[id]/components/modals/ImportGrokCliAuthModal.tsx:107)"}, "properties": {"repobilityId": "0053b3416bb00921", "scanner": "scanner-primary", "fingerprint": "21506110c5d592eb", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/[id]/components/modals/ImportGrokCliAuthModal.tsx"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-7221981ccac98a9d", "level": "error", "message": {"text": "Dangling fetch: POST /api/models/test (src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelVisibilityHandlers.ts:292)"}, "properties": {"repobilityId": "6a79043a1c2f6428", "scanner": "scanner-primary", "fingerprint": "7221981ccac98a9d", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelVisibilityHandlers.ts"}, "region": {"startLine": 292}}}]}, {"ruleId": "scanner-83fb44c0279daea3", "level": "error", "message": {"text": "Dangling fetch: POST /api/providers/${connectionId}/test (src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderConnections.ts:540)"}, "properties": {"repobilityId": "a0b7d89c4d2afa0c", "scanner": "scanner-primary", "fingerprint": "83fb44c0279daea3", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderConnections.ts"}, "region": {"startLine": 540}}}]}, {"ruleId": "scanner-071134f9e8206abb", "level": "error", "message": {"text": "Dangling fetch: POST /api/oauth/${providerId}/public-link (src/app/(dashboard)/dashboard/providers/[id]/hooks/useExternalLinkFlow.ts:34)"}, "properties": {"repobilityId": "3cbd4b17130f8a8e", "scanner": "scanner-primary", "fingerprint": "071134f9e8206abb", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/[id]/hooks/useExternalLinkFlow.ts"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-fae8e73dd7e00a12", "level": "error", "message": {"text": "Dangling fetch: PUT /api/providers/${selectedConnection?.id} (src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderNodeActions.ts:44)"}, "properties": {"repobilityId": "0c58db3c1c70bbd5", "scanner": "scanner-primary", "fingerprint": "fae8e73dd7e00a12", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderNodeActions.ts"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-548af4c67a313507", "level": "error", "message": {"text": "Dangling fetch: POST /api/services/${NAME}/install (src/app/(dashboard)/dashboard/providers/services/components/NinerouterInstallWizard.tsx:28)"}, "properties": {"repobilityId": "d985c622a4c6ae67", "scanner": "scanner-primary", "fingerprint": "548af4c67a313507", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/services/components/NinerouterInstallWizard.tsx"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-d1e4b05c5dbeae67", "level": "error", "message": {"text": "Dangling fetch: POST /api/services/${name}/rotate-key (src/app/(dashboard)/dashboard/providers/services/components/ApiKeyField.tsx:46)"}, "properties": {"repobilityId": "d1a5f6bf24a44fcc", "scanner": "scanner-primary", "fingerprint": "d1e4b05c5dbeae67", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/services/components/ApiKeyField.tsx"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-219d6eb49ccf6e7d", "level": "error", "message": {"text": "Dangling fetch: GET /api/services/${name}/status?reveal=key (src/app/(dashboard)/dashboard/providers/services/components/ApiKeyField.tsx:60)"}, "properties": {"repobilityId": "f9e5a4e96a7803d0", "scanner": "scanner-primary", "fingerprint": "219d6eb49ccf6e7d", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/services/components/ApiKeyField.tsx"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-42e76a039b05d19c", "level": "error", "message": {"text": "Dangling fetch: POST /api/services/${name}/auto-start (src/app/(dashboard)/dashboard/providers/services/components/AutoStartToggle.tsx:25)"}, "properties": {"repobilityId": "8fbde08361a24f66", "scanner": "scanner-primary", "fingerprint": "42e76a039b05d19c", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/services/components/AutoStartToggle.tsx"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-e587b5dcd6ca036d", "level": "error", "message": {"text": "Dangling fetch: POST /api/services/${NAME}/provider-expose (src/app/(dashboard)/dashboard/providers/services/components/NinerouterProviderExposureCard.tsx:34)"}, "properties": {"repobilityId": "7ba0a11cd99bc1f1", "scanner": "scanner-primary", "fingerprint": "e587b5dcd6ca036d", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/services/components/NinerouterProviderExposureCard.tsx"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-9400a9a4f48d74ec", "level": "error", "message": {"text": "Dangling fetch: POST /api/services/${NAME}/provider-expose (src/app/(dashboard)/dashboard/providers/services/components/CliproxyProviderExposureCard.tsx:23)"}, "properties": {"repobilityId": "c4c48ef59588b891", "scanner": "scanner-primary", "fingerprint": "9400a9a4f48d74ec", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/services/components/CliproxyProviderExposureCard.tsx"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-90e41aec92a7cd9f", "level": "error", "message": {"text": "Dangling fetch: POST /api/services/${name}/${verb} (src/app/(dashboard)/dashboard/providers/services/components/ServiceLifecycleButtons.tsx:29)"}, "properties": {"repobilityId": "aedcba0955a51025", "scanner": "scanner-primary", "fingerprint": "90e41aec92a7cd9f", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/services/components/ServiceLifecycleButtons.tsx"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-30d5d08877ddfe4a", "level": "error", "message": {"text": "Dangling fetch: GET /api/services/${name}/status (src/app/(dashboard)/dashboard/providers/services/hooks/useServiceStatus.ts:43)"}, "properties": {"repobilityId": "061e77204f5f6987", "scanner": "scanner-primary", "fingerprint": "30d5d08877ddfe4a", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/providers/services/hooks/useServiceStatus.ts"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-47006399c5aaaa5a", "level": "error", "message": {"text": "Dangling fetch: GET /api/logs?filter=compressed&limit=50 (src/app/(dashboard)/dashboard/logs/CompressionLogTab.tsx:32)"}, "properties": {"repobilityId": "289a303e7865c17c", "scanner": "scanner-primary", "fingerprint": "47006399c5aaaa5a", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/logs/CompressionLogTab.tsx"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-679735ce736184c2", "level": "error", "message": {"text": "Dangling fetch: POST /api/providers/${conn.id}/test (src/app/(dashboard)/dashboard/onboarding/page.tsx:175)"}, "properties": {"repobilityId": "81b8e11f33086338", "scanner": "scanner-primary", "fingerprint": "679735ce736184c2", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/onboarding/page.tsx"}, "region": {"startLine": 175}}}]}, {"ruleId": "scanner-522b23cb19f57eda", "level": "error", "message": {"text": "Dangling fetch: POST /api/version-manager/${action} (src/app/(dashboard)/dashboard/cli-code/components/CliproxyapiToolCard.tsx:67)"}, "properties": {"repobilityId": "966a270b4c5b83e3", "scanner": "scanner-primary", "fingerprint": "522b23cb19f57eda", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/cli-code/components/CliproxyapiToolCard.tsx"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-8ee16afa687f3e2d", "level": "error", "message": {"text": "Dangling fetch: POST /api/tools/agent-bridge/upstream-ca/test (src/app/(dashboard)/dashboard/tools/agent-bridge/components/UpstreamCaField.tsx:26)"}, "properties": {"repobilityId": "335c5ef2c86b2ad4", "scanner": "scanner-primary", "fingerprint": "8ee16afa687f3e2d", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/tools/agent-bridge/components/UpstreamCaField.tsx"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-3d52942ab162356d", "level": "error", "message": {"text": "Dangling fetch: POST /api/context/rtk/test (src/app/(dashboard)/dashboard/context/rtk/RtkContextPageClient.tsx:139)"}, "properties": {"repobilityId": "d12fda5fd3fbb0dd", "scanner": "scanner-primary", "fingerprint": "3d52942ab162356d", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/context/rtk/RtkContextPageClient.tsx"}, "region": {"startLine": 139}}}]}, {"ruleId": "scanner-efb3f5ced81a7d97", "level": "error", "message": {"text": "Dangling fetch: POST /api/webhooks/${wh.id}/test (src/app/(dashboard)/dashboard/webhooks/WebhooksPageClient.tsx:68)"}, "properties": {"repobilityId": "2f8dbdac94f424f6", "scanner": "scanner-primary", "fingerprint": "efb3f5ced81a7d97", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/webhooks/WebhooksPageClient.tsx"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-8d2605590bebff43", "level": "error", "message": {"text": "Dangling fetch: POST /api/webhooks/${webhookId}/test (src/app/(dashboard)/dashboard/webhooks/components/steps/Step3EventsAndTest.tsx:45)"}, "properties": {"repobilityId": "7a509f5feeda06d0", "scanner": "scanner-primary", "fingerprint": "8d2605590bebff43", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/webhooks/components/steps/Step3EventsAndTest.tsx"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-c6bc7bef118d5dbc", "level": "error", "message": {"text": "Dangling fetch: POST /api/combos/test (src/app/(dashboard)/dashboard/combos/page.tsx:880)"}, "properties": {"repobilityId": "1b696f0bc75c8f90", "scanner": "scanner-primary", "fingerprint": "c6bc7bef118d5dbc", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/combos/page.tsx"}, "region": {"startLine": 880}}}]}, {"ruleId": "scanner-343d69b6df08a782", "level": "error", "message": {"text": "Dangling fetch: POST /api/plugins/${name}/${endpoint} (src/app/(dashboard)/dashboard/plugins/page.tsx:109)"}, "properties": {"repobilityId": "69b3bf9f508f85d3", "scanner": "scanner-primary", "fingerprint": "343d69b6df08a782", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/(dashboard)/dashboard/plugins/page.tsx"}, "region": {"startLine": 109}}}]}, {"ruleId": "scanner-9c5129e65b0c2048", "level": "error", "message": {"text": "Dangling fetch: GET /vault/sync/status (src/lib/obsidian/api.ts:373)"}, "properties": {"repobilityId": "4b34401e2f8d2d0c", "scanner": "scanner-primary", "fingerprint": "9c5129e65b0c2048", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "helper:request"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/obsidian/api.ts"}, "region": {"startLine": 373}}}]}, {"ruleId": "scanner-cd67c4076e0e7341", "level": "error", "message": {"text": "Dangling fetch: POST /vault/sync/trigger (src/lib/obsidian/api.ts:376)"}, "properties": {"repobilityId": "bff5ab14bd79566c", "scanner": "scanner-primary", "fingerprint": "cd67c4076e0e7341", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "helper:request"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/obsidian/api.ts"}, "region": {"startLine": 376}}}]}, {"ruleId": "scanner-58c4ced2e7eb2e00", "level": "error", "message": {"text": "Dangling fetch: GET /vault/sync/conflicts (src/lib/obsidian/api.ts:379)"}, "properties": {"repobilityId": "5cebbbe4b747b173", "scanner": "scanner-primary", "fingerprint": "58c4ced2e7eb2e00", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "helper:request"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/obsidian/api.ts"}, "region": {"startLine": 379}}}]}, {"ruleId": "scanner-d7ab486ae7133cea", "level": "error", "message": {"text": "Dangling fetch: POST /vault/sync/resolve (src/lib/obsidian/api.ts:382)"}, "properties": {"repobilityId": "6c94a36fbdb92e4a", "scanner": "scanner-primary", "fingerprint": "d7ab486ae7133cea", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "helper:request"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/obsidian/api.ts"}, "region": {"startLine": 382}}}]}, {"ruleId": "scanner-4370507f5426b546", "level": "error", "message": {"text": "Dangling fetch: GET /api/data (src/lib/evals/evalRunner/builtinSuites.ts:578)"}, "properties": {"repobilityId": "ef9e256790f20b7f", "scanner": "scanner-primary", "fingerprint": "4370507f5426b546", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/evals/evalRunner/builtinSuites.ts"}, "region": {"startLine": 578}}}]}, {"ruleId": "scanner-8f316e247be2afb1", "level": "note", "message": {"text": "374 backend endpoints not called by scanned frontend"}, "properties": {"repobilityId": "3c8e96670c5e1f9f", "scanner": "scanner-primary", "fingerprint": "8f316e247be2afb1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}