{"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-fa57a585a3c43f2c", "name": "Stray `console.log` in TS/JS \u2014 tmp_fly_query.ts:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tmp_fly_query.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-416be34e3bfdfc9e", "name": "Stray `console.log` in TS/JS \u2014 workers/world-generation/main.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 workers/world-generation/main.ts:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0eb800d7b52b9f45", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/healthcheck/index.ts:3", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/healthcheck/index.ts:3"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e7f6f2cba36980a8", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/stripe/webhook/index.ts:206", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/stripe/webhook/index.ts:206"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8eb2bd8daa05c0c4", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/plan-world-build/index.ts:561", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/plan-world-build/index.ts:561"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df2aa010e6ee26cf", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/_shared/world-prompt.ts:7044", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/_shared/world-prompt.ts:7044"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-39c24681311a0094", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/_shared/world-build.ts:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/_shared/world-build.ts:90"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-385d23b4f6f02a2d", "name": "Custom React Flow node registered without explicit width/height \u2014 src/features/world-builder/WorldGraphPage.tsx:10871", "shortDescription": {"text": "Custom React Flow node registered without explicit width/height \u2014 src/features/world-builder/WorldGraphPage.tsx:10871"}, "fullDescription": {"text": "When you register a custom node type via `nodeTypes`, the RFNode object you build must include `width` and `height` props. Without them, MiniMap renders ZERO mini-nodes for that type and `fitView` underestimates the bounds (cuts off lane labels, etc.). Add `width: \u2026, height: \u2026` to the node object. See P-I.\n\nWhy: P-I in CHECKLIST.md \u2014 RF MiniMap + fitView need explicit dims on custom nodes.\nRule id: fq.rfnode.no-dims"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-95ece22307ede744", "name": "Stray `console.log` in TS/JS \u2014 src/features/viewer3d/ThreeSceneViewport.tsx:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/features/viewer3d/ThreeSceneViewport.tsx:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ca07d08773bd920", "name": "Stray `console.log` in TS/JS \u2014 src/features/viewer3d/Character3dPanel.tsx:162", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/features/viewer3d/Character3dPanel.tsx:162"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-89f47a7338ff1be9", "name": "Dockerfile runs as root: workers/world-generation/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: workers/world-generation/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-b8c7d37a70bfc67f", "name": "Docker base image is tag-pinned but not digest-pinned: denoland/deno:alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: denoland/deno:alpine"}, "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-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-777febd2ecda2e14", "name": "Insecure pattern 'node_child_process' in scripts/build-profile.cjs:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/build-profile.cjs:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-32dafc8cb4188664", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/_shared/http.ts:2", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/_shared/http.ts:2"}, "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-ed8236cb2d7522cd", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-990bc563bf513981", "name": "Very large file: supabase/functions/poll-world-build/index.ts (3643 lines)", "shortDescription": {"text": "Very large file: supabase/functions/poll-world-build/index.ts (3643 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-07eef02cd6d6f7e0", "name": "Very large file: supabase/functions/poll-cinematic-run/index.ts (1284 lines)", "shortDescription": {"text": "Very large file: supabase/functions/poll-cinematic-run/index.ts (1284 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-7910878c1522ae3d", "name": "Very large file: supabase/functions/apply-patch/index.ts (1139 lines)", "shortDescription": {"text": "Very large file: supabase/functions/apply-patch/index.ts (1139 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-ffb2ab42b08503e5", "name": "Very large file: supabase/functions/ensure-sequence-animatic-keyframe-workflows/index.ts (1796 lines)", "shortDescription": {"text": "Very large file: supabase/functions/ensure-sequence-animatic-keyframe-workflows/index.ts (1796 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-95b0220dcecf955f", "name": "Very large file: supabase/functions/_shared/world-build-cinematics.ts (6053 lines)", "shortDescription": {"text": "Very large file: supabase/functions/_shared/world-build-cinematics.ts (6053 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-21d07ef291802d1b", "name": "Very large file: supabase/functions/_shared/sequence-animatic-workflow-factory.ts (1080 lines)", "shortDescription": {"text": "Very large file: supabase/functions/_shared/sequence-animatic-workflow-factory.ts (1080 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-170b1b5069f0eb8e", "name": "Very large file: supabase/functions/_shared/world-prompt.ts (19458 lines)", "shortDescription": {"text": "Very large file: supabase/functions/_shared/world-prompt.ts (19458 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-77f82f2bf0e94af3", "name": "Very large file: supabase/functions/_shared/cinematics.ts (2512 lines)", "shortDescription": {"text": "Very large file: supabase/functions/_shared/cinematics.ts (2512 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec4482717286c966", "name": "Very large file: supabase/functions/_shared/visual-generation-worker.ts (2308 lines)", "shortDescription": {"text": "Very large file: supabase/functions/_shared/visual-generation-worker.ts (2308 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-23c45d2c5284b210", "name": "Very large file: src/App.tsx (9329 lines)", "shortDescription": {"text": "Very large file: src/App.tsx (9329 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-5139133c0856e254", "name": "Very large file: src/features/cinematics/CinematicsWorkspace.tsx (5103 lines)", "shortDescription": {"text": "Very large file: src/features/cinematics/CinematicsWorkspace.tsx (5103 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-280f97ef47981ee0", "name": "Very large file: src/features/world-builder/WorldGraphPage.tsx (18092 lines)", "shortDescription": {"text": "Very large file: src/features/world-builder/WorldGraphPage.tsx (18092 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-1842710db7230463", "name": "Very large file: src/features/world-builder/prompt/WorldPromptPanels.tsx (1444 lines)", "shortDescription": {"text": "Very large file: src/features/world-builder/prompt/WorldPromptPanels.tsx (1444 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-3a18ded338c5ba58", "name": "Very large file: src/features/onboarding/ProjectWorldOnboarding.tsx (1814 lines)", "shortDescription": {"text": "Very large file: src/features/onboarding/ProjectWorldOnboarding.tsx (1814 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-4731bed7e786948d", "name": "Very large file: src/features/content/SpecializedDefinitionWorkspace.tsx (995 lines)", "shortDescription": {"text": "Very large file: src/features/content/SpecializedDefinitionWorkspace.tsx (995 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-10205f8be5688e9e", "name": "Very large file: src/features/world/worldPresentation.ts (3629 lines)", "shortDescription": {"text": "Very large file: src/features/world/worldPresentation.ts (3629 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f82cd504df3e7b0d", "name": "Very large file: src/features/world/worldPresentation.test.ts (3013 lines)", "shortDescription": {"text": "Very large file: src/features/world/worldPresentation.test.ts (3013 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-4381d6f4cae458e6", "name": "Very large file: src/features/outputs/OutputsWorkspace.tsx (4472 lines)", "shortDescription": {"text": "Very large file: src/features/outputs/OutputsWorkspace.tsx (4472 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-3471c17009529f23", "name": "Very large file: src/features/outputs/OutputWorkflowGraphOverlay.tsx (1554 lines)", "shortDescription": {"text": "Very large file: src/features/outputs/OutputWorkflowGraphOverlay.tsx (1554 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-dab4e79e305600e1", "name": "Very large file: src/domain/environmentAssemblyCompiler.ts (7421 lines)", "shortDescription": {"text": "Very large file: src/domain/environmentAssemblyCompiler.ts (7421 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-a5b21244f34bfdc7", "name": "Very large file: src/domain/outputSkills.ts (1301 lines)", "shortDescription": {"text": "Very large file: src/domain/outputSkills.ts (1301 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-fc97f31ede33fb02", "name": "Very large file: src/domain/appPreviewPipeline.ts (1802 lines)", "shortDescription": {"text": "Very large file: src/domain/appPreviewPipeline.ts (1802 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-122dd3211317787f", "name": "Very large file: src/domain/environmentBlueprint.ts (1417 lines)", "shortDescription": {"text": "Very large file: src/domain/environmentBlueprint.ts (1417 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-a227526e7be2a85f", "name": "Very large file: src/domain/presetCatalog.ts (1692 lines)", "shortDescription": {"text": "Very large file: src/domain/presetCatalog.ts (1692 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-b65c28269c023bcf", "name": "Very large file: src/domain/compiler.ts (1943 lines)", "shortDescription": {"text": "Very large file: src/domain/compiler.ts (1943 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-2f5adaf51452ab7c", "name": "Very large file: src/domain/cinematics.ts (4047 lines)", "shortDescription": {"text": "Very large file: src/domain/cinematics.ts (4047 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-b21d5f740836a845", "name": "Very large file: src/domain/storyPresetProfiles.ts (872 lines)", "shortDescription": {"text": "Very large file: src/domain/storyPresetProfiles.ts (872 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-11f9dc94e6496530", "name": "Very large file: src/domain/worldPrompt.ts (1525 lines)", "shortDescription": {"text": "Very large file: src/domain/worldPrompt.ts (1525 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-ec2aae9b8386de58", "name": "Very large file: src/domain/outputWorkflow.ts (4241 lines)", "shortDescription": {"text": "Very large file: src/domain/outputWorkflow.ts (4241 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-06d1614eb84dd8e1", "name": "Very large file: src/domain/outputWorkflow.test.ts (4522 lines)", "shortDescription": {"text": "Very large file: src/domain/outputWorkflow.test.ts (4522 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-a10c7874071bfacf", "name": "Very large file: src/domain/cinematics.test.ts (1800 lines)", "shortDescription": {"text": "Very large file: src/domain/cinematics.test.ts (1800 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-88aa74084029691b", "name": "Very large file: src/domain/ugcPresetProfiles.ts (1746 lines)", "shortDescription": {"text": "Very large file: src/domain/ugcPresetProfiles.ts (1746 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-401391432a21696e", "name": "Very large file: src/domain/environmentAssembly.ts (2739 lines)", "shortDescription": {"text": "Very large file: src/domain/environmentAssembly.ts (2739 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-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "59 tests / 310 src (ratio 0.19)."}, "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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 40 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 164 placeholder/mock markers across 50 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a4d077a73a19e3fd", "name": "Agent instruction/config may expose a secret: Agents.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: Agents.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5113b369d91e1996", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/derive-sequence-animatic-continuity-structure/index.ts:", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/derive-sequence-animatic-continuity-structure/index.ts:280"}, "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-791ddb00b27172ae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/derive-sequence-animatic-continuity-block/index.ts:375", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/derive-sequence-animatic-continuity-block/index.ts:375"}, "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-2e4c069d05c442ab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/fal-webhook/index.ts:883", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/fal-webhook/index.ts:883"}, "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-fd3c35bf66f077b1", "name": "Legacy-named symbol `ugc_script_ingest_v1` in supabase/functions/author-cinematic-script/index.ts:426", "shortDescription": {"text": "Legacy-named symbol `ugc_script_ingest_v1` in supabase/functions/author-cinematic-script/index.ts:426"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-840ccc8feada02d4", "name": "Legacy-named symbol `sequence_animatic_graph_v2` in supabase/functions/get-sequence-animatic-state/index.ts:287", "shortDescription": {"text": "Legacy-named symbol `sequence_animatic_graph_v2` in supabase/functions/get-sequence-animatic-state/index.ts:287"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a9c75dddb5c1ca96", "name": "Legacy-named symbol `continuity_graph_v2` in supabase/functions/ensure-sequence-animatic-block-workflows/index.ts:120", "shortDescription": {"text": "Legacy-named symbol `continuity_graph_v2` in supabase/functions/ensure-sequence-animatic-block-workflows/index.ts:120"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b8a9b1a7a381f89b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/extract-source-url/index.ts:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/extract-source-url/index.ts:52"}, "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-9c9430a1549c9427", "name": "Legacy-named symbol `ugc_script_ingest_v1` in supabase/functions/repair-cinematic-script/index.ts:246", "shortDescription": {"text": "Legacy-named symbol `ugc_script_ingest_v1` in supabase/functions/repair-cinematic-script/index.ts:246"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f4df06eacc24ab3c", "name": "Legacy-named symbol `continuity_graph_v2` in supabase/functions/ensure-sequence-animatic-continuity-asset-workflow/index", "shortDescription": {"text": "Legacy-named symbol `continuity_graph_v2` in supabase/functions/ensure-sequence-animatic-continuity-asset-workflow/index.ts:150"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f8e22a2308ecc5d9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/poll-mesh-generation/index.ts:455", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/poll-mesh-generation/index.ts:455"}, "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-73802e4458a7361c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/join-waitlist/index.ts:170", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/join-waitlist/index.ts:170"}, "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-c510ecf80ae79878", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/stripe/create-subscription/index.ts:133", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/stripe/create-subscription/index.ts:133"}, "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-0d264d3dbfbe5a1d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/stripe/create-checkout-session/index.ts:114", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/stripe/create-checkout-session/index.ts:114"}, "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-4a1675ffbd796447", "name": "Legacy-named symbol `sequence_animatic_keyframe_plan_v1` in supabase/functions/ensure-sequence-animatic-keyframe-workflo", "shortDescription": {"text": "Legacy-named symbol `sequence_animatic_keyframe_plan_v1` in supabase/functions/ensure-sequence-animatic-keyframe-workflows/index.ts:395"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-800b7f6f7c4eb7ab", "name": "Legacy-named symbol `sequence_animatic_graph_v1` in supabase/functions/_shared/sequence-animatic-workflow-factory.ts:1", "shortDescription": {"text": "Legacy-named symbol `sequence_animatic_graph_v1` in supabase/functions/_shared/sequence-animatic-workflow-factory.ts:1"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-04242dc221b59212", "name": "Commented-code block (6 lines) in supabase/functions/_shared/cinematics.ts:2237", "shortDescription": {"text": "Commented-code block (6 lines) in supabase/functions/_shared/cinematics.ts:2237"}, "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-0088b9bc095d76cf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/_shared/cinematics.ts:1768", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/_shared/cinematics.ts:1768"}, "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-732eaffcf308b447", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/_shared/openai.ts:416", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/_shared/openai.ts:416"}, "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-280888c052ae55d9", "name": "Commented-code block (8 lines) in supabase/functions/_shared/model-policy.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in supabase/functions/_shared/model-policy.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-381fa2b964220be3", "name": "Legacy-named symbol `bounded_v1` in supabase/functions/_shared/world-build-placeholders.ts:149", "shortDescription": {"text": "Legacy-named symbol `bounded_v1` in supabase/functions/_shared/world-build-placeholders.ts:149"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0778fc5753cef744", "name": "Legacy-named symbol `story_prompt_slim_v1` in src/core/generationWorkflow.test.ts:22", "shortDescription": {"text": "Legacy-named symbol `story_prompt_slim_v1` in src/core/generationWorkflow.test.ts:22"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2b3fa5a8d1428c17", "name": "Legacy-named symbol `creative_screenplay_v1` in src/features/world-builder/WorldGraphPage.tsx:3918", "shortDescription": {"text": "Legacy-named symbol `creative_screenplay_v1` in src/features/world-builder/WorldGraphPage.tsx:3918"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-18fb5a46c6c369f1", "name": "Legacy-named symbol `onOpenLegacy` in src/features/world-builder/prompt/WorldPromptPanels.tsx:106", "shortDescription": {"text": "Legacy-named symbol `onOpenLegacy` in src/features/world-builder/prompt/WorldPromptPanels.tsx:106"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-634b4bbe558faf55", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/features/world-builder/wiki/WorldOutputLibraryPanel.tsx:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/features/world-builder/wiki/WorldOutputLibraryPanel.tsx:69"}, "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-615979f2b7e41151", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/features/landing/waitlistClient.ts:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/features/landing/waitlistClient.ts:45"}, "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-f849fc9a9bf21271", "name": "Legacy-named symbol `creative_screenplay_v1` in src/features/outputs/OutputsWorkspace.tsx:605", "shortDescription": {"text": "Legacy-named symbol `creative_screenplay_v1` in src/features/outputs/OutputsWorkspace.tsx:605"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6479ad207327c3bb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/features/outputs/OutputsWorkspace.tsx:1611", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/features/outputs/OutputsWorkspace.tsx:1611"}, "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-a26fe6b3e27ddcad", "name": "Legacy-named symbol `sequence_animatic_continuity_lint_v1` in src/domain/sequenceAnimaticContinuityLint.ts:28", "shortDescription": {"text": "Legacy-named symbol `sequence_animatic_continuity_lint_v1` in src/domain/sequenceAnimaticContinuityLint.ts:28"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-40ecfab1cddb2042", "name": "Legacy-named symbol `constrained_delaunay_v1` in src/domain/environmentAssemblyCompiler.ts:1329", "shortDescription": {"text": "Legacy-named symbol `constrained_delaunay_v1` in src/domain/environmentAssemblyCompiler.ts:1329"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cd039c9b6b45bfa6", "name": "Legacy-named symbol `bounded_v1` in src/domain/graphcore.ts:1353", "shortDescription": {"text": "Legacy-named symbol `bounded_v1` in src/domain/graphcore.ts:1353"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a9571b2bf11b9d2e", "name": "Legacy-named symbol `cinematic_v2` in src/domain/outputSkills.ts:368", "shortDescription": {"text": "Legacy-named symbol `cinematic_v2` in src/domain/outputSkills.ts:368"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-066fd0740bd2d195", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/domain/referenceSheetIconCrop.ts:346", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/domain/referenceSheetIconCrop.ts:346"}, "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-e6965233712c5c21", "name": "Legacy-named symbol `sequence_animatic_graph_v2` in src/domain/sequenceAnimaticStreamedShotReady.ts:3", "shortDescription": {"text": "Legacy-named symbol `sequence_animatic_graph_v2` in src/domain/sequenceAnimaticStreamedShotReady.ts:3"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a96fcfccf4dcc44c", "name": "Legacy-named symbol `story_script_ingest_v1` in src/domain/presetCatalog.ts:1632", "shortDescription": {"text": "Legacy-named symbol `story_script_ingest_v1` in src/domain/presetCatalog.ts:1632"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-74b1ca198c265af6", "name": "Legacy-named symbol `story_script_ingest_v1` in src/domain/cinematicCreativeScript.ts:497", "shortDescription": {"text": "Legacy-named symbol `story_script_ingest_v1` in src/domain/cinematicCreativeScript.ts:497"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-09e28d322c081145", "name": "Legacy-named symbol `sequence_animatic_visual_reference_plan_v1` in src/domain/sequenceAnimaticVisualReferencePlan.ts:6", "shortDescription": {"text": "Legacy-named symbol `sequence_animatic_visual_reference_plan_v1` in src/domain/sequenceAnimaticVisualReferencePlan.ts:6"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-12b6988abeb32687", "name": "Legacy-named symbol `json_shot_authoring_v1` in src/domain/cinematics.ts:125", "shortDescription": {"text": "Legacy-named symbol `json_shot_authoring_v1` in src/domain/cinematics.ts:125"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea50ede3e45a413e", "name": "Legacy-named symbol `continuity_graph_v2` in src/domain/outputWorkflowNodeContracts.ts:81", "shortDescription": {"text": "Legacy-named symbol `continuity_graph_v2` in src/domain/outputWorkflowNodeContracts.ts:81"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4091e02d6871525a", "name": "Legacy-named symbol `sequence_animatic_graph_v1` in src/domain/outputWorkflow.ts:63", "shortDescription": {"text": "Legacy-named symbol `sequence_animatic_graph_v1` in src/domain/outputWorkflow.ts:63"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76826fca98bae692", "name": "Legacy-named symbol `scene_graph_assignment_v1` in src/domain/outputWorkflow.test.ts:1187", "shortDescription": {"text": "Legacy-named symbol `scene_graph_assignment_v1` in src/domain/outputWorkflow.test.ts:1187"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-84a59f1c171c4108", "name": "Legacy-named symbol `ugc_script_ingest_v1` in src/domain/cinematics.test.ts:574", "shortDescription": {"text": "Legacy-named symbol `ugc_script_ingest_v1` in src/domain/cinematics.test.ts:574"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-41032ae79add78e8", "name": "Legacy-named symbol `story_script_ingest_v1` in src/domain/storyPromptBuilders.ts:11", "shortDescription": {"text": "Legacy-named symbol `story_script_ingest_v1` in src/domain/storyPromptBuilders.ts:11"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-130266f2639b6aeb", "name": "Legacy-named symbol `profile_compose_v2` in src/domain/environmentAssembly.ts:51", "shortDescription": {"text": "Legacy-named symbol `profile_compose_v2` in src/domain/environmentAssembly.ts:51"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6076ff578427aee0", "name": "Legacy-named symbol `story_script_ingest_v1` in src/domain/storyPromptBuilders.test.ts:13", "shortDescription": {"text": "Legacy-named symbol `story_script_ingest_v1` in src/domain/storyPromptBuilders.test.ts:13"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2eafc3188c36bb02", "name": "3 env vars used in code but missing from .env.example", "shortDescription": {"text": "3 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `DEV`, `VITE_DEBUG_3D_VIEWER`, `VITE_GRAPHCORE_OUTPUT_MONITOR_DEBUG`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/17773"}, "properties": {"repository": "ralashqar/graphcore", "repoUrl": "https://github.com/ralashqar/graphcore", "branch": "main"}, "results": [{"ruleId": "scanner-fa57a585a3c43f2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tmp_fly_query.ts:12"}, "properties": {"repobilityId": "709117f3b7d97162", "scanner": "scanner-primary", "fingerprint": "fa57a585a3c43f2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-416be34e3bfdfc9e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 workers/world-generation/main.ts:63"}, "properties": {"repobilityId": "004b6062ab67ace4", "scanner": "scanner-primary", "fingerprint": "416be34e3bfdfc9e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0eb800d7b52b9f45", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/healthcheck/index.ts:3"}, "properties": {"repobilityId": "753e71c589d5c012", "scanner": "scanner-primary", "fingerprint": "0eb800d7b52b9f45", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e7f6f2cba36980a8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/stripe/webhook/index.ts:206"}, "properties": {"repobilityId": "4426bebc3f0443a9", "scanner": "scanner-primary", "fingerprint": "e7f6f2cba36980a8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8eb2bd8daa05c0c4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/plan-world-build/index.ts:561"}, "properties": {"repobilityId": "d0b69202b5e5c79d", "scanner": "scanner-primary", "fingerprint": "8eb2bd8daa05c0c4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df2aa010e6ee26cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/_shared/world-prompt.ts:7044"}, "properties": {"repobilityId": "562f47a69a140b2c", "scanner": "scanner-primary", "fingerprint": "df2aa010e6ee26cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-39c24681311a0094", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/_shared/world-build.ts:90"}, "properties": {"repobilityId": "1ba5ae4df250bfce", "scanner": "scanner-primary", "fingerprint": "39c24681311a0094", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-385d23b4f6f02a2d", "level": "warning", "message": {"text": "Custom React Flow node registered without explicit width/height \u2014 src/features/world-builder/WorldGraphPage.tsx:10871"}, "properties": {"repobilityId": "e93b782ceb51e994", "scanner": "scanner-primary", "fingerprint": "385d23b4f6f02a2d", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.rfnode.no-dims"]}}, {"ruleId": "scanner-95ece22307ede744", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/features/viewer3d/ThreeSceneViewport.tsx:63"}, "properties": {"repobilityId": "6a6c7cc0af514f66", "scanner": "scanner-primary", "fingerprint": "95ece22307ede744", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ca07d08773bd920", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/features/viewer3d/Character3dPanel.tsx:162"}, "properties": {"repobilityId": "c44e7cba155705c9", "scanner": "scanner-primary", "fingerprint": "2ca07d08773bd920", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-89f47a7338ff1be9", "level": "warning", "message": {"text": "Dockerfile runs as root: workers/world-generation/Dockerfile"}, "properties": {"repobilityId": "57000f7fe58b7618", "scanner": "scanner-primary", "fingerprint": "89f47a7338ff1be9", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-b8c7d37a70bfc67f", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: denoland/deno:alpine"}, "properties": {"repobilityId": "287a359eb60d1465", "scanner": "scanner-primary", "fingerprint": "b8c7d37a70bfc67f", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "workers/world-generation/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-777febd2ecda2e14", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/build-profile.cjs:1"}, "properties": {"repobilityId": "3c1bfa5fa4f8dc3b", "scanner": "scanner-primary", "fingerprint": "777febd2ecda2e14", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/build-profile.cjs"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-32dafc8cb4188664", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/_shared/http.ts:2"}, "properties": {"repobilityId": "eadddb8ab3e20f88", "scanner": "scanner-primary", "fingerprint": "32dafc8cb4188664", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/_shared/http.ts"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-ed8236cb2d7522cd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "42de85d61138cf5b", "scanner": "scanner-primary", "fingerprint": "ed8236cb2d7522cd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/auto-merge-main.yml"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-990bc563bf513981", "level": "note", "message": {"text": "Very large file: supabase/functions/poll-world-build/index.ts (3643 lines)"}, "properties": {"repobilityId": "6015d8addd98c860", "scanner": "scanner-primary", "fingerprint": "990bc563bf513981", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-07eef02cd6d6f7e0", "level": "note", "message": {"text": "Very large file: supabase/functions/poll-cinematic-run/index.ts (1284 lines)"}, "properties": {"repobilityId": "6418a1c850e81446", "scanner": "scanner-primary", "fingerprint": "07eef02cd6d6f7e0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7910878c1522ae3d", "level": "note", "message": {"text": "Very large file: supabase/functions/apply-patch/index.ts (1139 lines)"}, "properties": {"repobilityId": "13aa6e0ac0d5533c", "scanner": "scanner-primary", "fingerprint": "7910878c1522ae3d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ffb2ab42b08503e5", "level": "note", "message": {"text": "Very large file: supabase/functions/ensure-sequence-animatic-keyframe-workflows/index.ts (1796 lines)"}, "properties": {"repobilityId": "54f1e5a3046b65fa", "scanner": "scanner-primary", "fingerprint": "ffb2ab42b08503e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-95b0220dcecf955f", "level": "note", "message": {"text": "Very large file: supabase/functions/_shared/world-build-cinematics.ts (6053 lines)"}, "properties": {"repobilityId": "0ef2e398e4cad879", "scanner": "scanner-primary", "fingerprint": "95b0220dcecf955f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-21d07ef291802d1b", "level": "note", "message": {"text": "Very large file: supabase/functions/_shared/sequence-animatic-workflow-factory.ts (1080 lines)"}, "properties": {"repobilityId": "178b863aa132fe0e", "scanner": "scanner-primary", "fingerprint": "21d07ef291802d1b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-170b1b5069f0eb8e", "level": "note", "message": {"text": "Very large file: supabase/functions/_shared/world-prompt.ts (19458 lines)"}, "properties": {"repobilityId": "e074ec56fd6a31e4", "scanner": "scanner-primary", "fingerprint": "170b1b5069f0eb8e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-77f82f2bf0e94af3", "level": "note", "message": {"text": "Very large file: supabase/functions/_shared/cinematics.ts (2512 lines)"}, "properties": {"repobilityId": "be26be8194a0f368", "scanner": "scanner-primary", "fingerprint": "77f82f2bf0e94af3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ec4482717286c966", "level": "note", "message": {"text": "Very large file: supabase/functions/_shared/visual-generation-worker.ts (2308 lines)"}, "properties": {"repobilityId": "11ea4a8f84ab7041", "scanner": "scanner-primary", "fingerprint": "ec4482717286c966", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-23c45d2c5284b210", "level": "note", "message": {"text": "Very large file: src/App.tsx (9329 lines)"}, "properties": {"repobilityId": "57bfc71b44f5048a", "scanner": "scanner-primary", "fingerprint": "23c45d2c5284b210", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5139133c0856e254", "level": "note", "message": {"text": "Very large file: src/features/cinematics/CinematicsWorkspace.tsx (5103 lines)"}, "properties": {"repobilityId": "de4ca284cb8c6779", "scanner": "scanner-primary", "fingerprint": "5139133c0856e254", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-280f97ef47981ee0", "level": "note", "message": {"text": "Very large file: src/features/world-builder/WorldGraphPage.tsx (18092 lines)"}, "properties": {"repobilityId": "64bd0eb984c3055b", "scanner": "scanner-primary", "fingerprint": "280f97ef47981ee0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1842710db7230463", "level": "note", "message": {"text": "Very large file: src/features/world-builder/prompt/WorldPromptPanels.tsx (1444 lines)"}, "properties": {"repobilityId": "b2343bc200e3cafb", "scanner": "scanner-primary", "fingerprint": "1842710db7230463", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3a18ded338c5ba58", "level": "note", "message": {"text": "Very large file: src/features/onboarding/ProjectWorldOnboarding.tsx (1814 lines)"}, "properties": {"repobilityId": "80629408dd0f523f", "scanner": "scanner-primary", "fingerprint": "3a18ded338c5ba58", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4731bed7e786948d", "level": "note", "message": {"text": "Very large file: src/features/content/SpecializedDefinitionWorkspace.tsx (995 lines)"}, "properties": {"repobilityId": "1d84b7aa1d1431eb", "scanner": "scanner-primary", "fingerprint": "4731bed7e786948d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-10205f8be5688e9e", "level": "note", "message": {"text": "Very large file: src/features/world/worldPresentation.ts (3629 lines)"}, "properties": {"repobilityId": "bc24af0e75dd6133", "scanner": "scanner-primary", "fingerprint": "10205f8be5688e9e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f82cd504df3e7b0d", "level": "note", "message": {"text": "Very large file: src/features/world/worldPresentation.test.ts (3013 lines)"}, "properties": {"repobilityId": "626e9f5f0657f922", "scanner": "scanner-primary", "fingerprint": "f82cd504df3e7b0d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4381d6f4cae458e6", "level": "note", "message": {"text": "Very large file: src/features/outputs/OutputsWorkspace.tsx (4472 lines)"}, "properties": {"repobilityId": "555cee338060eda6", "scanner": "scanner-primary", "fingerprint": "4381d6f4cae458e6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3471c17009529f23", "level": "note", "message": {"text": "Very large file: src/features/outputs/OutputWorkflowGraphOverlay.tsx (1554 lines)"}, "properties": {"repobilityId": "371955306f4f789a", "scanner": "scanner-primary", "fingerprint": "3471c17009529f23", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dab4e79e305600e1", "level": "note", "message": {"text": "Very large file: src/domain/environmentAssemblyCompiler.ts (7421 lines)"}, "properties": {"repobilityId": "776cb93321d8dbd6", "scanner": "scanner-primary", "fingerprint": "dab4e79e305600e1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a5b21244f34bfdc7", "level": "note", "message": {"text": "Very large file: src/domain/outputSkills.ts (1301 lines)"}, "properties": {"repobilityId": "202e1f461fd94f0d", "scanner": "scanner-primary", "fingerprint": "a5b21244f34bfdc7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fc97f31ede33fb02", "level": "note", "message": {"text": "Very large file: src/domain/appPreviewPipeline.ts (1802 lines)"}, "properties": {"repobilityId": "ef2f4bda2853fa65", "scanner": "scanner-primary", "fingerprint": "fc97f31ede33fb02", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-122dd3211317787f", "level": "note", "message": {"text": "Very large file: src/domain/environmentBlueprint.ts (1417 lines)"}, "properties": {"repobilityId": "b55d5b9c0ed2bfdb", "scanner": "scanner-primary", "fingerprint": "122dd3211317787f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a227526e7be2a85f", "level": "note", "message": {"text": "Very large file: src/domain/presetCatalog.ts (1692 lines)"}, "properties": {"repobilityId": "86d196b25ba12ddc", "scanner": "scanner-primary", "fingerprint": "a227526e7be2a85f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b65c28269c023bcf", "level": "note", "message": {"text": "Very large file: src/domain/compiler.ts (1943 lines)"}, "properties": {"repobilityId": "090d4547593d465c", "scanner": "scanner-primary", "fingerprint": "b65c28269c023bcf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2f5adaf51452ab7c", "level": "note", "message": {"text": "Very large file: src/domain/cinematics.ts (4047 lines)"}, "properties": {"repobilityId": "12186d5307bb1cb8", "scanner": "scanner-primary", "fingerprint": "2f5adaf51452ab7c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b21d5f740836a845", "level": "note", "message": {"text": "Very large file: src/domain/storyPresetProfiles.ts (872 lines)"}, "properties": {"repobilityId": "32419d571e6db19e", "scanner": "scanner-primary", "fingerprint": "b21d5f740836a845", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-11f9dc94e6496530", "level": "note", "message": {"text": "Very large file: src/domain/worldPrompt.ts (1525 lines)"}, "properties": {"repobilityId": "6d7c982797c4b3ba", "scanner": "scanner-primary", "fingerprint": "11f9dc94e6496530", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ec2aae9b8386de58", "level": "note", "message": {"text": "Very large file: src/domain/outputWorkflow.ts (4241 lines)"}, "properties": {"repobilityId": "f0281c7c8cd97f45", "scanner": "scanner-primary", "fingerprint": "ec2aae9b8386de58", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-06d1614eb84dd8e1", "level": "note", "message": {"text": "Very large file: src/domain/outputWorkflow.test.ts (4522 lines)"}, "properties": {"repobilityId": "16ffc2d043f2b0b4", "scanner": "scanner-primary", "fingerprint": "06d1614eb84dd8e1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a10c7874071bfacf", "level": "note", "message": {"text": "Very large file: src/domain/cinematics.test.ts (1800 lines)"}, "properties": {"repobilityId": "3ccdc2d4298e79f9", "scanner": "scanner-primary", "fingerprint": "a10c7874071bfacf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-88aa74084029691b", "level": "note", "message": {"text": "Very large file: src/domain/ugcPresetProfiles.ts (1746 lines)"}, "properties": {"repobilityId": "63ff528596a63b56", "scanner": "scanner-primary", "fingerprint": "88aa74084029691b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-401391432a21696e", "level": "note", "message": {"text": "Very large file: src/domain/environmentAssembly.ts (2739 lines)"}, "properties": {"repobilityId": "4f9ac7885e785783", "scanner": "scanner-primary", "fingerprint": "401391432a21696e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "07cb3ad7faa01a9e", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "380a7f68f4f5cc4a", "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": "f11213503cce6b80", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "ee0d1e92744a5546", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "f461a69676d71971", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "b2dea3c058d45b57", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "1a7dd32cbcbd9de1", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-a4d077a73a19e3fd", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: Agents.md"}, "properties": {"repobilityId": "430ab970ab22f4f3", "scanner": "scanner-primary", "fingerprint": "a4d077a73a19e3fd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "agents_md"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Agents.md"}, "region": {"startLine": 648}}}]}, {"ruleId": "scanner-5113b369d91e1996", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/derive-sequence-animatic-continuity-structure/index.ts:280"}, "properties": {"repobilityId": "5ed72a80927ff7eb", "scanner": "scanner-primary", "fingerprint": "5113b369d91e1996", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-791ddb00b27172ae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/derive-sequence-animatic-continuity-block/index.ts:375"}, "properties": {"repobilityId": "77a414c3b39b6986", "scanner": "scanner-primary", "fingerprint": "791ddb00b27172ae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2e4c069d05c442ab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/fal-webhook/index.ts:883"}, "properties": {"repobilityId": "8de27ca06da5cee0", "scanner": "scanner-primary", "fingerprint": "2e4c069d05c442ab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fd3c35bf66f077b1", "level": "note", "message": {"text": "Legacy-named symbol `ugc_script_ingest_v1` in supabase/functions/author-cinematic-script/index.ts:426"}, "properties": {"repobilityId": "f6ed0f991bdbd404", "scanner": "scanner-primary", "fingerprint": "fd3c35bf66f077b1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-840ccc8feada02d4", "level": "note", "message": {"text": "Legacy-named symbol `sequence_animatic_graph_v2` in supabase/functions/get-sequence-animatic-state/index.ts:287"}, "properties": {"repobilityId": "f7b430ebbff30343", "scanner": "scanner-primary", "fingerprint": "840ccc8feada02d4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a9c75dddb5c1ca96", "level": "note", "message": {"text": "Legacy-named symbol `continuity_graph_v2` in supabase/functions/ensure-sequence-animatic-block-workflows/index.ts:120"}, "properties": {"repobilityId": "4abed6919b3ba4c2", "scanner": "scanner-primary", "fingerprint": "a9c75dddb5c1ca96", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b8a9b1a7a381f89b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/extract-source-url/index.ts:52"}, "properties": {"repobilityId": "7d8aaf349e2334ed", "scanner": "scanner-primary", "fingerprint": "b8a9b1a7a381f89b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9c9430a1549c9427", "level": "note", "message": {"text": "Legacy-named symbol `ugc_script_ingest_v1` in supabase/functions/repair-cinematic-script/index.ts:246"}, "properties": {"repobilityId": "81c87247f3803045", "scanner": "scanner-primary", "fingerprint": "9c9430a1549c9427", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f4df06eacc24ab3c", "level": "note", "message": {"text": "Legacy-named symbol `continuity_graph_v2` in supabase/functions/ensure-sequence-animatic-continuity-asset-workflow/index.ts:150"}, "properties": {"repobilityId": "d2ce3ae0abce96a5", "scanner": "scanner-primary", "fingerprint": "f4df06eacc24ab3c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f8e22a2308ecc5d9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/poll-mesh-generation/index.ts:455"}, "properties": {"repobilityId": "e4e4dabd0fa9a4e3", "scanner": "scanner-primary", "fingerprint": "f8e22a2308ecc5d9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-73802e4458a7361c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/join-waitlist/index.ts:170"}, "properties": {"repobilityId": "da4da68490e61bea", "scanner": "scanner-primary", "fingerprint": "73802e4458a7361c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c510ecf80ae79878", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/stripe/create-subscription/index.ts:133"}, "properties": {"repobilityId": "6d06a471d0a2277d", "scanner": "scanner-primary", "fingerprint": "c510ecf80ae79878", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0d264d3dbfbe5a1d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/stripe/create-checkout-session/index.ts:114"}, "properties": {"repobilityId": "9187436ab65ff471", "scanner": "scanner-primary", "fingerprint": "0d264d3dbfbe5a1d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4a1675ffbd796447", "level": "note", "message": {"text": "Legacy-named symbol `sequence_animatic_keyframe_plan_v1` in supabase/functions/ensure-sequence-animatic-keyframe-workflows/index.ts:395"}, "properties": {"repobilityId": "ddfd211d6599e27e", "scanner": "scanner-primary", "fingerprint": "4a1675ffbd796447", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-800b7f6f7c4eb7ab", "level": "note", "message": {"text": "Legacy-named symbol `sequence_animatic_graph_v1` in supabase/functions/_shared/sequence-animatic-workflow-factory.ts:1"}, "properties": {"repobilityId": "2763e172019b293b", "scanner": "scanner-primary", "fingerprint": "800b7f6f7c4eb7ab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-04242dc221b59212", "level": "none", "message": {"text": "Commented-code block (6 lines) in supabase/functions/_shared/cinematics.ts:2237"}, "properties": {"repobilityId": "73500e72f5f8a1af", "scanner": "scanner-primary", "fingerprint": "04242dc221b59212", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0088b9bc095d76cf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/_shared/cinematics.ts:1768"}, "properties": {"repobilityId": "b5897bfec7a00f2c", "scanner": "scanner-primary", "fingerprint": "0088b9bc095d76cf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-732eaffcf308b447", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/_shared/openai.ts:416"}, "properties": {"repobilityId": "9c2a6535da3df850", "scanner": "scanner-primary", "fingerprint": "732eaffcf308b447", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-280888c052ae55d9", "level": "none", "message": {"text": "Commented-code block (8 lines) in supabase/functions/_shared/model-policy.ts:3"}, "properties": {"repobilityId": "5d2d54ce421e4478", "scanner": "scanner-primary", "fingerprint": "280888c052ae55d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-381fa2b964220be3", "level": "note", "message": {"text": "Legacy-named symbol `bounded_v1` in supabase/functions/_shared/world-build-placeholders.ts:149"}, "properties": {"repobilityId": "ceb4cf8c78c9d71f", "scanner": "scanner-primary", "fingerprint": "381fa2b964220be3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0778fc5753cef744", "level": "note", "message": {"text": "Legacy-named symbol `story_prompt_slim_v1` in src/core/generationWorkflow.test.ts:22"}, "properties": {"repobilityId": "9b9cf8808ba54a83", "scanner": "scanner-primary", "fingerprint": "0778fc5753cef744", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2b3fa5a8d1428c17", "level": "note", "message": {"text": "Legacy-named symbol `creative_screenplay_v1` in src/features/world-builder/WorldGraphPage.tsx:3918"}, "properties": {"repobilityId": "eda3a3d8bf896dad", "scanner": "scanner-primary", "fingerprint": "2b3fa5a8d1428c17", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-18fb5a46c6c369f1", "level": "note", "message": {"text": "Legacy-named symbol `onOpenLegacy` in src/features/world-builder/prompt/WorldPromptPanels.tsx:106"}, "properties": {"repobilityId": "2fc91aa6a78ea37b", "scanner": "scanner-primary", "fingerprint": "18fb5a46c6c369f1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-634b4bbe558faf55", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/features/world-builder/wiki/WorldOutputLibraryPanel.tsx:69"}, "properties": {"repobilityId": "f9e9390e2681de47", "scanner": "scanner-primary", "fingerprint": "634b4bbe558faf55", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-615979f2b7e41151", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/features/landing/waitlistClient.ts:45"}, "properties": {"repobilityId": "edbf3472bcc4a502", "scanner": "scanner-primary", "fingerprint": "615979f2b7e41151", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f849fc9a9bf21271", "level": "note", "message": {"text": "Legacy-named symbol `creative_screenplay_v1` in src/features/outputs/OutputsWorkspace.tsx:605"}, "properties": {"repobilityId": "4ddff8c6b8e9e6c8", "scanner": "scanner-primary", "fingerprint": "f849fc9a9bf21271", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6479ad207327c3bb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/features/outputs/OutputsWorkspace.tsx:1611"}, "properties": {"repobilityId": "64ba641030fe1e22", "scanner": "scanner-primary", "fingerprint": "6479ad207327c3bb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a26fe6b3e27ddcad", "level": "note", "message": {"text": "Legacy-named symbol `sequence_animatic_continuity_lint_v1` in src/domain/sequenceAnimaticContinuityLint.ts:28"}, "properties": {"repobilityId": "e2e4b5b04bac5492", "scanner": "scanner-primary", "fingerprint": "a26fe6b3e27ddcad", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-40ecfab1cddb2042", "level": "note", "message": {"text": "Legacy-named symbol `constrained_delaunay_v1` in src/domain/environmentAssemblyCompiler.ts:1329"}, "properties": {"repobilityId": "a6a09666ee51b330", "scanner": "scanner-primary", "fingerprint": "40ecfab1cddb2042", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cd039c9b6b45bfa6", "level": "note", "message": {"text": "Legacy-named symbol `bounded_v1` in src/domain/graphcore.ts:1353"}, "properties": {"repobilityId": "e1fa10ce6d2cf6d4", "scanner": "scanner-primary", "fingerprint": "cd039c9b6b45bfa6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a9571b2bf11b9d2e", "level": "note", "message": {"text": "Legacy-named symbol `cinematic_v2` in src/domain/outputSkills.ts:368"}, "properties": {"repobilityId": "c4965cb285e15b6a", "scanner": "scanner-primary", "fingerprint": "a9571b2bf11b9d2e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-066fd0740bd2d195", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/domain/referenceSheetIconCrop.ts:346"}, "properties": {"repobilityId": "8d1607f5692bca00", "scanner": "scanner-primary", "fingerprint": "066fd0740bd2d195", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e6965233712c5c21", "level": "note", "message": {"text": "Legacy-named symbol `sequence_animatic_graph_v2` in src/domain/sequenceAnimaticStreamedShotReady.ts:3"}, "properties": {"repobilityId": "1e08736bc9257ffa", "scanner": "scanner-primary", "fingerprint": "e6965233712c5c21", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a96fcfccf4dcc44c", "level": "note", "message": {"text": "Legacy-named symbol `story_script_ingest_v1` in src/domain/presetCatalog.ts:1632"}, "properties": {"repobilityId": "a90db0ce41f7499b", "scanner": "scanner-primary", "fingerprint": "a96fcfccf4dcc44c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-74b1ca198c265af6", "level": "note", "message": {"text": "Legacy-named symbol `story_script_ingest_v1` in src/domain/cinematicCreativeScript.ts:497"}, "properties": {"repobilityId": "1c77ac216abd54dd", "scanner": "scanner-primary", "fingerprint": "74b1ca198c265af6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-09e28d322c081145", "level": "note", "message": {"text": "Legacy-named symbol `sequence_animatic_visual_reference_plan_v1` in src/domain/sequenceAnimaticVisualReferencePlan.ts:6"}, "properties": {"repobilityId": "2ecbfe0f335c30de", "scanner": "scanner-primary", "fingerprint": "09e28d322c081145", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-12b6988abeb32687", "level": "note", "message": {"text": "Legacy-named symbol `json_shot_authoring_v1` in src/domain/cinematics.ts:125"}, "properties": {"repobilityId": "8645ead67ccccb9a", "scanner": "scanner-primary", "fingerprint": "12b6988abeb32687", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ea50ede3e45a413e", "level": "note", "message": {"text": "Legacy-named symbol `continuity_graph_v2` in src/domain/outputWorkflowNodeContracts.ts:81"}, "properties": {"repobilityId": "621993c65065817c", "scanner": "scanner-primary", "fingerprint": "ea50ede3e45a413e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4091e02d6871525a", "level": "note", "message": {"text": "Legacy-named symbol `sequence_animatic_graph_v1` in src/domain/outputWorkflow.ts:63"}, "properties": {"repobilityId": "c016d4adad165463", "scanner": "scanner-primary", "fingerprint": "4091e02d6871525a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-76826fca98bae692", "level": "note", "message": {"text": "Legacy-named symbol `scene_graph_assignment_v1` in src/domain/outputWorkflow.test.ts:1187"}, "properties": {"repobilityId": "5546fb04a3a41a35", "scanner": "scanner-primary", "fingerprint": "76826fca98bae692", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-84a59f1c171c4108", "level": "note", "message": {"text": "Legacy-named symbol `ugc_script_ingest_v1` in src/domain/cinematics.test.ts:574"}, "properties": {"repobilityId": "c34b1061f4078e59", "scanner": "scanner-primary", "fingerprint": "84a59f1c171c4108", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-41032ae79add78e8", "level": "note", "message": {"text": "Legacy-named symbol `story_script_ingest_v1` in src/domain/storyPromptBuilders.ts:11"}, "properties": {"repobilityId": "dec090908315dc69", "scanner": "scanner-primary", "fingerprint": "41032ae79add78e8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-130266f2639b6aeb", "level": "note", "message": {"text": "Legacy-named symbol `profile_compose_v2` in src/domain/environmentAssembly.ts:51"}, "properties": {"repobilityId": "29b4c6457adedc42", "scanner": "scanner-primary", "fingerprint": "130266f2639b6aeb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6076ff578427aee0", "level": "note", "message": {"text": "Legacy-named symbol `story_script_ingest_v1` in src/domain/storyPromptBuilders.test.ts:13"}, "properties": {"repobilityId": "458047fdd7181f17", "scanner": "scanner-primary", "fingerprint": "6076ff578427aee0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2eafc3188c36bb02", "level": "none", "message": {"text": "3 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "bd934ba112b02ffa", "scanner": "scanner-primary", "fingerprint": "2eafc3188c36bb02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}