{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-dec7ffe848240dbb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/client/src/react/index.tsx:125", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/client/src/react/index.tsx:125"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f1e36f3aed0bab4a", "name": "Stray `console.log` in TS/JS \u2014 packages/cli/src/cli.ts:158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/src/cli.ts:158"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-03667618b548c354", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/design/src/runtime/ssr.ts:21", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/design/src/runtime/ssr.ts:21"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-28f0313db4896e8b", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/design-schema/src/css-token-value.ts:5", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/design-schema/src/css-token-value.ts:5"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7eea750171f2329d", "name": "Stray `console.log` in TS/JS \u2014 apps/demo/scripts/seed.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/demo/scripts/seed.ts:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-778266362182acc6", "name": "Stray `console.log` in TS/JS \u2014 apps/demo/server/main.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/demo/server/main.ts:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e11d7dc9b0a7525", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/console/src/version-card.tsx:69", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/console/src/version-card.tsx:69"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5fda23eeadf92de0", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/console/src/token-diff.tsx:28", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/console/src/token-diff.tsx:28"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f0744015869bbaac", "name": "Stray `console.log` in TS/JS \u2014 apps/control-plane/scripts/live-design.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/control-plane/scripts/live-design.ts:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-96907fcb5498271e", "name": "Stray `console.log` in TS/JS \u2014 apps/control-plane/src/main.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/control-plane/src/main.ts:20"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3abbf854ad197f30", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/nebula/src/app/layout.tsx:70", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/nebula/src/app/layout.tsx:70"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f0548b2edb89b0b6", "name": "`truncate` class without `title=` for hover reveal \u2014 apps/nebula/src/components/sidebar.tsx:99", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/nebula/src/components/sidebar.tsx:99"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-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-93e02e0d67c8f3e8", "name": "Docker base image is tag-pinned but not digest-pinned: node:22-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-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-f2213169f928dfdf", "name": "Insecure pattern 'dangerous_innerhtml' in packages/client/src/react/index.tsx:125", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in packages/client/src/react/index.tsx:125"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dfc984000e66d311", "name": "Insecure pattern 'direct_innerhtml_assignment' in packages/client/src/core/sanitize.ts:46", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in packages/client/src/core/sanitize.ts:46"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-be020d278ef3c24c", "name": "Insecure pattern 'cors_wildcard' in apps/control-plane/src/app.ts:133", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in apps/control-plane/src/app.ts:133"}, "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-1ab316646638face", "name": "Insecure pattern 'dangerous_innerhtml' in apps/nebula/src/app/layout.tsx:70", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/nebula/src/app/layout.tsx:70"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fd1b2c9f1248bbb5", "name": "Very large file: apps/console/src/App.tsx (1517 lines)", "shortDescription": {"text": "Very large file: apps/console/src/App.tsx (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-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b739f2f2be1d714d", "name": "Node manifest has dependencies but no lockfile: packages/server/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/server/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eb655171f3945e18", "name": "Node manifest has dependencies but no lockfile: packages/schema/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/schema/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f1f0c52db7c97cef", "name": "Node manifest has dependencies but no lockfile: packages/client/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/client/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8c2e3196a4ef0cdd", "name": "Node manifest has dependencies but no lockfile: packages/cli/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/cli/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-19585f8988d617b4", "name": "Node manifest has dependencies but no lockfile: packages/design/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/design/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd8ea671a69f06f1", "name": "Node manifest has dependencies but no lockfile: packages/design-schema/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/design-schema/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c39ba7ebc985b6cb", "name": "Node manifest has dependencies but no lockfile: apps/demo/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/demo/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-819b1aac40086a97", "name": "Node manifest has dependencies but no lockfile: apps/console/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/console/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e8366934a29c2e03", "name": "Node manifest has dependencies but no lockfile: apps/control-plane/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/control-plane/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-58de60ebf859bb51", "name": "Node manifest has dependencies but no lockfile: apps/nebula/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/nebula/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 30 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 17 placeholder/mock markers across 11 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, 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-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-a3af7771e665baa6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/src/runtime.ts:120", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/src/runtime.ts:120"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bf46398c5eb8a179", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/test/runtime-no-store.test.ts:10", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/test/runtime-no-store.test.ts:10"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8648338833bb7925", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/test/middleware.test.ts:147", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/test/middleware.test.ts:147"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9033f5d9853bf68", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/client/src/core/loader.ts:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/client/src/core/loader.ts:33"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eca12e4f851c9bec", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/client/src/core/authoring.ts:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/client/src/core/authoring.ts:15"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-96cc84e82ee45e47", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/cli/src/llm.ts:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/cli/src/llm.ts:24"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-97202c5322407841", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/cli/src/cli.ts:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/cli/src/cli.ts:67"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e4db0d8d01dc7d52", "name": "Commented-code block (7 lines) in packages/cli/src/analysis/roles/cluster.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in packages/cli/src/analysis/roles/cluster.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1c8cd9dd7b1660a8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/cli/test/cli.test.ts:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/cli/test/cli.test.ts:43"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6eba9f7248065d01", "name": "Commented-code block (6 lines) in packages/design/src/server.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in packages/design/src/server.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e6ddfdb220ad7fb", "name": "Commented-code block (9 lines) in packages/design/src/headless.ts:3", "shortDescription": {"text": "Commented-code block (9 lines) in packages/design/src/headless.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-647db00bafca7f72", "name": "Commented-code block (5 lines) in packages/design/src/fonts/loader.ts:16", "shortDescription": {"text": "Commented-code block (5 lines) in packages/design/src/fonts/loader.ts:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6ea260408342a8cb", "name": "Commented-code block (6 lines) in packages/design/src/compiler/contrast.ts:32", "shortDescription": {"text": "Commented-code block (6 lines) in packages/design/src/compiler/contrast.ts:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7766f2ed640ea792", "name": "Commented-code block (5 lines) in packages/design/src/compiler/tokens.ts:41", "shortDescription": {"text": "Commented-code block (5 lines) in packages/design/src/compiler/tokens.ts:41"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3f6f6cbf971dad64", "name": "Commented-code block (5 lines) in packages/design/src/compiler/roles.ts:62", "shortDescription": {"text": "Commented-code block (5 lines) in packages/design/src/compiler/roles.ts:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fb5ab93b5db82234", "name": "Commented-code block (7 lines) in packages/design/src/compiler/compiler-values.test.ts:27", "shortDescription": {"text": "Commented-code block (7 lines) in packages/design/src/compiler/compiler-values.test.ts:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3cff153d09b527e", "name": "Commented-code block (7 lines) in packages/design/src/compiler/cluster.ts:6", "shortDescription": {"text": "Commented-code block (7 lines) in packages/design/src/compiler/cluster.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bef3c68afb152026", "name": "Commented-code block (6 lines) in packages/design/src/context/provider.tsx:128", "shortDescription": {"text": "Commented-code block (6 lines) in packages/design/src/context/provider.tsx:128"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d67428726b592154", "name": "Commented-code block (6 lines) in packages/design/src/context/use-current-page.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in packages/design/src/context/use-current-page.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-35e34cd37d0d763f", "name": "Commented-code block (6 lines) in packages/design/src/context/apply-reconcile.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in packages/design/src/context/apply-reconcile.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ea314ad683f11af5", "name": "Commented-code block (11 lines) in packages/design/src/agent/layout-profile.ts:4", "shortDescription": {"text": "Commented-code block (11 lines) in packages/design/src/agent/layout-profile.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b357872a8b48acaf", "name": "Commented-code block (10 lines) in packages/design/src/agent/designer-prompt.ts:28", "shortDescription": {"text": "Commented-code block (10 lines) in packages/design/src/agent/designer-prompt.ts:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c67225dcb057ade1", "name": "Commented-code block (5 lines) in packages/design/src/agent/apply-pack.ts:11", "shortDescription": {"text": "Commented-code block (5 lines) in packages/design/src/agent/apply-pack.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0f0d53f98d674c10", "name": "Commented-code block (5 lines) in packages/design/src/agent/pipeline-io.ts:37", "shortDescription": {"text": "Commented-code block (5 lines) in packages/design/src/agent/pipeline-io.ts:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3792d3552bcec99d", "name": "Commented-code block (5 lines) in packages/design/src/agent/wire-schemas.ts:35", "shortDescription": {"text": "Commented-code block (5 lines) in packages/design/src/agent/wire-schemas.ts:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f294360b0689bab4", "name": "Commented-code block (8 lines) in packages/design/src/agent/gatekeeper.ts:61", "shortDescription": {"text": "Commented-code block (8 lines) in packages/design/src/agent/gatekeeper.ts:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7281ce81ba5b8ca6", "name": "Commented-code block (16 lines) in packages/design/src/runtime/ssr.ts:18", "shortDescription": {"text": "Commented-code block (16 lines) in packages/design/src/runtime/ssr.ts:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a0a64134b3463ddd", "name": "Commented-code block (5 lines) in packages/design/src/runtime/resolve-overrides.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in packages/design/src/runtime/resolve-overrides.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-43a0bc0d0d711f9b", "name": "Commented-code block (9 lines) in packages/design/src/runtime/reconcile-theme.ts:19", "shortDescription": {"text": "Commented-code block (9 lines) in packages/design/src/runtime/reconcile-theme.ts:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-35a4041b0623c7d2", "name": "Commented-code block (6 lines) in packages/design/src/runtime/apply.ts:14", "shortDescription": {"text": "Commented-code block (6 lines) in packages/design/src/runtime/apply.ts:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a20808c820286e7e", "name": "Commented-code block (5 lines) in packages/design/src/verify/compiled-tests.test.ts:81", "shortDescription": {"text": "Commented-code block (5 lines) in packages/design/src/verify/compiled-tests.test.ts:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-883e942423b70650", "name": "Commented-code block (9 lines) in packages/design/src/verify/compiled-tests.ts:45", "shortDescription": {"text": "Commented-code block (9 lines) in packages/design/src/verify/compiled-tests.ts:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c5410e5ae189bf6b", "name": "Commented-code block (5 lines) in packages/design/src/panel/customization-overlay.tsx:266", "shortDescription": {"text": "Commented-code block (5 lines) in packages/design/src/panel/customization-overlay.tsx:266"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6928a0961e067f03", "name": "Commented-code block (5 lines) in packages/design/src/primitives/text.tsx:38", "shortDescription": {"text": "Commented-code block (5 lines) in packages/design/src/primitives/text.tsx:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b11591f3c999b829", "name": "Commented-code block (5 lines) in packages/design/src/primitives/slot-registration.test.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in packages/design/src/primitives/slot-registration.test.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-89e932fb7fc460e8", "name": "Commented-code block (7 lines) in packages/design/src/storage/cookie-mirror.ts:8", "shortDescription": {"text": "Commented-code block (7 lines) in packages/design/src/storage/cookie-mirror.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8caa473ae599e5e8", "name": "Commented-code block (6 lines) in packages/design/src/config/upgrade.ts:11", "shortDescription": {"text": "Commented-code block (6 lines) in packages/design/src/config/upgrade.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c688c3e6348184ef", "name": "Commented-code block (8 lines) in packages/design-schema/src/css-token-value.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in packages/design-schema/src/css-token-value.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fea672c4491f76f3", "name": "Commented-code block (5 lines) in packages/design-schema/src/theme.ts:130", "shortDescription": {"text": "Commented-code block (5 lines) in packages/design-schema/src/theme.ts:130"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a3e1baba61f6295d", "name": "Commented-code block (5 lines) in packages/design-schema/src/css-token-value.test.ts:37", "shortDescription": {"text": "Commented-code block (5 lines) in packages/design-schema/src/css-token-value.test.ts:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ede47269bbbf9147", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/scripts/seed.ts:7", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/scripts/seed.ts:7"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d300d8261a37ad7c", "name": "Commented-code block (5 lines) in apps/demo/scripts/visual-qa.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in apps/demo/scripts/visual-qa.mjs:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b7e774cba766e64d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/src/App.tsx:40", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/src/App.tsx:40"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-20671dd06e69e8a0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/test/phase4.e2e.test.ts:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/test/phase4.e2e.test.ts:100"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-88664948b46951fe", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/test/phase5.e2e.test.ts:60", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/test/phase5.e2e.test.ts:60"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa78baa37e17ad0f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/test/helpers.ts:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/test/helpers.ts:34"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f1162508f1d40f4c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/test/phase2.e2e.test.ts:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/test/phase2.e2e.test.ts:34"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-254d9d86b6b94467", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/test/guardrails-catalog.e2e.test.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/test/guardrails-catalog.e2e.test.ts:49"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d5c9ffff5d1ef685", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/console/src/api.ts:108", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/console/src/api.ts:108"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-77f442471b0f776e", "name": "Commented-code block (5 lines) in apps/console/src/style-summary.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in apps/console/src/style-summary.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5b315ccd790a9600", "name": "Commented-code block (5 lines) in apps/control-plane/scripts/live-design.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in apps/control-plane/scripts/live-design.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-70fa5a428330dd1c", "name": "Commented-code block (5 lines) in apps/control-plane/src/modules/authoring/pipeline.ts:115", "shortDescription": {"text": "Commented-code block (5 lines) in apps/control-plane/src/modules/authoring/pipeline.ts:115"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-826070f05bbabb9e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/src/modules/authoring/anthropic.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/src/modules/authoring/anthropic.ts:27"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-79776565580d5099", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/src/modules/authoring/openai-compat.ts:39", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/src/modules/authoring/openai-compat.ts:39"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6534e0d81fe0fb25", "name": "Commented-code block (6 lines) in apps/control-plane/src/modules/verification/index.ts:141", "shortDescription": {"text": "Commented-code block (6 lines) in apps/control-plane/src/modules/verification/index.ts:141"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-78b64573737b3338", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/test/events-route.test.ts:16", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/test/events-route.test.ts:16"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a5769c0520fe754a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/test/design-config-route.test.ts:7", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/test/design-config-route.test.ts:7"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-84e9ad84f2cda935", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/test/themes-route.test.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/test/themes-route.test.ts:13"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-827c3b3747c70a25", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/test/verification.test.ts:240", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/test/verification.test.ts:240"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bbb6b17ebf2e0b6a", "name": "Commented-code block (6 lines) in apps/nebula/next.config.js:24", "shortDescription": {"text": "Commented-code block (6 lines) in apps/nebula/next.config.js:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e79e5516f216f8ab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/nebula/scripts/seed.mjs:9", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/nebula/scripts/seed.mjs:9"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-73f90b2da0f49ca0", "name": "Commented-code block (7 lines) in apps/nebula/src/app/layout.tsx:34", "shortDescription": {"text": "Commented-code block (7 lines) in apps/nebula/src/app/layout.tsx:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0b44dd384e76565b", "name": "Commented-code block (6 lines) in apps/nebula/src/app/api/llm/v1/messages/route.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in apps/nebula/src/app/api/llm/v1/messages/route.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d72ee7c729e5099c", "name": "Commented-code block (6 lines) in apps/nebula/src/app/api/llm/chat/completions/route.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in apps/nebula/src/app/api/llm/chat/completions/route.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-63a0338ed081620d", "name": "Commented-code block (5 lines) in apps/nebula/src/app/showcase/page.tsx:16", "shortDescription": {"text": "Commented-code block (5 lines) in apps/nebula/src/app/showcase/page.tsx:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-584deed17bae1876", "name": "Commented-code block (6 lines) in apps/nebula/src/app/gauntlet/page.tsx:253", "shortDescription": {"text": "Commented-code block (6 lines) in apps/nebula/src/app/gauntlet/page.tsx:253"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8919014de3082437", "name": "Commented-code block (7 lines) in apps/nebula/src/components/mini-nebula.tsx:5", "shortDescription": {"text": "Commented-code block (7 lines) in apps/nebula/src/components/mini-nebula.tsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0a13633fb778c546", "name": "Commented-code block (5 lines) in apps/nebula/src/components/shell.tsx:11", "shortDescription": {"text": "Commented-code block (5 lines) in apps/nebula/src/components/shell.tsx:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3564e33663d450a8", "name": "Commented-code block (6 lines) in apps/nebula/src/components/search-overlay.tsx:36", "shortDescription": {"text": "Commented-code block (6 lines) in apps/nebula/src/components/search-overlay.tsx:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cf295e51dcc6be33", "name": "Commented-code block (5 lines) in apps/nebula/src/components/home-screen.tsx:55", "shortDescription": {"text": "Commented-code block (5 lines) in apps/nebula/src/components/home-screen.tsx:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-50d8d2513fd59b28", "name": "Commented-code block (5 lines) in apps/nebula/src/components/title-detail-modal.tsx:85", "shortDescription": {"text": "Commented-code block (5 lines) in apps/nebula/src/components/title-detail-modal.tsx:85"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8ccbe54078df135b", "name": "Commented-code block (9 lines) in apps/nebula/src/lib/invariance-config.ts:54", "shortDescription": {"text": "Commented-code block (9 lines) in apps/nebula/src/lib/invariance-config.ts:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-349e2b497e4640a7", "name": "Commented-code block (5 lines) in apps/nebula/src/lib/dev-config.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in apps/nebula/src/lib/dev-config.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-63e90e936292ba2a", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (packages/cli/src/llm.ts:49)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (packages/cli/src/llm.ts:49)"}, "fullDescription": {"text": "`packages/cli/src/llm.ts:49` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fceb93739f94602a", "name": "Dangling fetch: GET /demo-api${path} (apps/console/src/api.ts:172)", "shortDescription": {"text": "Dangling fetch: GET /demo-api${path} (apps/console/src/api.ts:172)"}, "fullDescription": {"text": "`apps/console/src/api.ts:172` calls `GET /demo-api${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/demo-api/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cbc9b2b42ffb9415", "name": "Dangling fetch: POST /v1/apps/demo/manifest (apps/control-plane/scripts/live-design.ts:32)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/demo/manifest (apps/control-plane/scripts/live-design.ts:32)"}, "fullDescription": {"text": "`apps/control-plane/scripts/live-design.ts:32` calls `POST /v1/apps/demo/manifest` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/demo/manifest`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c75752f2b5ac973f", "name": "Dangling fetch: POST /v1/apps/demo/subjects/u1/prompts (apps/control-plane/scripts/live-design.ts:42)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/demo/subjects/u1/prompts (apps/control-plane/scripts/live-design.ts:42)"}, "fullDescription": {"text": "`apps/control-plane/scripts/live-design.ts:42` calls `POST /v1/apps/demo/subjects/u1/prompts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/demo/subjects/u1/prompts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-958c9a49e58f9356", "name": "Dangling fetch: GET /v1/apps/demo/subjects/u1/pointer (apps/control-plane/scripts/live-design.ts:71)", "shortDescription": {"text": "Dangling fetch: GET /v1/apps/demo/subjects/u1/pointer (apps/control-plane/scripts/live-design.ts:71)"}, "fullDescription": {"text": "`apps/control-plane/scripts/live-design.ts:71` calls `GET /v1/apps/demo/subjects/u1/pointer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/demo/subjects/u1/pointer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fd20203588226a6f", "name": "Dangling fetch: POST /v1/apps/app1/manifest (apps/control-plane/test/analytics.test.ts:51)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/manifest (apps/control-plane/test/analytics.test.ts:51)"}, "fullDescription": {"text": "`apps/control-plane/test/analytics.test.ts:51` calls `POST /v1/apps/app1/manifest` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/manifest`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-65cc996e850c7a26", "name": "Dangling fetch: POST /v1/apps/app1/subjects/u1/bundles (apps/control-plane/test/analytics.test.ts:56)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/subjects/u1/bundles (apps/control-plane/test/analytics.test.ts:56)"}, "fullDescription": {"text": "`apps/control-plane/test/analytics.test.ts:56` calls `POST /v1/apps/app1/subjects/u1/bundles` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/subjects/u1/bundles`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2079ec5c0589fa49", "name": "Dangling fetch: POST /v1/apps/app1/events (apps/control-plane/test/analytics.test.ts:67)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/events (apps/control-plane/test/analytics.test.ts:67)"}, "fullDescription": {"text": "`apps/control-plane/test/analytics.test.ts:67` calls `POST /v1/apps/app1/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1dd34eef15270234", "name": "Dangling fetch: POST /v1/apps/app1/events (apps/control-plane/test/analytics.test.ts:73)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/events (apps/control-plane/test/analytics.test.ts:73)"}, "fullDescription": {"text": "`apps/control-plane/test/analytics.test.ts:73` calls `POST /v1/apps/app1/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5c74f6075fc4a342", "name": "Dangling fetch: GET /v1/apps/app1/analytics/summary (apps/control-plane/test/analytics.test.ts:79)", "shortDescription": {"text": "Dangling fetch: GET /v1/apps/app1/analytics/summary (apps/control-plane/test/analytics.test.ts:79)"}, "fullDescription": {"text": "`apps/control-plane/test/analytics.test.ts:79` calls `GET /v1/apps/app1/analytics/summary` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/analytics/summary`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-851a4b9d535f080e", "name": "Dangling fetch: GET /v1/apps/app1/analytics/summary (apps/control-plane/test/analytics.test.ts:87)", "shortDescription": {"text": "Dangling fetch: GET /v1/apps/app1/analytics/summary (apps/control-plane/test/analytics.test.ts:87)"}, "fullDescription": {"text": "`apps/control-plane/test/analytics.test.ts:87` calls `GET /v1/apps/app1/analytics/summary` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/analytics/summary`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-94c69d0dc5a5bf47", "name": "Dangling fetch: GET /v1/apps/app1/mods (apps/control-plane/test/analytics.test.ts:97)", "shortDescription": {"text": "Dangling fetch: GET /v1/apps/app1/mods (apps/control-plane/test/analytics.test.ts:97)"}, "fullDescription": {"text": "`apps/control-plane/test/analytics.test.ts:97` calls `GET /v1/apps/app1/mods` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/mods`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f77665feaa375f36", "name": "Dangling fetch: GET /v1/apps/app1/subjects/u1/pointer (apps/control-plane/test/analytics.test.ts:109)", "shortDescription": {"text": "Dangling fetch: GET /v1/apps/app1/subjects/u1/pointer (apps/control-plane/test/analytics.test.ts:109)"}, "fullDescription": {"text": "`apps/control-plane/test/analytics.test.ts:109` calls `GET /v1/apps/app1/subjects/u1/pointer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/subjects/u1/pointer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6d3abb8f11ea862d", "name": "Dangling fetch: POST /v1/apps/app1/mods/${modId}/kill (apps/control-plane/test/analytics.test.ts:114)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/mods/${modId}/kill (apps/control-plane/test/analytics.test.ts:114)"}, "fullDescription": {"text": "`apps/control-plane/test/analytics.test.ts:114` calls `POST /v1/apps/app1/mods/${modId}/kill` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/mods/<p>/kill`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3bdce8c6b1acf35d", "name": "Dangling fetch: POST /v1/apps/app1/mods/${modId}/restore (apps/control-plane/test/analytics.test.ts:118)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/mods/${modId}/restore (apps/control-plane/test/analytics.test.ts:118)"}, "fullDescription": {"text": "`apps/control-plane/test/analytics.test.ts:118` calls `POST /v1/apps/app1/mods/${modId}/restore` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/mods/<p>/restore`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dfc4ae896bb37e49", "name": "Dangling fetch: POST /v1/apps/app1/subjects/u1/bundles (apps/control-plane/test/analytics.test.ts:130)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/subjects/u1/bundles (apps/control-plane/test/analytics.test.ts:130)"}, "fullDescription": {"text": "`apps/control-plane/test/analytics.test.ts:130` calls `POST /v1/apps/app1/subjects/u1/bundles` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/subjects/u1/bundles`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a9282b0bc8786604", "name": "Dangling fetch: POST /v1/apps/app1/mods/${modId}/kill (apps/control-plane/test/analytics.test.ts:135)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/mods/${modId}/kill (apps/control-plane/test/analytics.test.ts:135)"}, "fullDescription": {"text": "`apps/control-plane/test/analytics.test.ts:135` calls `POST /v1/apps/app1/mods/${modId}/kill` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/mods/<p>/kill`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-90a6a3633f81e715", "name": "Dangling fetch: POST /v1/apps/app1/subjects/u1/bundles (apps/control-plane/test/analytics.test.ts:141)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/subjects/u1/bundles (apps/control-plane/test/analytics.test.ts:141)"}, "fullDescription": {"text": "`apps/control-plane/test/analytics.test.ts:141` calls `POST /v1/apps/app1/subjects/u1/bundles` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/subjects/u1/bundles`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-28c3dbcdea88825e", "name": "Dangling fetch: POST /v1/apps/app1/events (apps/control-plane/test/analytics.test.ts:146)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/events (apps/control-plane/test/analytics.test.ts:146)"}, "fullDescription": {"text": "`apps/control-plane/test/analytics.test.ts:146` calls `POST /v1/apps/app1/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bd32e0e6a1e20baa", "name": "Dangling fetch: POST /v1/apps/app1/events (apps/control-plane/test/analytics.test.ts:150)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/events (apps/control-plane/test/analytics.test.ts:150)"}, "fullDescription": {"text": "`apps/control-plane/test/analytics.test.ts:150` calls `POST /v1/apps/app1/events` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/events`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4c437e8278e66d32", "name": "Dangling fetch: GET /v1/apps/app1/subjects/u1/overview (apps/control-plane/test/analytics.test.ts:155)", "shortDescription": {"text": "Dangling fetch: GET /v1/apps/app1/subjects/u1/overview (apps/control-plane/test/analytics.test.ts:155)"}, "fullDescription": {"text": "`apps/control-plane/test/analytics.test.ts:155` calls `GET /v1/apps/app1/subjects/u1/overview` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/subjects/u1/overview`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-205db63146c8ee74", "name": "Dangling fetch: POST /v1/apps/app1/mods/${modId}/restore (apps/control-plane/test/analytics.test.ts:179)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/mods/${modId}/restore (apps/control-plane/test/analytics.test.ts:179)"}, "fullDescription": {"text": "`apps/control-plane/test/analytics.test.ts:179` calls `POST /v1/apps/app1/mods/${modId}/restore` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/mods/<p>/restore`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cd08a35ec35d21ed", "name": "Dangling fetch: POST /v1/apps/app1/manifest (apps/control-plane/test/authoring.test.ts:180)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/manifest (apps/control-plane/test/authoring.test.ts:180)"}, "fullDescription": {"text": "`apps/control-plane/test/authoring.test.ts:180` calls `POST /v1/apps/app1/manifest` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/manifest`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3e4b8f03219e996e", "name": "Dangling fetch: POST /v1/apps/app1/subjects/u1/prompts (apps/control-plane/test/authoring.test.ts:185)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/subjects/u1/prompts (apps/control-plane/test/authoring.test.ts:185)"}, "fullDescription": {"text": "`apps/control-plane/test/authoring.test.ts:185` calls `POST /v1/apps/app1/subjects/u1/prompts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/subjects/u1/prompts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9f4c32c7a9d32547", "name": "Dangling fetch: GET /v1/apps/app1/subjects/u1/pointer (apps/control-plane/test/authoring.test.ts:192)", "shortDescription": {"text": "Dangling fetch: GET /v1/apps/app1/subjects/u1/pointer (apps/control-plane/test/authoring.test.ts:192)"}, "fullDescription": {"text": "`apps/control-plane/test/authoring.test.ts:192` calls `GET /v1/apps/app1/subjects/u1/pointer` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/subjects/u1/pointer`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6ee4637fe676fb11", "name": "Dangling fetch: POST /v1/apps/app1/manifest (apps/control-plane/test/authoring.test.ts:199)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/manifest (apps/control-plane/test/authoring.test.ts:199)"}, "fullDescription": {"text": "`apps/control-plane/test/authoring.test.ts:199` calls `POST /v1/apps/app1/manifest` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/manifest`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5c88d2771ea6fcc9", "name": "Dangling fetch: POST /v1/apps/app1/subjects/u1/prompts (apps/control-plane/test/authoring.test.ts:204)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/subjects/u1/prompts (apps/control-plane/test/authoring.test.ts:204)"}, "fullDescription": {"text": "`apps/control-plane/test/authoring.test.ts:204` calls `POST /v1/apps/app1/subjects/u1/prompts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/subjects/u1/prompts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0f49b1431d4b8582", "name": "Dangling fetch: POST /v1/apps/app1/subjects/u1/prompts (apps/control-plane/test/authoring.test.ts:219)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/subjects/u1/prompts (apps/control-plane/test/authoring.test.ts:219)"}, "fullDescription": {"text": "`apps/control-plane/test/authoring.test.ts:219` calls `POST /v1/apps/app1/subjects/u1/prompts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/subjects/u1/prompts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7cc7d33cbe0b724a", "name": "Dangling fetch: GET https://x (apps/control-plane/test/verification.test.ts:240)", "shortDescription": {"text": "Dangling fetch: GET https://x (apps/control-plane/test/verification.test.ts:240)"}, "fullDescription": {"text": "`apps/control-plane/test/verification.test.ts:240` calls `GET https://x` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/x`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f81f91014243de20", "name": "Dangling fetch: POST /v1/apps/app1/manifest (apps/control-plane/test/design-authoring.test.ts:26)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/manifest (apps/control-plane/test/design-authoring.test.ts:26)"}, "fullDescription": {"text": "`apps/control-plane/test/design-authoring.test.ts:26` calls `POST /v1/apps/app1/manifest` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/manifest`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6dfedccd7f534050", "name": "Dangling fetch: POST /v1/apps/app1/subjects/u1/prompts (apps/control-plane/test/design-authoring.test.ts:45)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/subjects/u1/prompts (apps/control-plane/test/design-authoring.test.ts:45)"}, "fullDescription": {"text": "`apps/control-plane/test/design-authoring.test.ts:45` calls `POST /v1/apps/app1/subjects/u1/prompts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/subjects/u1/prompts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b38561fa00dccfdb", "name": "Dangling fetch: POST /v1/apps/app1/subjects/u1/prompts (apps/control-plane/test/design-authoring.test.ts:80)", "shortDescription": {"text": "Dangling fetch: POST /v1/apps/app1/subjects/u1/prompts (apps/control-plane/test/design-authoring.test.ts:80)"}, "fullDescription": {"text": "`apps/control-plane/test/design-authoring.test.ts:80` calls `POST /v1/apps/app1/subjects/u1/prompts` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/apps/app1/subjects/u1/prompts`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-edaa5c58927faf6b", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (apps/nebula/src/app/api/llm/v1/messages/route.ts:44)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (apps/nebula/src/app/api/llm/v1/messages/route.ts:44)"}, "fullDescription": {"text": "`apps/nebula/src/app/api/llm/v1/messages/route.ts:44` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2854527661373b4a", "name": "Unused endpoint: GET /v1/apps/:appId/signing-key", "shortDescription": {"text": "Unused endpoint: GET /v1/apps/:appId/signing-key"}, "fullDescription": {"text": "`apps/control-plane/src/app.ts` declares `GET /v1/apps/:appId/signing-key` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6fa90ff58dd7fcca", "name": "Unused endpoint: POST /v1/apps/:appId/manifest", "shortDescription": {"text": "Unused endpoint: POST /v1/apps/:appId/manifest"}, "fullDescription": {"text": "`apps/control-plane/src/app.ts` declares `POST /v1/apps/:appId/manifest` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e7740d4d0cdc574", "name": "Unused endpoint: GET /v1/apps/:appId/manifest", "shortDescription": {"text": "Unused endpoint: GET /v1/apps/:appId/manifest"}, "fullDescription": {"text": "`apps/control-plane/src/app.ts` declares `GET /v1/apps/:appId/manifest` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c9598b69e006489d", "name": "Unused endpoint: POST /v1/apps/:appId/subjects/:subjectId/prompts", "shortDescription": {"text": "Unused endpoint: POST /v1/apps/:appId/subjects/:subjectId/prompts"}, "fullDescription": {"text": "`apps/control-plane/src/app.ts` declares `POST /v1/apps/:appId/subjects/:subjectId/prompts` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0c7eb9d0319e9d46", "name": "Unused endpoint: GET /v1/apps/:appId/subjects/:subjectId/pointer", "shortDescription": {"text": "Unused endpoint: GET /v1/apps/:appId/subjects/:subjectId/pointer"}, "fullDescription": {"text": "`apps/control-plane/src/app.ts` declares `GET /v1/apps/:appId/subjects/:subjectId/pointer` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b4d9a53456f5b41a", "name": "Unused endpoint: POST /v1/apps/:appId/subjects/:subjectId/revalidate", "shortDescription": {"text": "Unused endpoint: POST /v1/apps/:appId/subjects/:subjectId/revalidate"}, "fullDescription": {"text": "`apps/control-plane/src/app.ts` declares `POST /v1/apps/:appId/subjects/:subjectId/revalidate` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-69092c7eddc7b933", "name": "Unused endpoint: POST /v1/apps/:appId/subjects/:subjectId/refix", "shortDescription": {"text": "Unused endpoint: POST /v1/apps/:appId/subjects/:subjectId/refix"}, "fullDescription": {"text": "`apps/control-plane/src/app.ts` declares `POST /v1/apps/:appId/subjects/:subjectId/refix` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec7e5395601b246e", "name": "Unused endpoint: POST /v1/apps/:appId/events", "shortDescription": {"text": "Unused endpoint: POST /v1/apps/:appId/events"}, "fullDescription": {"text": "`apps/control-plane/src/app.ts` declares `POST /v1/apps/:appId/events` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-905ce38611e0f898", "name": "Unused endpoint: GET /v1/apps/:appId/analytics/summary", "shortDescription": {"text": "Unused endpoint: GET /v1/apps/:appId/analytics/summary"}, "fullDescription": {"text": "`apps/control-plane/src/app.ts` declares `GET /v1/apps/:appId/analytics/summary` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4d10b8dfc117b14f", "name": "Unused endpoint: GET /v1/apps/:appId/events", "shortDescription": {"text": "Unused endpoint: GET /v1/apps/:appId/events"}, "fullDescription": {"text": "`apps/control-plane/src/app.ts` declares `GET /v1/apps/:appId/events` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a3c0e90ccaa4be91", "name": "Unused endpoint: GET /v1/apps/:appId/design-config", "shortDescription": {"text": "Unused endpoint: GET /v1/apps/:appId/design-config"}, "fullDescription": {"text": "`apps/control-plane/src/app.ts` declares `GET /v1/apps/:appId/design-config` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-85443d443d31ecc1", "name": "Unused endpoint: GET /v1/apps/:appId/themes", "shortDescription": {"text": "Unused endpoint: GET /v1/apps/:appId/themes"}, "fullDescription": {"text": "`apps/control-plane/src/app.ts` declares `GET /v1/apps/:appId/themes` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aaf848d5cb3c2a3a", "name": "Unused endpoint: PUT /v1/apps/:appId/themes", "shortDescription": {"text": "Unused endpoint: PUT /v1/apps/:appId/themes"}, "fullDescription": {"text": "`apps/control-plane/src/app.ts` declares `PUT /v1/apps/:appId/themes` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ccf67dfef9c2880", "name": "Unused endpoint: GET /v1/apps/:appId/themes/history", "shortDescription": {"text": "Unused endpoint: GET /v1/apps/:appId/themes/history"}, "fullDescription": {"text": "`apps/control-plane/src/app.ts` declares `GET /v1/apps/:appId/themes/history` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f7bc59d0ac2de3a7", "name": "Unused endpoint: GET /v1/apps/:appId/mods", "shortDescription": {"text": "Unused endpoint: GET /v1/apps/:appId/mods"}, "fullDescription": {"text": "`apps/control-plane/src/app.ts` declares `GET /v1/apps/:appId/mods` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea12292e41a71c1d", "name": "Unused endpoint: GET /v1/apps/:appId/subjects/:subjectId/overview", "shortDescription": {"text": "Unused endpoint: GET /v1/apps/:appId/subjects/:subjectId/overview"}, "fullDescription": {"text": "`apps/control-plane/src/app.ts` declares `GET /v1/apps/:appId/subjects/:subjectId/overview` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b1ad6b0e8e5ca0a2", "name": "Unused endpoint: GET /v1/apps/:appId/bundles/:hash", "shortDescription": {"text": "Unused endpoint: GET /v1/apps/:appId/bundles/:hash"}, "fullDescription": {"text": "`apps/control-plane/src/app.ts` declares `GET /v1/apps/:appId/bundles/:hash` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/24249"}, "properties": {"repository": "anuraagkolli/invariance", "repoUrl": "https://github.com/anuraagkolli/invariance", "branch": "main"}, "results": [{"ruleId": "scanner-dec7ffe848240dbb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/client/src/react/index.tsx:125"}, "properties": {"repobilityId": "88938353321ada03", "scanner": "scanner-primary", "fingerprint": "dec7ffe848240dbb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f1e36f3aed0bab4a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/cli/src/cli.ts:158"}, "properties": {"repobilityId": "98b6d593cdd54b5c", "scanner": "scanner-primary", "fingerprint": "f1e36f3aed0bab4a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03667618b548c354", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/design/src/runtime/ssr.ts:21"}, "properties": {"repobilityId": "6c12d3f9bd753dee", "scanner": "scanner-primary", "fingerprint": "03667618b548c354", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-28f0313db4896e8b", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 packages/design-schema/src/css-token-value.ts:5"}, "properties": {"repobilityId": "21a7b2ad14b48a7a", "scanner": "scanner-primary", "fingerprint": "28f0313db4896e8b", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7eea750171f2329d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/demo/scripts/seed.ts:12"}, "properties": {"repobilityId": "73a8e5ef8e73cc18", "scanner": "scanner-primary", "fingerprint": "7eea750171f2329d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-778266362182acc6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/demo/server/main.ts:15"}, "properties": {"repobilityId": "4296a028ef92b376", "scanner": "scanner-primary", "fingerprint": "778266362182acc6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7e11d7dc9b0a7525", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/console/src/version-card.tsx:69"}, "properties": {"repobilityId": "5aff214cc45ad88e", "scanner": "scanner-primary", "fingerprint": "7e11d7dc9b0a7525", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5fda23eeadf92de0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/console/src/token-diff.tsx:28"}, "properties": {"repobilityId": "63545f82dbfb4193", "scanner": "scanner-primary", "fingerprint": "5fda23eeadf92de0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f0744015869bbaac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/control-plane/scripts/live-design.ts:38"}, "properties": {"repobilityId": "dc15039c32bedf8a", "scanner": "scanner-primary", "fingerprint": "f0744015869bbaac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-96907fcb5498271e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/control-plane/src/main.ts:20"}, "properties": {"repobilityId": "629e6c73945e9711", "scanner": "scanner-primary", "fingerprint": "96907fcb5498271e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3abbf854ad197f30", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 apps/nebula/src/app/layout.tsx:70"}, "properties": {"repobilityId": "8c7868d3cee0d049", "scanner": "scanner-primary", "fingerprint": "3abbf854ad197f30", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f0548b2edb89b0b6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 apps/nebula/src/components/sidebar.tsx:99"}, "properties": {"repobilityId": "a830abd7fc0af685", "scanner": "scanner-primary", "fingerprint": "f0548b2edb89b0b6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"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-93e02e0d67c8f3e8", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-slim"}, "properties": {"repobilityId": "e97acde4cbef8070", "scanner": "scanner-primary", "fingerprint": "93e02e0d67c8f3e8", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-f2213169f928dfdf", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in packages/client/src/react/index.tsx:125"}, "properties": {"repobilityId": "b1ef8d94db02c28e", "scanner": "scanner-primary", "fingerprint": "f2213169f928dfdf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/client/src/react/index.tsx"}, "region": {"startLine": 125}}}]}, {"ruleId": "scanner-dfc984000e66d311", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in packages/client/src/core/sanitize.ts:46"}, "properties": {"repobilityId": "1d860de304c63b5a", "scanner": "scanner-primary", "fingerprint": "dfc984000e66d311", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/client/src/core/sanitize.ts"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-be020d278ef3c24c", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in apps/control-plane/src/app.ts:133"}, "properties": {"repobilityId": "00645ea330268f23", "scanner": "scanner-primary", "fingerprint": "be020d278ef3c24c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/control-plane/src/app.ts"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-1ab316646638face", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in apps/nebula/src/app/layout.tsx:70"}, "properties": {"repobilityId": "18d2853335b012cb", "scanner": "scanner-primary", "fingerprint": "1ab316646638face", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/nebula/src/app/layout.tsx"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-fd1b2c9f1248bbb5", "level": "note", "message": {"text": "Very large file: apps/console/src/App.tsx (1517 lines)"}, "properties": {"repobilityId": "6e5556f8a217c9f5", "scanner": "scanner-primary", "fingerprint": "fd1b2c9f1248bbb5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "8fb0351827f19aeb", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-b739f2f2be1d714d", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/server/package.json"}, "properties": {"repobilityId": "d7cb4fafc3b292b2", "scanner": "scanner-primary", "fingerprint": "b739f2f2be1d714d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/server/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eb655171f3945e18", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/schema/package.json"}, "properties": {"repobilityId": "2b25ff15a1f8b683", "scanner": "scanner-primary", "fingerprint": "eb655171f3945e18", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/schema/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f1f0c52db7c97cef", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/client/package.json"}, "properties": {"repobilityId": "708197ec3b624f59", "scanner": "scanner-primary", "fingerprint": "f1f0c52db7c97cef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/client/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8c2e3196a4ef0cdd", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/cli/package.json"}, "properties": {"repobilityId": "2faf23490612d7a6", "scanner": "scanner-primary", "fingerprint": "8c2e3196a4ef0cdd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/cli/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-19585f8988d617b4", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/design/package.json"}, "properties": {"repobilityId": "baf9d3272bf16d0c", "scanner": "scanner-primary", "fingerprint": "19585f8988d617b4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/design/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bd8ea671a69f06f1", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/design-schema/package.json"}, "properties": {"repobilityId": "f7f116c038960406", "scanner": "scanner-primary", "fingerprint": "bd8ea671a69f06f1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/design-schema/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c39ba7ebc985b6cb", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/demo/package.json"}, "properties": {"repobilityId": "a97db61cc729fb7e", "scanner": "scanner-primary", "fingerprint": "c39ba7ebc985b6cb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/demo/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-819b1aac40086a97", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/console/package.json"}, "properties": {"repobilityId": "305f86f72288632f", "scanner": "scanner-primary", "fingerprint": "819b1aac40086a97", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/console/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e8366934a29c2e03", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/control-plane/package.json"}, "properties": {"repobilityId": "e8e900b5f9ec2a82", "scanner": "scanner-primary", "fingerprint": "e8366934a29c2e03", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/control-plane/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-58de60ebf859bb51", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/nebula/package.json"}, "properties": {"repobilityId": "0190a1b23595680d", "scanner": "scanner-primary", "fingerprint": "58de60ebf859bb51", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/nebula/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "f2f41ae43696265b", "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": "e08fe2fdfd1c06c2", "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": "1142efc296a35655", "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": "9a234a5859c1f211", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "f1c74a06b413630c", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "80c3d38d201fba1d", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-bea357a6497a2d5d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: CLAUDE.md"}, "properties": {"repobilityId": "aae72df3934829ac", "scanner": "scanner-primary", "fingerprint": "bea357a6497a2d5d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a3af7771e665baa6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/src/runtime.ts:120"}, "properties": {"repobilityId": "331bcc6dadca4307", "scanner": "scanner-primary", "fingerprint": "a3af7771e665baa6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bf46398c5eb8a179", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/test/runtime-no-store.test.ts:10"}, "properties": {"repobilityId": "07d52b2626e95aa2", "scanner": "scanner-primary", "fingerprint": "bf46398c5eb8a179", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8648338833bb7925", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/server/test/middleware.test.ts:147"}, "properties": {"repobilityId": "980972aad70fb50f", "scanner": "scanner-primary", "fingerprint": "8648338833bb7925", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b9033f5d9853bf68", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/client/src/core/loader.ts:33"}, "properties": {"repobilityId": "67e1fb3f2e19715c", "scanner": "scanner-primary", "fingerprint": "b9033f5d9853bf68", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eca12e4f851c9bec", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/client/src/core/authoring.ts:15"}, "properties": {"repobilityId": "ad6cea3aae54a8f7", "scanner": "scanner-primary", "fingerprint": "eca12e4f851c9bec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-96cc84e82ee45e47", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/cli/src/llm.ts:24"}, "properties": {"repobilityId": "fd0b39f2f1a21e31", "scanner": "scanner-primary", "fingerprint": "96cc84e82ee45e47", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-97202c5322407841", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/cli/src/cli.ts:67"}, "properties": {"repobilityId": "b6c128086eefdaba", "scanner": "scanner-primary", "fingerprint": "97202c5322407841", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e4db0d8d01dc7d52", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/cli/src/analysis/roles/cluster.ts:1"}, "properties": {"repobilityId": "43aa1415c5e64cf6", "scanner": "scanner-primary", "fingerprint": "e4db0d8d01dc7d52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c8cd9dd7b1660a8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/cli/test/cli.test.ts:43"}, "properties": {"repobilityId": "1a01a7a632bd88e4", "scanner": "scanner-primary", "fingerprint": "1c8cd9dd7b1660a8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6eba9f7248065d01", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/design/src/server.ts:1"}, "properties": {"repobilityId": "fdb6b910a982d7db", "scanner": "scanner-primary", "fingerprint": "6eba9f7248065d01", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e6ddfdb220ad7fb", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/design/src/headless.ts:3"}, "properties": {"repobilityId": "e742950bd8441060", "scanner": "scanner-primary", "fingerprint": "1e6ddfdb220ad7fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-647db00bafca7f72", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/design/src/fonts/loader.ts:16"}, "properties": {"repobilityId": "4157ca7828f3afb7", "scanner": "scanner-primary", "fingerprint": "647db00bafca7f72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6ea260408342a8cb", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/design/src/compiler/contrast.ts:32"}, "properties": {"repobilityId": "bd2345119e936c81", "scanner": "scanner-primary", "fingerprint": "6ea260408342a8cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7766f2ed640ea792", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/design/src/compiler/tokens.ts:41"}, "properties": {"repobilityId": "7f3ba7c30cb5f322", "scanner": "scanner-primary", "fingerprint": "7766f2ed640ea792", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f6f6cbf971dad64", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/design/src/compiler/roles.ts:62"}, "properties": {"repobilityId": "6f4ee67b259c2425", "scanner": "scanner-primary", "fingerprint": "3f6f6cbf971dad64", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb5ab93b5db82234", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/design/src/compiler/compiler-values.test.ts:27"}, "properties": {"repobilityId": "0952759db38c63d7", "scanner": "scanner-primary", "fingerprint": "fb5ab93b5db82234", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3cff153d09b527e", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/design/src/compiler/cluster.ts:6"}, "properties": {"repobilityId": "07ad7770a62c42a8", "scanner": "scanner-primary", "fingerprint": "e3cff153d09b527e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bef3c68afb152026", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/design/src/context/provider.tsx:128"}, "properties": {"repobilityId": "8b97ea0b11f2b81f", "scanner": "scanner-primary", "fingerprint": "bef3c68afb152026", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d67428726b592154", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/design/src/context/use-current-page.ts:5"}, "properties": {"repobilityId": "a3f7561fd5c2860d", "scanner": "scanner-primary", "fingerprint": "d67428726b592154", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35e34cd37d0d763f", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/design/src/context/apply-reconcile.ts:6"}, "properties": {"repobilityId": "8bb4e1d79441b40b", "scanner": "scanner-primary", "fingerprint": "35e34cd37d0d763f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea314ad683f11af5", "level": "none", "message": {"text": "Commented-code block (11 lines) in packages/design/src/agent/layout-profile.ts:4"}, "properties": {"repobilityId": "920f37759423a96d", "scanner": "scanner-primary", "fingerprint": "ea314ad683f11af5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b357872a8b48acaf", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/design/src/agent/designer-prompt.ts:28"}, "properties": {"repobilityId": "46ab2d88a8a2beb6", "scanner": "scanner-primary", "fingerprint": "b357872a8b48acaf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c67225dcb057ade1", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/design/src/agent/apply-pack.ts:11"}, "properties": {"repobilityId": "981688b33a215dba", "scanner": "scanner-primary", "fingerprint": "c67225dcb057ade1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f0d53f98d674c10", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/design/src/agent/pipeline-io.ts:37"}, "properties": {"repobilityId": "75cd7df214f0858e", "scanner": "scanner-primary", "fingerprint": "0f0d53f98d674c10", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3792d3552bcec99d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/design/src/agent/wire-schemas.ts:35"}, "properties": {"repobilityId": "7d321175b30f91ef", "scanner": "scanner-primary", "fingerprint": "3792d3552bcec99d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f294360b0689bab4", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/design/src/agent/gatekeeper.ts:61"}, "properties": {"repobilityId": "936eb8c2a2886759", "scanner": "scanner-primary", "fingerprint": "f294360b0689bab4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7281ce81ba5b8ca6", "level": "none", "message": {"text": "Commented-code block (16 lines) in packages/design/src/runtime/ssr.ts:18"}, "properties": {"repobilityId": "bd0ecca67f30d9c9", "scanner": "scanner-primary", "fingerprint": "7281ce81ba5b8ca6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a0a64134b3463ddd", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/design/src/runtime/resolve-overrides.ts:4"}, "properties": {"repobilityId": "26c48fda96601527", "scanner": "scanner-primary", "fingerprint": "a0a64134b3463ddd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43a0bc0d0d711f9b", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/design/src/runtime/reconcile-theme.ts:19"}, "properties": {"repobilityId": "bb8caa7038c5c42a", "scanner": "scanner-primary", "fingerprint": "43a0bc0d0d711f9b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35a4041b0623c7d2", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/design/src/runtime/apply.ts:14"}, "properties": {"repobilityId": "a4165e37ad8d332b", "scanner": "scanner-primary", "fingerprint": "35a4041b0623c7d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a20808c820286e7e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/design/src/verify/compiled-tests.test.ts:81"}, "properties": {"repobilityId": "8f14cab0a1a7ee01", "scanner": "scanner-primary", "fingerprint": "a20808c820286e7e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-883e942423b70650", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/design/src/verify/compiled-tests.ts:45"}, "properties": {"repobilityId": "1ad34f054ca925e0", "scanner": "scanner-primary", "fingerprint": "883e942423b70650", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5410e5ae189bf6b", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/design/src/panel/customization-overlay.tsx:266"}, "properties": {"repobilityId": "3cdcb081e94d7c66", "scanner": "scanner-primary", "fingerprint": "c5410e5ae189bf6b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6928a0961e067f03", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/design/src/primitives/text.tsx:38"}, "properties": {"repobilityId": "9b31a6730f10000d", "scanner": "scanner-primary", "fingerprint": "6928a0961e067f03", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b11591f3c999b829", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/design/src/primitives/slot-registration.test.ts:6"}, "properties": {"repobilityId": "44cb557060b1c68a", "scanner": "scanner-primary", "fingerprint": "b11591f3c999b829", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89e932fb7fc460e8", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/design/src/storage/cookie-mirror.ts:8"}, "properties": {"repobilityId": "742894dd729a5de0", "scanner": "scanner-primary", "fingerprint": "89e932fb7fc460e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8caa473ae599e5e8", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/design/src/config/upgrade.ts:11"}, "properties": {"repobilityId": "f8cf8bbe3a4de480", "scanner": "scanner-primary", "fingerprint": "8caa473ae599e5e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c688c3e6348184ef", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/design-schema/src/css-token-value.ts:3"}, "properties": {"repobilityId": "6354b278249e17b1", "scanner": "scanner-primary", "fingerprint": "c688c3e6348184ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fea672c4491f76f3", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/design-schema/src/theme.ts:130"}, "properties": {"repobilityId": "cfa98aef6e203762", "scanner": "scanner-primary", "fingerprint": "fea672c4491f76f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a3e1baba61f6295d", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/design-schema/src/css-token-value.test.ts:37"}, "properties": {"repobilityId": "a9fbf2dcd43a80e0", "scanner": "scanner-primary", "fingerprint": "a3e1baba61f6295d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ede47269bbbf9147", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/scripts/seed.ts:7"}, "properties": {"repobilityId": "ebc67e9d9308355e", "scanner": "scanner-primary", "fingerprint": "ede47269bbbf9147", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d300d8261a37ad7c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/demo/scripts/visual-qa.mjs:1"}, "properties": {"repobilityId": "7fcc2622f28095c8", "scanner": "scanner-primary", "fingerprint": "d300d8261a37ad7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7e774cba766e64d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/src/App.tsx:40"}, "properties": {"repobilityId": "8c585e94e7aee6ac", "scanner": "scanner-primary", "fingerprint": "b7e774cba766e64d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-20671dd06e69e8a0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/test/phase4.e2e.test.ts:100"}, "properties": {"repobilityId": "abc0c3e3b634dac4", "scanner": "scanner-primary", "fingerprint": "20671dd06e69e8a0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-88664948b46951fe", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/test/phase5.e2e.test.ts:60"}, "properties": {"repobilityId": "d2eb217374dd7642", "scanner": "scanner-primary", "fingerprint": "88664948b46951fe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aa78baa37e17ad0f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/test/helpers.ts:34"}, "properties": {"repobilityId": "6e02822c76bd15b4", "scanner": "scanner-primary", "fingerprint": "aa78baa37e17ad0f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f1162508f1d40f4c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/test/phase2.e2e.test.ts:34"}, "properties": {"repobilityId": "44a4af2950c83769", "scanner": "scanner-primary", "fingerprint": "f1162508f1d40f4c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-254d9d86b6b94467", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/demo/test/guardrails-catalog.e2e.test.ts:49"}, "properties": {"repobilityId": "03449e1eafa6960f", "scanner": "scanner-primary", "fingerprint": "254d9d86b6b94467", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d5c9ffff5d1ef685", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/console/src/api.ts:108"}, "properties": {"repobilityId": "d50a345df7485eb9", "scanner": "scanner-primary", "fingerprint": "d5c9ffff5d1ef685", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-77f442471b0f776e", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/console/src/style-summary.ts:1"}, "properties": {"repobilityId": "00255d51fbc5c32a", "scanner": "scanner-primary", "fingerprint": "77f442471b0f776e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b315ccd790a9600", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/control-plane/scripts/live-design.ts:1"}, "properties": {"repobilityId": "0e92f86ff9584a2b", "scanner": "scanner-primary", "fingerprint": "5b315ccd790a9600", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-70fa5a428330dd1c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/control-plane/src/modules/authoring/pipeline.ts:115"}, "properties": {"repobilityId": "42c47c8467df036a", "scanner": "scanner-primary", "fingerprint": "70fa5a428330dd1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-826070f05bbabb9e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/src/modules/authoring/anthropic.ts:27"}, "properties": {"repobilityId": "50c86022ff446707", "scanner": "scanner-primary", "fingerprint": "826070f05bbabb9e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-79776565580d5099", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/src/modules/authoring/openai-compat.ts:39"}, "properties": {"repobilityId": "cea17f3a6d387b72", "scanner": "scanner-primary", "fingerprint": "79776565580d5099", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6534e0d81fe0fb25", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/control-plane/src/modules/verification/index.ts:141"}, "properties": {"repobilityId": "711f3c212a945d5b", "scanner": "scanner-primary", "fingerprint": "6534e0d81fe0fb25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-78b64573737b3338", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/test/events-route.test.ts:16"}, "properties": {"repobilityId": "2a8d329688082edc", "scanner": "scanner-primary", "fingerprint": "78b64573737b3338", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a5769c0520fe754a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/test/design-config-route.test.ts:7"}, "properties": {"repobilityId": "ba4f198779686131", "scanner": "scanner-primary", "fingerprint": "a5769c0520fe754a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-84e9ad84f2cda935", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/test/themes-route.test.ts:13"}, "properties": {"repobilityId": "8d9cd370b261e362", "scanner": "scanner-primary", "fingerprint": "84e9ad84f2cda935", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-827c3b3747c70a25", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/control-plane/test/verification.test.ts:240"}, "properties": {"repobilityId": "8ca0bf3d7f8f11bd", "scanner": "scanner-primary", "fingerprint": "827c3b3747c70a25", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bbb6b17ebf2e0b6a", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/nebula/next.config.js:24"}, "properties": {"repobilityId": "60736dc7eeb0465b", "scanner": "scanner-primary", "fingerprint": "bbb6b17ebf2e0b6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e79e5516f216f8ab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/nebula/scripts/seed.mjs:9"}, "properties": {"repobilityId": "67b48a9aaff885b9", "scanner": "scanner-primary", "fingerprint": "e79e5516f216f8ab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-73f90b2da0f49ca0", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/nebula/src/app/layout.tsx:34"}, "properties": {"repobilityId": "0efedebdf069e559", "scanner": "scanner-primary", "fingerprint": "73f90b2da0f49ca0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b44dd384e76565b", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/nebula/src/app/api/llm/v1/messages/route.ts:3"}, "properties": {"repobilityId": "6131930595c10193", "scanner": "scanner-primary", "fingerprint": "0b44dd384e76565b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d72ee7c729e5099c", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/nebula/src/app/api/llm/chat/completions/route.ts:5"}, "properties": {"repobilityId": "6e7fc782e6f68dbd", "scanner": "scanner-primary", "fingerprint": "d72ee7c729e5099c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63a0338ed081620d", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/nebula/src/app/showcase/page.tsx:16"}, "properties": {"repobilityId": "e2e49fe5308aa4e2", "scanner": "scanner-primary", "fingerprint": "63a0338ed081620d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-584deed17bae1876", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/nebula/src/app/gauntlet/page.tsx:253"}, "properties": {"repobilityId": "c6baad32e328b394", "scanner": "scanner-primary", "fingerprint": "584deed17bae1876", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8919014de3082437", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/nebula/src/components/mini-nebula.tsx:5"}, "properties": {"repobilityId": "8c979cbae1aaf733", "scanner": "scanner-primary", "fingerprint": "8919014de3082437", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a13633fb778c546", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/nebula/src/components/shell.tsx:11"}, "properties": {"repobilityId": "421406af53765e03", "scanner": "scanner-primary", "fingerprint": "0a13633fb778c546", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3564e33663d450a8", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/nebula/src/components/search-overlay.tsx:36"}, "properties": {"repobilityId": "194ac65c6593aa2b", "scanner": "scanner-primary", "fingerprint": "3564e33663d450a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf295e51dcc6be33", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/nebula/src/components/home-screen.tsx:55"}, "properties": {"repobilityId": "7ec4d2080ec7fbb1", "scanner": "scanner-primary", "fingerprint": "cf295e51dcc6be33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-50d8d2513fd59b28", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/nebula/src/components/title-detail-modal.tsx:85"}, "properties": {"repobilityId": "f730e5f87af9d452", "scanner": "scanner-primary", "fingerprint": "50d8d2513fd59b28", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ccbe54078df135b", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/nebula/src/lib/invariance-config.ts:54"}, "properties": {"repobilityId": "6ba6f24ce9be0812", "scanner": "scanner-primary", "fingerprint": "8ccbe54078df135b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-349e2b497e4640a7", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/nebula/src/lib/dev-config.ts:3"}, "properties": {"repobilityId": "559064d24a038da1", "scanner": "scanner-primary", "fingerprint": "349e2b497e4640a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63e90e936292ba2a", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (packages/cli/src/llm.ts:49)"}, "properties": {"repobilityId": "763a5395b8b0236b", "scanner": "scanner-primary", "fingerprint": "63e90e936292ba2a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fceb93739f94602a", "level": "error", "message": {"text": "Dangling fetch: GET /demo-api${path} (apps/console/src/api.ts:172)"}, "properties": {"repobilityId": "64bcaa6ebfe45dbb", "scanner": "scanner-primary", "fingerprint": "fceb93739f94602a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cbc9b2b42ffb9415", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/demo/manifest (apps/control-plane/scripts/live-design.ts:32)"}, "properties": {"repobilityId": "bea2fc51763825e0", "scanner": "scanner-primary", "fingerprint": "cbc9b2b42ffb9415", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c75752f2b5ac973f", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/demo/subjects/u1/prompts (apps/control-plane/scripts/live-design.ts:42)"}, "properties": {"repobilityId": "921ec1d8d6fe2020", "scanner": "scanner-primary", "fingerprint": "c75752f2b5ac973f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-958c9a49e58f9356", "level": "error", "message": {"text": "Dangling fetch: GET /v1/apps/demo/subjects/u1/pointer (apps/control-plane/scripts/live-design.ts:71)"}, "properties": {"repobilityId": "6565ba22ebbb431e", "scanner": "scanner-primary", "fingerprint": "958c9a49e58f9356", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-fd20203588226a6f", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/manifest (apps/control-plane/test/analytics.test.ts:51)"}, "properties": {"repobilityId": "dd84479140cd84f3", "scanner": "scanner-primary", "fingerprint": "fd20203588226a6f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-65cc996e850c7a26", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/subjects/u1/bundles (apps/control-plane/test/analytics.test.ts:56)"}, "properties": {"repobilityId": "6feed4cbec2dd891", "scanner": "scanner-primary", "fingerprint": "65cc996e850c7a26", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2079ec5c0589fa49", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/events (apps/control-plane/test/analytics.test.ts:67)"}, "properties": {"repobilityId": "8d04b675b5289e15", "scanner": "scanner-primary", "fingerprint": "2079ec5c0589fa49", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1dd34eef15270234", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/events (apps/control-plane/test/analytics.test.ts:73)"}, "properties": {"repobilityId": "c79fcb01038c04c0", "scanner": "scanner-primary", "fingerprint": "1dd34eef15270234", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5c74f6075fc4a342", "level": "error", "message": {"text": "Dangling fetch: GET /v1/apps/app1/analytics/summary (apps/control-plane/test/analytics.test.ts:79)"}, "properties": {"repobilityId": "60e675363e24500d", "scanner": "scanner-primary", "fingerprint": "5c74f6075fc4a342", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-851a4b9d535f080e", "level": "error", "message": {"text": "Dangling fetch: GET /v1/apps/app1/analytics/summary (apps/control-plane/test/analytics.test.ts:87)"}, "properties": {"repobilityId": "fe4533c4b4faff65", "scanner": "scanner-primary", "fingerprint": "851a4b9d535f080e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-94c69d0dc5a5bf47", "level": "error", "message": {"text": "Dangling fetch: GET /v1/apps/app1/mods (apps/control-plane/test/analytics.test.ts:97)"}, "properties": {"repobilityId": "7a8c3a14015f44b5", "scanner": "scanner-primary", "fingerprint": "94c69d0dc5a5bf47", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-f77665feaa375f36", "level": "error", "message": {"text": "Dangling fetch: GET /v1/apps/app1/subjects/u1/pointer (apps/control-plane/test/analytics.test.ts:109)"}, "properties": {"repobilityId": "d8212ee97a7919a5", "scanner": "scanner-primary", "fingerprint": "f77665feaa375f36", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6d3abb8f11ea862d", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/mods/${modId}/kill (apps/control-plane/test/analytics.test.ts:114)"}, "properties": {"repobilityId": "7dd7a45bf0530fc8", "scanner": "scanner-primary", "fingerprint": "6d3abb8f11ea862d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3bdce8c6b1acf35d", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/mods/${modId}/restore (apps/control-plane/test/analytics.test.ts:118)"}, "properties": {"repobilityId": "bd55600134d3d648", "scanner": "scanner-primary", "fingerprint": "3bdce8c6b1acf35d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-dfc4ae896bb37e49", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/subjects/u1/bundles (apps/control-plane/test/analytics.test.ts:130)"}, "properties": {"repobilityId": "209fda69ceca60a1", "scanner": "scanner-primary", "fingerprint": "dfc4ae896bb37e49", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a9282b0bc8786604", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/mods/${modId}/kill (apps/control-plane/test/analytics.test.ts:135)"}, "properties": {"repobilityId": "153e778dbc4c4978", "scanner": "scanner-primary", "fingerprint": "a9282b0bc8786604", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-90a6a3633f81e715", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/subjects/u1/bundles (apps/control-plane/test/analytics.test.ts:141)"}, "properties": {"repobilityId": "1e966f22f2ec5d21", "scanner": "scanner-primary", "fingerprint": "90a6a3633f81e715", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-28c3dbcdea88825e", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/events (apps/control-plane/test/analytics.test.ts:146)"}, "properties": {"repobilityId": "f5f7edaa4334a5db", "scanner": "scanner-primary", "fingerprint": "28c3dbcdea88825e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bd32e0e6a1e20baa", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/events (apps/control-plane/test/analytics.test.ts:150)"}, "properties": {"repobilityId": "212afeed5aa1b661", "scanner": "scanner-primary", "fingerprint": "bd32e0e6a1e20baa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4c437e8278e66d32", "level": "error", "message": {"text": "Dangling fetch: GET /v1/apps/app1/subjects/u1/overview (apps/control-plane/test/analytics.test.ts:155)"}, "properties": {"repobilityId": "ecd9c1115e330e4d", "scanner": "scanner-primary", "fingerprint": "4c437e8278e66d32", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-205db63146c8ee74", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/mods/${modId}/restore (apps/control-plane/test/analytics.test.ts:179)"}, "properties": {"repobilityId": "96376f412574f87a", "scanner": "scanner-primary", "fingerprint": "205db63146c8ee74", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-cd08a35ec35d21ed", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/manifest (apps/control-plane/test/authoring.test.ts:180)"}, "properties": {"repobilityId": "6041ebd2ac490813", "scanner": "scanner-primary", "fingerprint": "cd08a35ec35d21ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3e4b8f03219e996e", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/subjects/u1/prompts (apps/control-plane/test/authoring.test.ts:185)"}, "properties": {"repobilityId": "94cfae8e20c42067", "scanner": "scanner-primary", "fingerprint": "3e4b8f03219e996e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9f4c32c7a9d32547", "level": "error", "message": {"text": "Dangling fetch: GET /v1/apps/app1/subjects/u1/pointer (apps/control-plane/test/authoring.test.ts:192)"}, "properties": {"repobilityId": "b0ab8e555dfe0358", "scanner": "scanner-primary", "fingerprint": "9f4c32c7a9d32547", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6ee4637fe676fb11", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/manifest (apps/control-plane/test/authoring.test.ts:199)"}, "properties": {"repobilityId": "6d9d3a69bb4efa2d", "scanner": "scanner-primary", "fingerprint": "6ee4637fe676fb11", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-5c88d2771ea6fcc9", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/subjects/u1/prompts (apps/control-plane/test/authoring.test.ts:204)"}, "properties": {"repobilityId": "046aeb1d6606e4ce", "scanner": "scanner-primary", "fingerprint": "5c88d2771ea6fcc9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0f49b1431d4b8582", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/subjects/u1/prompts (apps/control-plane/test/authoring.test.ts:219)"}, "properties": {"repobilityId": "4ac865dcfdb23845", "scanner": "scanner-primary", "fingerprint": "0f49b1431d4b8582", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7cc7d33cbe0b724a", "level": "error", "message": {"text": "Dangling fetch: GET https://x (apps/control-plane/test/verification.test.ts:240)"}, "properties": {"repobilityId": "b206d4d4dba1ade4", "scanner": "scanner-primary", "fingerprint": "7cc7d33cbe0b724a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f81f91014243de20", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/manifest (apps/control-plane/test/design-authoring.test.ts:26)"}, "properties": {"repobilityId": "8849efdeeef89177", "scanner": "scanner-primary", "fingerprint": "f81f91014243de20", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-6dfedccd7f534050", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/subjects/u1/prompts (apps/control-plane/test/design-authoring.test.ts:45)"}, "properties": {"repobilityId": "e3a972a619aa1374", "scanner": "scanner-primary", "fingerprint": "6dfedccd7f534050", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b38561fa00dccfdb", "level": "error", "message": {"text": "Dangling fetch: POST /v1/apps/app1/subjects/u1/prompts (apps/control-plane/test/design-authoring.test.ts:80)"}, "properties": {"repobilityId": "ffcaa1d4573a5105", "scanner": "scanner-primary", "fingerprint": "b38561fa00dccfdb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-edaa5c58927faf6b", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (apps/nebula/src/app/api/llm/v1/messages/route.ts:44)"}, "properties": {"repobilityId": "53c54fbc7bd12d99", "scanner": "scanner-primary", "fingerprint": "edaa5c58927faf6b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2854527661373b4a", "level": "note", "message": {"text": "Unused endpoint: GET /v1/apps/:appId/signing-key"}, "properties": {"repobilityId": "bc9d735f7469abaa", "scanner": "scanner-primary", "fingerprint": "2854527661373b4a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6fa90ff58dd7fcca", "level": "note", "message": {"text": "Unused endpoint: POST /v1/apps/:appId/manifest"}, "properties": {"repobilityId": "104962f7b244efe4", "scanner": "scanner-primary", "fingerprint": "6fa90ff58dd7fcca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0e7740d4d0cdc574", "level": "note", "message": {"text": "Unused endpoint: GET /v1/apps/:appId/manifest"}, "properties": {"repobilityId": "f0cad176e32b55a4", "scanner": "scanner-primary", "fingerprint": "0e7740d4d0cdc574", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c9598b69e006489d", "level": "note", "message": {"text": "Unused endpoint: POST /v1/apps/:appId/subjects/:subjectId/prompts"}, "properties": {"repobilityId": "d865da0cc3ac9b1f", "scanner": "scanner-primary", "fingerprint": "c9598b69e006489d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0c7eb9d0319e9d46", "level": "note", "message": {"text": "Unused endpoint: GET /v1/apps/:appId/subjects/:subjectId/pointer"}, "properties": {"repobilityId": "9317cc33697e1027", "scanner": "scanner-primary", "fingerprint": "0c7eb9d0319e9d46", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b4d9a53456f5b41a", "level": "note", "message": {"text": "Unused endpoint: POST /v1/apps/:appId/subjects/:subjectId/revalidate"}, "properties": {"repobilityId": "9b1198f99cfbc1f8", "scanner": "scanner-primary", "fingerprint": "b4d9a53456f5b41a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-69092c7eddc7b933", "level": "note", "message": {"text": "Unused endpoint: POST /v1/apps/:appId/subjects/:subjectId/refix"}, "properties": {"repobilityId": "9e93bfda157018fd", "scanner": "scanner-primary", "fingerprint": "69092c7eddc7b933", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ec7e5395601b246e", "level": "note", "message": {"text": "Unused endpoint: POST /v1/apps/:appId/events"}, "properties": {"repobilityId": "da6ba10348a669f9", "scanner": "scanner-primary", "fingerprint": "ec7e5395601b246e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-905ce38611e0f898", "level": "note", "message": {"text": "Unused endpoint: GET /v1/apps/:appId/analytics/summary"}, "properties": {"repobilityId": "985441690568faac", "scanner": "scanner-primary", "fingerprint": "905ce38611e0f898", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4d10b8dfc117b14f", "level": "note", "message": {"text": "Unused endpoint: GET /v1/apps/:appId/events"}, "properties": {"repobilityId": "95e7d4c9b05a2cdf", "scanner": "scanner-primary", "fingerprint": "4d10b8dfc117b14f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a3c0e90ccaa4be91", "level": "note", "message": {"text": "Unused endpoint: GET /v1/apps/:appId/design-config"}, "properties": {"repobilityId": "27ec30f7fef49809", "scanner": "scanner-primary", "fingerprint": "a3c0e90ccaa4be91", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-85443d443d31ecc1", "level": "note", "message": {"text": "Unused endpoint: GET /v1/apps/:appId/themes"}, "properties": {"repobilityId": "cc0a23f79de8480e", "scanner": "scanner-primary", "fingerprint": "85443d443d31ecc1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-aaf848d5cb3c2a3a", "level": "note", "message": {"text": "Unused endpoint: PUT /v1/apps/:appId/themes"}, "properties": {"repobilityId": "5966c73d34dac111", "scanner": "scanner-primary", "fingerprint": "aaf848d5cb3c2a3a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3ccf67dfef9c2880", "level": "note", "message": {"text": "Unused endpoint: GET /v1/apps/:appId/themes/history"}, "properties": {"repobilityId": "760b927543c2ee85", "scanner": "scanner-primary", "fingerprint": "3ccf67dfef9c2880", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f7bc59d0ac2de3a7", "level": "note", "message": {"text": "Unused endpoint: GET /v1/apps/:appId/mods"}, "properties": {"repobilityId": "58fb9212390c29f4", "scanner": "scanner-primary", "fingerprint": "f7bc59d0ac2de3a7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ea12292e41a71c1d", "level": "note", "message": {"text": "Unused endpoint: GET /v1/apps/:appId/subjects/:subjectId/overview"}, "properties": {"repobilityId": "7fbbe7cdf5603e75", "scanner": "scanner-primary", "fingerprint": "ea12292e41a71c1d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b1ad6b0e8e5ca0a2", "level": "note", "message": {"text": "Unused endpoint: GET /v1/apps/:appId/bundles/:hash"}, "properties": {"repobilityId": "c65665b071559991", "scanner": "scanner-primary", "fingerprint": "b1ad6b0e8e5ca0a2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}