{"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-64aa4cc0cca694fe", "name": "Possibly dead Python function: cmd_create", "shortDescription": {"text": "Possibly dead Python function: cmd_create"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76ae6ef4833f4e32", "name": "Possibly dead Python function: cmd_release", "shortDescription": {"text": "Possibly dead Python function: cmd_release"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9bb5118a8fe67c8c", "name": "Possibly dead Python function: cmd_enqueue", "shortDescription": {"text": "Possibly dead Python function: cmd_enqueue"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea12a1b7c8120097", "name": "Possibly dead Python function: cmd_list", "shortDescription": {"text": "Possibly dead Python function: cmd_list"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-84fdd92bee6a32f5", "name": "Possibly dead Python function: cmd_remove", "shortDescription": {"text": "Possibly dead Python function: cmd_remove"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-220f76da3040b124", "name": "Possibly dead Python function: cmd_process", "shortDescription": {"text": "Possibly dead Python function: cmd_process"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5663481d87122cc8", "name": "Possibly dead Python function: cmd_dispatch_next", "shortDescription": {"text": "Possibly dead Python function: cmd_dispatch_next"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7577db4340e0b612", "name": "Possibly dead Python function: cmd_inbox", "shortDescription": {"text": "Possibly dead Python function: cmd_inbox"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-96b7306aa71bdd08", "name": "Possibly dead Python function: cmd_spawn", "shortDescription": {"text": "Possibly dead Python function: cmd_spawn"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-46c655550b9c89c4", "name": "Possibly dead Python function: cmd_kill", "shortDescription": {"text": "Possibly dead Python function: cmd_kill"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bfece908299ff558", "name": "Possibly dead Python function: cmd_triage_cycle", "shortDescription": {"text": "Possibly dead Python function: cmd_triage_cycle"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7488cfca6b8b46b7", "name": "Possibly dead Python function: cmd_go_to_work", "shortDescription": {"text": "Possibly dead Python function: cmd_go_to_work"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e474ba92d0139208", "name": "Possibly dead Python function: cmd_leave_for_work", "shortDescription": {"text": "Possibly dead Python function: cmd_leave_for_work"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-56cedbf9f311d48b", "name": "Possibly dead Python function: atomic_write_text", "shortDescription": {"text": "Possibly dead Python function: atomic_write_text"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eb336bfd7ff358a5", "name": "Possibly dead Python function: cmd_backfill", "shortDescription": {"text": "Possibly dead Python function: cmd_backfill"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de3e9d6772cf9a2f", "name": "Possibly dead Python function: cmd_create", "shortDescription": {"text": "Possibly dead Python function: cmd_create"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7c4abc6f2e45dda8", "name": "Possibly dead Python function: shell_kind_for", "shortDescription": {"text": "Possibly dead Python function: shell_kind_for"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-45735e2ff651d05a", "name": "Possibly dead Python function: cmd_preview", "shortDescription": {"text": "Possibly dead Python function: cmd_preview"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e66c058ba0c6528b", "name": "Possibly dead Python function: cmd_launch", "shortDescription": {"text": "Possibly dead Python function: cmd_launch"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0423ebbe6c8a29b0", "name": "Possibly dead Python function: cmd_close_preview", "shortDescription": {"text": "Possibly dead Python function: cmd_close_preview"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-31a1fcd45d63ffe0", "name": "Possibly dead Python function: cmd_summary", "shortDescription": {"text": "Possibly dead Python function: cmd_summary"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8937915ae4222281", "name": "Possibly dead Python function: cmd_census_record", "shortDescription": {"text": "Possibly dead Python function: cmd_census_record"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ce4dc1df2f15b827", "name": "Possibly dead Python function: cmd_census", "shortDescription": {"text": "Possibly dead Python function: cmd_census"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b35853a2f60ce384", "name": "Possibly dead Python function: repl", "shortDescription": {"text": "Possibly dead Python function: repl"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9285a88196d8b8cf", "name": "Possibly dead Python function: cmd_list", "shortDescription": {"text": "Possibly dead Python function: cmd_list"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-946906f183175383", "name": "Possibly dead Python function: cmd_add", "shortDescription": {"text": "Possibly dead Python function: cmd_add"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a34b0b902d98a7c1", "name": "Possibly dead Python function: cmd_update", "shortDescription": {"text": "Possibly dead Python function: cmd_update"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2bc9b570604ee8a5", "name": "Possibly dead Python function: cmd_enable", "shortDescription": {"text": "Possibly dead Python function: cmd_enable"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f9822c5911f33a7e", "name": "Possibly dead Python function: cmd_disable", "shortDescription": {"text": "Possibly dead Python function: cmd_disable"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e066691601852931", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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-548bfbab350dca45", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-186750b0893fbad1", "name": "Very large file: scripts/check_agent_docs.py (1881 lines)", "shortDescription": {"text": "Very large file: scripts/check_agent_docs.py (1881 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-46777ba02eed918d", "name": "Very large file: app/brokers/kis/kis_client.py (1517 lines)", "shortDescription": {"text": "Very large file: app/brokers/kis/kis_client.py (1517 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 783 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 162 placeholder/mock markers across 48 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-b384ebce47b0b54f", "name": "Agent authority lacks a verifier contract: CURSOR.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: CURSOR.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6e726f53f3d09963", "name": "Agent authority lacks a verifier contract: docs/agent_bootstrap/claude.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/agent_bootstrap/claude.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-56b4d6bdb8f2b1b5", "name": "Agent authority lacks a verifier contract: agents/research_agent/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: agents/research_agent/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c3fc127a62b9a182", "name": "Agent authority lacks a verifier contract: agents/timeline_agent/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: agents/timeline_agent/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ecdc36e6a6357743", "name": "Agent authority lacks a verifier contract: agents/owner/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: agents/owner/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9f833a189cf481c2", "name": "Agent authority lacks a verifier contract: agents/backend_engineer/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: agents/backend_engineer/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-909eb64265cce1c7", "name": "Agent authority lacks a verifier contract: .codex/hooks.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .codex/hooks.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-57f2c07721e61ff5", "name": "Agent authority lacks a verifier contract: skills/taskset-dispatch/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/taskset-dispatch/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1ac19580ad9fddc3", "name": "Agent authority lacks a verifier contract: skills/scm-steward/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: skills/scm-steward/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0286c86d20abaea5", "name": "Commented-code block (5 lines) in tests/integration/test_paper_scenario_matrix.py:273", "shortDescription": {"text": "Commented-code block (5 lines) in tests/integration/test_paper_scenario_matrix.py:273"}, "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-7f90d0b092a53aa3", "name": "Legacy-named symbol `test_logout_symbol_modes_is_independent_copy` in tests/unit/test_state_logout.py:117", "shortDescription": {"text": "Legacy-named symbol `test_logout_symbol_modes_is_independent_copy` in tests/unit/test_state_logout.py:117"}, "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-797997757524ec7a", "name": "Commented-code block (6 lines) in tests/unit/test_safety_critical_boundaries.py:110", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/test_safety_critical_boundaries.py:110"}, "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-85618b79893cd29b", "name": "Commented-code block (5 lines) in tests/unit/test_boundary_conditions.py:196", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_boundary_conditions.py:196"}, "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-fd5e222b753bfaff", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/report_upstream_bug.py:143", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/report_upstream_bug.py:143"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6f35fc2a3f595b74", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/task_api.py:115", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/task_api.py:115"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d456f7ab9fc5ec9d", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/cycle_gate.py:143", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/cycle_gate.py:143"}, "fullDescription": {"text": "`subprocess.check_output(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ab4e307ce28eacc3", "name": "Commented-code block (5 lines) in scripts/taskset_work_gate.py:16", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/taskset_work_gate.py:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2120260f89f6cb08", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/auto_merge.py:53", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/auto_merge.py:53"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a6d9f35b9a73b194", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/review_pr.py:40", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/review_pr.py:40"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9f12809e5ecefdc8", "name": "Commented-code block (5 lines) in scripts/agent_terminal.py:145", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/agent_terminal.py:145"}, "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-56f345ec3a3c528f", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/install_scheduler_win.py:48", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/install_scheduler_win.py:48"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-53e976f5dfcbd387", "name": "Legacy-named symbol `test_apply_skill_patch_adds_guardrail_with_backup` in scripts/test_agent_retro.py:227", "shortDescription": {"text": "Legacy-named symbol `test_apply_skill_patch_adds_guardrail_with_backup` in scripts/test_agent_retro.py:227"}, "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-93f0b108f73020b8", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/wave_dispatcher.py:498", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/wave_dispatcher.py:498"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-736f4ec37bfa7f08", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/query_tasks.py:175", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/query_tasks.py:175"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-779aec2b87eba66d", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/wait_and_market_test.py:24", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/wait_and_market_test.py:24"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-55f7fc9da7764a6f", "name": "Legacy-named symbol `multi_agent_v1` in scripts/check_agent_docs.py:86", "shortDescription": {"text": "Legacy-named symbol `multi_agent_v1` in scripts/check_agent_docs.py:86"}, "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-23ab1c3e7a92f204", "name": "Commented-code block (5 lines) in scripts/check_agent_docs.py:1061", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/check_agent_docs.py:1061"}, "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-c6d31e2a21ed36ad", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/taskset_dispatcher.py:240", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/taskset_dispatcher.py:240"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7e6dbbadc2742046", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/auto_runner.py:253", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/auto_runner.py:253"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-69e9de61bf4289a9", "name": "Legacy-named symbol `multi_agent_v1` in scripts/codex_subagent_bridge.py:6", "shortDescription": {"text": "Legacy-named symbol `multi_agent_v1` in scripts/codex_subagent_bridge.py: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-e0625f31650d25fa", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/stop_hook_owner_governance.py:31", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/stop_hook_owner_governance.py:31"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5ba1ef7e129e352d", "name": "Legacy-named symbol `multi_agent_v1` in scripts/test_codex_subagent_bridge.py:28", "shortDescription": {"text": "Legacy-named symbol `multi_agent_v1` in scripts/test_codex_subagent_bridge.py: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-627d6b566a8cb4d0", "name": "Legacy-named symbol `multi_agent_v1` in scripts/providers/codex.py:7", "shortDescription": {"text": "Legacy-named symbol `multi_agent_v1` in scripts/providers/codex.py:7"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8689f4398f4f62ee", "name": "Commented-code block (5 lines) in scripts/providers/claude.py:52", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/providers/claude.py:52"}, "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-77303df8a9f9d363", "name": "Commented-code block (6 lines) in app/risk/safety_checker.py:69", "shortDescription": {"text": "Commented-code block (6 lines) in app/risk/safety_checker.py:69"}, "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-504694e8642985d4", "name": "Commented-code block (5 lines) in web/src/app/analysis/page.tsx:32", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/app/analysis/page.tsx:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d45bc9b39063c6a2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/lib/api.ts:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/lib/api.ts:90"}, "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-ed330edbb780654c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/lib/csrf.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/lib/csrf.ts:27"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3a094b54c51fee35", "name": "Commented-code block (5 lines) in web/e2e/phase4.spec.ts:232", "shortDescription": {"text": "Commented-code block (5 lines) in web/e2e/phase4.spec.ts:232"}, "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-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/task_claim_dispatcher.py:main, scripts/agent_instance_registry.py:main, scripts/agent_terminal.py:main, scripts/taskset_dispatcher.py:main\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/agent_instance_registry.py:build_instance_record, scripts/agent_instance_registry.py:record_claim_instance\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/generate_report_views.py:parse_frontmatter, scripts/query_reports.py:parse_frontmatter, scripts/generate_views.py:parse_frontmatter\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02525d39071dd2c7", "name": "Near-duplicate function bodies in 5 places", "shortDescription": {"text": "Near-duplicate function bodies in 5 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/collab_log.py:main, scripts/subagent_council.py:main, scripts/agent_live_session.py:main, scripts/codex_subagent_bridge.py:main\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e9b788eb97dba2ae", "name": "Dangling fetch: GET /api/auth/me (web/src/lib/csrf.ts:27)", "shortDescription": {"text": "Dangling fetch: GET /api/auth/me (web/src/lib/csrf.ts:27)"}, "fullDescription": {"text": "`web/src/lib/csrf.ts:27` calls `GET /api/auth/me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4756b4c4da7d2088", "name": "Unused endpoint: GET /api/health", "shortDescription": {"text": "Unused endpoint: GET /api/health"}, "fullDescription": {"text": "`app/api/main.py` declares `GET /api/health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4e5cc88a9fae537a", "name": "Unused endpoint: GET /api/fills/recent", "shortDescription": {"text": "Unused endpoint: GET /api/fills/recent"}, "fullDescription": {"text": "`app/api/routers/trade.py` declares `GET /api/fills/recent` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-543ed437b6bde3bb", "name": "Unused endpoint: GET /api/conditions", "shortDescription": {"text": "Unused endpoint: GET /api/conditions"}, "fullDescription": {"text": "`app/api/routers/trade.py` declares `GET /api/conditions` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-32ad19b4c239d621", "name": "Unused endpoint: GET /api/orders", "shortDescription": {"text": "Unused endpoint: GET /api/orders"}, "fullDescription": {"text": "`app/api/routers/trade.py` declares `GET /api/orders` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-741cc96ec7f810f2", "name": "Unused endpoint: POST /api/conditions", "shortDescription": {"text": "Unused endpoint: POST /api/conditions"}, "fullDescription": {"text": "`app/api/routers/trade.py` declares `POST /api/conditions` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-32af5edd087acbbc", "name": "Unused endpoint: GET /api/events", "shortDescription": {"text": "Unused endpoint: GET /api/events"}, "fullDescription": {"text": "`app/api/routers/stream.py` declares `GET /api/events` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-200ab2e98a288506", "name": "Unused endpoint: POST /api/login", "shortDescription": {"text": "Unused endpoint: POST /api/login"}, "fullDescription": {"text": "`app/api/routers/auth.py` declares `POST /api/login` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a10936f69cf3bbb4", "name": "Unused endpoint: POST /api/logout", "shortDescription": {"text": "Unused endpoint: POST /api/logout"}, "fullDescription": {"text": "`app/api/routers/auth.py` declares `POST /api/logout` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c1545494ab6166c", "name": "Unused endpoint: GET /api/me", "shortDescription": {"text": "Unused endpoint: GET /api/me"}, "fullDescription": {"text": "`app/api/routers/auth.py` declares `GET /api/me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-963710f42a2c8219", "name": "Unused endpoint: GET /api/status", "shortDescription": {"text": "Unused endpoint: GET /api/status"}, "fullDescription": {"text": "`app/api/routers/engine.py` declares `GET /api/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c4ac4a5eb803d93", "name": "Unused endpoint: POST /api/kill-switch", "shortDescription": {"text": "Unused endpoint: POST /api/kill-switch"}, "fullDescription": {"text": "`app/api/routers/engine.py` declares `POST /api/kill-switch` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-69613e6f42c1b3cd", "name": "Unused endpoint: POST /api/auto-trading", "shortDescription": {"text": "Unused endpoint: POST /api/auto-trading"}, "fullDescription": {"text": "`app/api/routers/engine.py` declares `POST /api/auto-trading` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bc16daf9a1449a16", "name": "Unused endpoint: POST /api/run-once", "shortDescription": {"text": "Unused endpoint: POST /api/run-once"}, "fullDescription": {"text": "`app/api/routers/engine.py` declares `POST /api/run-once` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5775da67d19729a4", "name": "Unused endpoint: GET /api/list", "shortDescription": {"text": "Unused endpoint: GET /api/list"}, "fullDescription": {"text": "`app/api/routers/agents.py` declares `GET /api/list` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8fc7c3b9f2c75416", "name": "Unused endpoint: POST /api/ask", "shortDescription": {"text": "Unused endpoint: POST /api/ask"}, "fullDescription": {"text": "`app/api/routers/agents.py` declares `POST /api/ask` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c7b76dd5a4ccff48", "name": "Unused endpoint: POST /api/ic/run", "shortDescription": {"text": "Unused endpoint: POST /api/ic/run"}, "fullDescription": {"text": "`app/api/routers/agents.py` declares `POST /api/ic/run` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e56b2a8c26a23585", "name": "Unused endpoint: GET /api/ic/stream/{job_id}", "shortDescription": {"text": "Unused endpoint: GET /api/ic/stream/{job_id}"}, "fullDescription": {"text": "`app/api/routers/agents.py` declares `GET /api/ic/stream/{job_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d35230d5b024f1ee", "name": "Unused endpoint: GET /api/ic/decisions", "shortDescription": {"text": "Unused endpoint: GET /api/ic/decisions"}, "fullDescription": {"text": "`app/api/routers/agents.py` declares `GET /api/ic/decisions` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-124dbea1e62f3636", "name": "Unused endpoint: GET /api/indices", "shortDescription": {"text": "Unused endpoint: GET /api/indices"}, "fullDescription": {"text": "`app/api/routers/market.py` declares `GET /api/indices` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-19c8531eb02471bd", "name": "Unused endpoint: GET /api/watchlist", "shortDescription": {"text": "Unused endpoint: GET /api/watchlist"}, "fullDescription": {"text": "`app/api/routers/market.py` declares `GET /api/watchlist` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dafe621a0007df6a", "name": "Unused endpoint: GET /api/price", "shortDescription": {"text": "Unused endpoint: GET /api/price"}, "fullDescription": {"text": "`app/api/routers/market.py` declares `GET /api/price` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9d05516bfe5d444c", "name": "Unused endpoint: GET /api/fundamental", "shortDescription": {"text": "Unused endpoint: GET /api/fundamental"}, "fullDescription": {"text": "`app/api/routers/market.py` declares `GET /api/fundamental` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ce33115b242a399d", "name": "Unused endpoint: GET /api/order-book", "shortDescription": {"text": "Unused endpoint: GET /api/order-book"}, "fullDescription": {"text": "`app/api/routers/market.py` declares `GET /api/order-book` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-472c2ab6e3d1920f", "name": "Unused endpoint: GET /api/intraday", "shortDescription": {"text": "Unused endpoint: GET /api/intraday"}, "fullDescription": {"text": "`app/api/routers/market.py` declares `GET /api/intraday` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e2103dbc81e9235c", "name": "Unused endpoint: GET /api/sectors", "shortDescription": {"text": "Unused endpoint: GET /api/sectors"}, "fullDescription": {"text": "`app/api/routers/market.py` declares `GET /api/sectors` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-20d595d1958d89d1", "name": "Unused endpoint: GET /api/disclosures", "shortDescription": {"text": "Unused endpoint: GET /api/disclosures"}, "fullDescription": {"text": "`app/api/routers/market.py` declares `GET /api/disclosures` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-54f5f1c476fe6637", "name": "Unused endpoint: PUT /risk-limits", "shortDescription": {"text": "Unused endpoint: PUT /risk-limits"}, "fullDescription": {"text": "`app/api/routers/settings.py` declares `PUT /risk-limits` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fb1bcf8fe8c24bf9", "name": "Unused endpoint: GET /api/holdings", "shortDescription": {"text": "Unused endpoint: GET /api/holdings"}, "fullDescription": {"text": "`app/api/routers/portfolio.py` declares `GET /api/holdings` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0019d9a61489f333", "name": "Unused endpoint: GET /api/kpis", "shortDescription": {"text": "Unused endpoint: GET /api/kpis"}, "fullDescription": {"text": "`app/api/routers/portfolio.py` declares `GET /api/kpis` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f205af802af70a7e", "name": "Unused endpoint: GET /api/asset-curve", "shortDescription": {"text": "Unused endpoint: GET /api/asset-curve"}, "fullDescription": {"text": "`app/api/routers/portfolio.py` declares `GET /api/asset-curve` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-860e0d487eaf3337", "name": "Unused endpoint: GET /api/allocation-gap", "shortDescription": {"text": "Unused endpoint: GET /api/allocation-gap"}, "fullDescription": {"text": "`app/api/routers/portfolio.py` declares `GET /api/allocation-gap` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7adf44d4a4ddc1dc", "name": "Unused endpoint: GET /api/attribution", "shortDescription": {"text": "Unused endpoint: GET /api/attribution"}, "fullDescription": {"text": "`app/api/routers/analysis.py` declares `GET /api/attribution` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ebc675afbca38e27", "name": "Unused endpoint: GET /api/retro", "shortDescription": {"text": "Unused endpoint: GET /api/retro"}, "fullDescription": {"text": "`app/api/routers/analysis.py` declares `GET /api/retro` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e205bb1615da063", "name": "Unused endpoint: GET /api/daily-pnl", "shortDescription": {"text": "Unused endpoint: GET /api/daily-pnl"}, "fullDescription": {"text": "`app/api/routers/analysis.py` declares `GET /api/daily-pnl` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b0a322b00d4bf653", "name": "Unused endpoint: GET /api/backtest", "shortDescription": {"text": "Unused endpoint: GET /api/backtest"}, "fullDescription": {"text": "`app/api/routers/analysis.py` declares `GET /api/backtest` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cc1d7672453836a5", "name": "Unused endpoint: GET /api/var", "shortDescription": {"text": "Unused endpoint: GET /api/var"}, "fullDescription": {"text": "`app/api/routers/analysis.py` declares `GET /api/var` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3109a4c85e6b1312", "name": "Unused endpoint: GET /api/scenario", "shortDescription": {"text": "Unused endpoint: GET /api/scenario"}, "fullDescription": {"text": "`app/api/routers/analysis.py` declares `GET /api/scenario` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b643e3474be0c320", "name": "Unused endpoint: GET /api/whatif", "shortDescription": {"text": "Unused endpoint: GET /api/whatif"}, "fullDescription": {"text": "`app/api/routers/analysis.py` declares `GET /api/whatif` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/23191"}, "properties": {"repository": "ycpiglet/autofolio", "repoUrl": "https://github.com/ycpiglet/autofolio", "branch": "main"}, "results": [{"ruleId": "scanner-64aa4cc0cca694fe", "level": "note", "message": {"text": "Possibly dead Python function: cmd_create"}, "properties": {"repobilityId": "226974daa6d37fc8", "scanner": "scanner-primary", "fingerprint": "64aa4cc0cca694fe", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/task_claim_dispatcher.py:481"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-76ae6ef4833f4e32", "level": "note", "message": {"text": "Possibly dead Python function: cmd_release"}, "properties": {"repobilityId": "ba8ad5ab00e91ce9", "scanner": "scanner-primary", "fingerprint": "76ae6ef4833f4e32", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/task_claim_dispatcher.py:659"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9bb5118a8fe67c8c", "level": "note", "message": {"text": "Possibly dead Python function: cmd_enqueue"}, "properties": {"repobilityId": "5b700ca3308bd38a", "scanner": "scanner-primary", "fingerprint": "9bb5118a8fe67c8c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/merge_queue.py:542"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ea12a1b7c8120097", "level": "note", "message": {"text": "Possibly dead Python function: cmd_list"}, "properties": {"repobilityId": "bd09044da90857da", "scanner": "scanner-primary", "fingerprint": "ea12a1b7c8120097", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/merge_queue.py:564"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-84fdd92bee6a32f5", "level": "note", "message": {"text": "Possibly dead Python function: cmd_remove"}, "properties": {"repobilityId": "d39b296d61583f94", "scanner": "scanner-primary", "fingerprint": "84fdd92bee6a32f5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/merge_queue.py:589"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-220f76da3040b124", "level": "note", "message": {"text": "Possibly dead Python function: cmd_process"}, "properties": {"repobilityId": "4f3eb4c3f146beb8", "scanner": "scanner-primary", "fingerprint": "220f76da3040b124", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/merge_queue.py:604"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5663481d87122cc8", "level": "note", "message": {"text": "Possibly dead Python function: cmd_dispatch_next"}, "properties": {"repobilityId": "b5905a18bc7be92e", "scanner": "scanner-primary", "fingerprint": "5663481d87122cc8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/agent_orchestrator.py:395"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7577db4340e0b612", "level": "note", "message": {"text": "Possibly dead Python function: cmd_inbox"}, "properties": {"repobilityId": "8ff51e6aba6e5603", "scanner": "scanner-primary", "fingerprint": "7577db4340e0b612", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/agent_orchestrator.py:498"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-96b7306aa71bdd08", "level": "note", "message": {"text": "Possibly dead Python function: cmd_spawn"}, "properties": {"repobilityId": "bed3126a2d76cd20", "scanner": "scanner-primary", "fingerprint": "96b7306aa71bdd08", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/agent_orchestrator.py:509"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-46c655550b9c89c4", "level": "note", "message": {"text": "Possibly dead Python function: cmd_kill"}, "properties": {"repobilityId": "f62b40ffe953ba66", "scanner": "scanner-primary", "fingerprint": "46c655550b9c89c4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/agent_orchestrator.py:554"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bfece908299ff558", "level": "note", "message": {"text": "Possibly dead Python function: cmd_triage_cycle"}, "properties": {"repobilityId": "1ecf38ed6c10f210", "scanner": "scanner-primary", "fingerprint": "bfece908299ff558", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/agent_orchestrator.py:817"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7488cfca6b8b46b7", "level": "note", "message": {"text": "Possibly dead Python function: cmd_go_to_work"}, "properties": {"repobilityId": "176ec1f11c7e0d75", "scanner": "scanner-primary", "fingerprint": "7488cfca6b8b46b7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/agent_orchestrator.py:853"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e474ba92d0139208", "level": "note", "message": {"text": "Possibly dead Python function: cmd_leave_for_work"}, "properties": {"repobilityId": "a37e108dd28821c8", "scanner": "scanner-primary", "fingerprint": "e474ba92d0139208", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/agent_orchestrator.py:872"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-56cedbf9f311d48b", "level": "note", "message": {"text": "Possibly dead Python function: atomic_write_text"}, "properties": {"repobilityId": "5544232bd9af0f1e", "scanner": "scanner-primary", "fingerprint": "56cedbf9f311d48b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/agent_worker.py:197"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eb336bfd7ff358a5", "level": "note", "message": {"text": "Possibly dead Python function: cmd_backfill"}, "properties": {"repobilityId": "75b917fa5e4c999e", "scanner": "scanner-primary", "fingerprint": "eb336bfd7ff358a5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/task_identity.py:245"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-de3e9d6772cf9a2f", "level": "note", "message": {"text": "Possibly dead Python function: cmd_create"}, "properties": {"repobilityId": "226974daa6d37fc8", "scanner": "scanner-primary", "fingerprint": "de3e9d6772cf9a2f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/task_identity.py:259"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7c4abc6f2e45dda8", "level": "note", "message": {"text": "Possibly dead Python function: shell_kind_for"}, "properties": {"repobilityId": "e0c1085b0c9d009f", "scanner": "scanner-primary", "fingerprint": "7c4abc6f2e45dda8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/agent_terminal.py:182"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-45735e2ff651d05a", "level": "note", "message": {"text": "Possibly dead Python function: cmd_preview"}, "properties": {"repobilityId": "c638ab65476e8a52", "scanner": "scanner-primary", "fingerprint": "45735e2ff651d05a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/agent_terminal.py:523"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e66c058ba0c6528b", "level": "note", "message": {"text": "Possibly dead Python function: cmd_launch"}, "properties": {"repobilityId": "95846c7d174697a3", "scanner": "scanner-primary", "fingerprint": "e66c058ba0c6528b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/agent_terminal.py:549"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0423ebbe6c8a29b0", "level": "note", "message": {"text": "Possibly dead Python function: cmd_close_preview"}, "properties": {"repobilityId": "6d8f14f6886ce40e", "scanner": "scanner-primary", "fingerprint": "0423ebbe6c8a29b0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/agent_terminal.py:590"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-31a1fcd45d63ffe0", "level": "note", "message": {"text": "Possibly dead Python function: cmd_summary"}, "properties": {"repobilityId": "6926d757078f2bcb", "scanner": "scanner-primary", "fingerprint": "31a1fcd45d63ffe0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/pane_event_log.py:290"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8937915ae4222281", "level": "note", "message": {"text": "Possibly dead Python function: cmd_census_record"}, "properties": {"repobilityId": "515b2e1279ca2d8f", "scanner": "scanner-primary", "fingerprint": "8937915ae4222281", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/pane_event_log.py:296"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ce4dc1df2f15b827", "level": "note", "message": {"text": "Possibly dead Python function: cmd_census"}, "properties": {"repobilityId": "2cdca9ba8c7a2242", "scanner": "scanner-primary", "fingerprint": "ce4dc1df2f15b827", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/pane_event_log.py:316"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b35853a2f60ce384", "level": "note", "message": {"text": "Possibly dead Python function: repl"}, "properties": {"repobilityId": "6f5d3779bbb8be8b", "scanner": "scanner-primary", "fingerprint": "b35853a2f60ce384", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/query_tasks.py:158"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9285a88196d8b8cf", "level": "note", "message": {"text": "Possibly dead Python function: cmd_list"}, "properties": {"repobilityId": "bd09044da90857da", "scanner": "scanner-primary", "fingerprint": "9285a88196d8b8cf", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/schedule.py:151"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-946906f183175383", "level": "note", "message": {"text": "Possibly dead Python function: cmd_add"}, "properties": {"repobilityId": "3b364c25c0f2804a", "scanner": "scanner-primary", "fingerprint": "946906f183175383", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/schedule.py:163"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a34b0b902d98a7c1", "level": "note", "message": {"text": "Possibly dead Python function: cmd_update"}, "properties": {"repobilityId": "7277b67464eb4477", "scanner": "scanner-primary", "fingerprint": "a34b0b902d98a7c1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/schedule.py:182"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2bc9b570604ee8a5", "level": "note", "message": {"text": "Possibly dead Python function: cmd_enable"}, "properties": {"repobilityId": "ba51316dd1422030", "scanner": "scanner-primary", "fingerprint": "2bc9b570604ee8a5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/schedule.py:215"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f9822c5911f33a7e", "level": "note", "message": {"text": "Possibly dead Python function: cmd_disable"}, "properties": {"repobilityId": "c3735cb66a66100f", "scanner": "scanner-primary", "fingerprint": "f9822c5911f33a7e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/schedule.py:219"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-e066691601852931", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "f391052c9bfd7e8b", "scanner": "scanner-primary", "fingerprint": "e066691601852931", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "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-548bfbab350dca45", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "366c460ff93c5459", "scanner": "scanner-primary", "fingerprint": "548bfbab350dca45", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/frontend.yml"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-186750b0893fbad1", "level": "note", "message": {"text": "Very large file: scripts/check_agent_docs.py (1881 lines)"}, "properties": {"repobilityId": "ec21728b924aa97d", "scanner": "scanner-primary", "fingerprint": "186750b0893fbad1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-46777ba02eed918d", "level": "note", "message": {"text": "Very large file: app/brokers/kis/kis_client.py (1517 lines)"}, "properties": {"repobilityId": "090121c545d5e884", "scanner": "scanner-primary", "fingerprint": "46777ba02eed918d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "92879208c6eba6a1", "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": "3e708f28a7b41fbb", "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": "449a778fd9175457", "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": "6211264e3581c847", "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": "46e52c7cb334bb68", "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": "61c39f6a9f05e224", "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": "07b90e6cb6810497", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-b384ebce47b0b54f", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: CURSOR.md"}, "properties": {"repobilityId": "662260e489964519", "scanner": "scanner-primary", "fingerprint": "b384ebce47b0b54f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "agent_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CURSOR.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6e726f53f3d09963", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/agent_bootstrap/claude.md"}, "properties": {"repobilityId": "3210c0271e1bebd9", "scanner": "scanner-primary", "fingerprint": "6e726f53f3d09963", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/agent_bootstrap/claude.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-56b4d6bdb8f2b1b5", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: agents/research_agent/SKILL.md"}, "properties": {"repobilityId": "17c077430d2f8f5f", "scanner": "scanner-primary", "fingerprint": "56b4d6bdb8f2b1b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "agents/research_agent/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c3fc127a62b9a182", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: agents/timeline_agent/SKILL.md"}, "properties": {"repobilityId": "be003aaf20c7c24b", "scanner": "scanner-primary", "fingerprint": "c3fc127a62b9a182", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "agents/timeline_agent/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ecdc36e6a6357743", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: agents/owner/SKILL.md"}, "properties": {"repobilityId": "40179c8910a32e21", "scanner": "scanner-primary", "fingerprint": "ecdc36e6a6357743", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "agents/owner/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9f833a189cf481c2", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: agents/backend_engineer/SKILL.md"}, "properties": {"repobilityId": "ce35ac23ba9bb8a0", "scanner": "scanner-primary", "fingerprint": "9f833a189cf481c2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "agents/backend_engineer/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-909eb64265cce1c7", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .codex/hooks.json"}, "properties": {"repobilityId": "6befa6c7c9baca08", "scanner": "scanner-primary", "fingerprint": "909eb64265cce1c7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "codex_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".codex/hooks.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-57f2c07721e61ff5", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/taskset-dispatch/SKILL.md"}, "properties": {"repobilityId": "3d7fae86faf87a1e", "scanner": "scanner-primary", "fingerprint": "57f2c07721e61ff5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/taskset-dispatch/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1ac19580ad9fddc3", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: skills/scm-steward/SKILL.md"}, "properties": {"repobilityId": "e76a11dc4192950e", "scanner": "scanner-primary", "fingerprint": "1ac19580ad9fddc3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/scm-steward/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0286c86d20abaea5", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/integration/test_paper_scenario_matrix.py:273"}, "properties": {"repobilityId": "8435a256ad58fe6a", "scanner": "scanner-primary", "fingerprint": "0286c86d20abaea5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f90d0b092a53aa3", "level": "note", "message": {"text": "Legacy-named symbol `test_logout_symbol_modes_is_independent_copy` in tests/unit/test_state_logout.py:117"}, "properties": {"repobilityId": "eb4edf89c9b8dd25", "scanner": "scanner-primary", "fingerprint": "7f90d0b092a53aa3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-797997757524ec7a", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/test_safety_critical_boundaries.py:110"}, "properties": {"repobilityId": "0b0ebc3b7ccfca62", "scanner": "scanner-primary", "fingerprint": "797997757524ec7a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85618b79893cd29b", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_boundary_conditions.py:196"}, "properties": {"repobilityId": "d48c763036d4c7fa", "scanner": "scanner-primary", "fingerprint": "85618b79893cd29b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd5e222b753bfaff", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/report_upstream_bug.py:143"}, "properties": {"repobilityId": "9972470104a5b029", "scanner": "scanner-primary", "fingerprint": "fd5e222b753bfaff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6f35fc2a3f595b74", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/task_api.py:115"}, "properties": {"repobilityId": "7fb33415cc612893", "scanner": "scanner-primary", "fingerprint": "6f35fc2a3f595b74", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d456f7ab9fc5ec9d", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/cycle_gate.py:143"}, "properties": {"repobilityId": "3176e530ee21ebc6", "scanner": "scanner-primary", "fingerprint": "d456f7ab9fc5ec9d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ab4e307ce28eacc3", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/taskset_work_gate.py:16"}, "properties": {"repobilityId": "aabbc42562dfd150", "scanner": "scanner-primary", "fingerprint": "ab4e307ce28eacc3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2120260f89f6cb08", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/auto_merge.py:53"}, "properties": {"repobilityId": "086d7a164d2a32f1", "scanner": "scanner-primary", "fingerprint": "2120260f89f6cb08", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a6d9f35b9a73b194", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/review_pr.py:40"}, "properties": {"repobilityId": "95594968ea8f09ac", "scanner": "scanner-primary", "fingerprint": "a6d9f35b9a73b194", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9f12809e5ecefdc8", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/agent_terminal.py:145"}, "properties": {"repobilityId": "5a72598e872f6d80", "scanner": "scanner-primary", "fingerprint": "9f12809e5ecefdc8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56f345ec3a3c528f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/install_scheduler_win.py:48"}, "properties": {"repobilityId": "d0973289e56333ab", "scanner": "scanner-primary", "fingerprint": "56f345ec3a3c528f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-53e976f5dfcbd387", "level": "note", "message": {"text": "Legacy-named symbol `test_apply_skill_patch_adds_guardrail_with_backup` in scripts/test_agent_retro.py:227"}, "properties": {"repobilityId": "40014e0e01878a92", "scanner": "scanner-primary", "fingerprint": "53e976f5dfcbd387", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-93f0b108f73020b8", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/wave_dispatcher.py:498"}, "properties": {"repobilityId": "357e7dc1855e367d", "scanner": "scanner-primary", "fingerprint": "93f0b108f73020b8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-736f4ec37bfa7f08", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/query_tasks.py:175"}, "properties": {"repobilityId": "d40240f010c07c39", "scanner": "scanner-primary", "fingerprint": "736f4ec37bfa7f08", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-779aec2b87eba66d", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/wait_and_market_test.py:24"}, "properties": {"repobilityId": "230886760b3bcdd9", "scanner": "scanner-primary", "fingerprint": "779aec2b87eba66d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-55f7fc9da7764a6f", "level": "note", "message": {"text": "Legacy-named symbol `multi_agent_v1` in scripts/check_agent_docs.py:86"}, "properties": {"repobilityId": "7177a07598605158", "scanner": "scanner-primary", "fingerprint": "55f7fc9da7764a6f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-23ab1c3e7a92f204", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/check_agent_docs.py:1061"}, "properties": {"repobilityId": "a923fadb05df78ac", "scanner": "scanner-primary", "fingerprint": "23ab1c3e7a92f204", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6d31e2a21ed36ad", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/taskset_dispatcher.py:240"}, "properties": {"repobilityId": "53cb1e14fa13061d", "scanner": "scanner-primary", "fingerprint": "c6d31e2a21ed36ad", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7e6dbbadc2742046", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/auto_runner.py:253"}, "properties": {"repobilityId": "6f6fc7f3c6af90f9", "scanner": "scanner-primary", "fingerprint": "7e6dbbadc2742046", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-69e9de61bf4289a9", "level": "note", "message": {"text": "Legacy-named symbol `multi_agent_v1` in scripts/codex_subagent_bridge.py:6"}, "properties": {"repobilityId": "65cdcbd10af10eb8", "scanner": "scanner-primary", "fingerprint": "69e9de61bf4289a9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e0625f31650d25fa", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/stop_hook_owner_governance.py:31"}, "properties": {"repobilityId": "3939b27e27b71c67", "scanner": "scanner-primary", "fingerprint": "e0625f31650d25fa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5ba1ef7e129e352d", "level": "note", "message": {"text": "Legacy-named symbol `multi_agent_v1` in scripts/test_codex_subagent_bridge.py:28"}, "properties": {"repobilityId": "34fbd25b6f8deccc", "scanner": "scanner-primary", "fingerprint": "5ba1ef7e129e352d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-627d6b566a8cb4d0", "level": "note", "message": {"text": "Legacy-named symbol `multi_agent_v1` in scripts/providers/codex.py:7"}, "properties": {"repobilityId": "2974e716761a7d19", "scanner": "scanner-primary", "fingerprint": "627d6b566a8cb4d0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8689f4398f4f62ee", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/providers/claude.py:52"}, "properties": {"repobilityId": "e2dbdf650656aded", "scanner": "scanner-primary", "fingerprint": "8689f4398f4f62ee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-77303df8a9f9d363", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/risk/safety_checker.py:69"}, "properties": {"repobilityId": "18bf39233397f684", "scanner": "scanner-primary", "fingerprint": "77303df8a9f9d363", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-504694e8642985d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/app/analysis/page.tsx:32"}, "properties": {"repobilityId": "162fbbe0f55fae98", "scanner": "scanner-primary", "fingerprint": "504694e8642985d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d45bc9b39063c6a2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/lib/api.ts:90"}, "properties": {"repobilityId": "7afa4df9b4196394", "scanner": "scanner-primary", "fingerprint": "d45bc9b39063c6a2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ed330edbb780654c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/lib/csrf.ts:27"}, "properties": {"repobilityId": "7017ff0f7e35ca89", "scanner": "scanner-primary", "fingerprint": "ed330edbb780654c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3a094b54c51fee35", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/e2e/phase4.spec.ts:232"}, "properties": {"repobilityId": "edebbf6171fe3e95", "scanner": "scanner-primary", "fingerprint": "3a094b54c51fee35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "b88ff3fe26ab2898", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "b6d02fefbc4efa35", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "d45d697d9e9ff682", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "bef3ce2e4293d892", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "06bb57b476e3f26c", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "07eab4aef7e970ed", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "419aa3339a2a3f4e", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "26b77fdea2d46900", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "7aa74bbe4e7180fd", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "eb17058b68f945ac", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "6733a8546ef5860d", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "826efe4887f84a82", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "8b4df4526375a427", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "4360e7eef115c90d", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "df4ee5fbe5447cc9", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "b3241507df523b27", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "b32fd286e6b0460c", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "b509f4220acca8b2", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "c04bf2c49bff47e7", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "c8a2f70122aa9556", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-e9b788eb97dba2ae", "level": "error", "message": {"text": "Dangling fetch: GET /api/auth/me (web/src/lib/csrf.ts:27)"}, "properties": {"repobilityId": "138dd53ff5a01b91", "scanner": "scanner-primary", "fingerprint": "e9b788eb97dba2ae", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4756b4c4da7d2088", "level": "note", "message": {"text": "Unused endpoint: GET /api/health"}, "properties": {"repobilityId": "f6bd8443de8a1448", "scanner": "scanner-primary", "fingerprint": "4756b4c4da7d2088", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4e5cc88a9fae537a", "level": "note", "message": {"text": "Unused endpoint: GET /api/fills/recent"}, "properties": {"repobilityId": "f25e6b40c6382737", "scanner": "scanner-primary", "fingerprint": "4e5cc88a9fae537a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-543ed437b6bde3bb", "level": "note", "message": {"text": "Unused endpoint: GET /api/conditions"}, "properties": {"repobilityId": "9b355d4848f3e66f", "scanner": "scanner-primary", "fingerprint": "543ed437b6bde3bb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-32ad19b4c239d621", "level": "note", "message": {"text": "Unused endpoint: GET /api/orders"}, "properties": {"repobilityId": "9f210cdb1639b1c5", "scanner": "scanner-primary", "fingerprint": "32ad19b4c239d621", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-741cc96ec7f810f2", "level": "note", "message": {"text": "Unused endpoint: POST /api/conditions"}, "properties": {"repobilityId": "86923c712b674a84", "scanner": "scanner-primary", "fingerprint": "741cc96ec7f810f2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-32af5edd087acbbc", "level": "note", "message": {"text": "Unused endpoint: GET /api/events"}, "properties": {"repobilityId": "61656af00a423676", "scanner": "scanner-primary", "fingerprint": "32af5edd087acbbc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-200ab2e98a288506", "level": "note", "message": {"text": "Unused endpoint: POST /api/login"}, "properties": {"repobilityId": "628d4b98ac8c27b1", "scanner": "scanner-primary", "fingerprint": "200ab2e98a288506", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a10936f69cf3bbb4", "level": "note", "message": {"text": "Unused endpoint: POST /api/logout"}, "properties": {"repobilityId": "d9b84e2dee78cc90", "scanner": "scanner-primary", "fingerprint": "a10936f69cf3bbb4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5c1545494ab6166c", "level": "note", "message": {"text": "Unused endpoint: GET /api/me"}, "properties": {"repobilityId": "f119724bb3ca564b", "scanner": "scanner-primary", "fingerprint": "5c1545494ab6166c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-963710f42a2c8219", "level": "note", "message": {"text": "Unused endpoint: GET /api/status"}, "properties": {"repobilityId": "004a083fa4e12355", "scanner": "scanner-primary", "fingerprint": "963710f42a2c8219", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3c4ac4a5eb803d93", "level": "note", "message": {"text": "Unused endpoint: POST /api/kill-switch"}, "properties": {"repobilityId": "7b1aa7d9ef0c46d9", "scanner": "scanner-primary", "fingerprint": "3c4ac4a5eb803d93", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-69613e6f42c1b3cd", "level": "note", "message": {"text": "Unused endpoint: POST /api/auto-trading"}, "properties": {"repobilityId": "cae2ae17637890cd", "scanner": "scanner-primary", "fingerprint": "69613e6f42c1b3cd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bc16daf9a1449a16", "level": "note", "message": {"text": "Unused endpoint: POST /api/run-once"}, "properties": {"repobilityId": "d8800f7c693b4d63", "scanner": "scanner-primary", "fingerprint": "bc16daf9a1449a16", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5775da67d19729a4", "level": "note", "message": {"text": "Unused endpoint: GET /api/list"}, "properties": {"repobilityId": "9f0704cefd1e8385", "scanner": "scanner-primary", "fingerprint": "5775da67d19729a4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8fc7c3b9f2c75416", "level": "note", "message": {"text": "Unused endpoint: POST /api/ask"}, "properties": {"repobilityId": "d2045a77f36c61a5", "scanner": "scanner-primary", "fingerprint": "8fc7c3b9f2c75416", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c7b76dd5a4ccff48", "level": "note", "message": {"text": "Unused endpoint: POST /api/ic/run"}, "properties": {"repobilityId": "c309f35302e873a4", "scanner": "scanner-primary", "fingerprint": "c7b76dd5a4ccff48", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e56b2a8c26a23585", "level": "note", "message": {"text": "Unused endpoint: GET /api/ic/stream/{job_id}"}, "properties": {"repobilityId": "fb5d9372025f317c", "scanner": "scanner-primary", "fingerprint": "e56b2a8c26a23585", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d35230d5b024f1ee", "level": "note", "message": {"text": "Unused endpoint: GET /api/ic/decisions"}, "properties": {"repobilityId": "d669863e1708139b", "scanner": "scanner-primary", "fingerprint": "d35230d5b024f1ee", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-124dbea1e62f3636", "level": "note", "message": {"text": "Unused endpoint: GET /api/indices"}, "properties": {"repobilityId": "8efbbb838a533231", "scanner": "scanner-primary", "fingerprint": "124dbea1e62f3636", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-19c8531eb02471bd", "level": "note", "message": {"text": "Unused endpoint: GET /api/watchlist"}, "properties": {"repobilityId": "0537ca17092831d6", "scanner": "scanner-primary", "fingerprint": "19c8531eb02471bd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dafe621a0007df6a", "level": "note", "message": {"text": "Unused endpoint: GET /api/price"}, "properties": {"repobilityId": "2623b5270aa7c8f9", "scanner": "scanner-primary", "fingerprint": "dafe621a0007df6a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9d05516bfe5d444c", "level": "note", "message": {"text": "Unused endpoint: GET /api/fundamental"}, "properties": {"repobilityId": "f1dba6f4370083d2", "scanner": "scanner-primary", "fingerprint": "9d05516bfe5d444c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ce33115b242a399d", "level": "note", "message": {"text": "Unused endpoint: GET /api/order-book"}, "properties": {"repobilityId": "781838e4e7e32f50", "scanner": "scanner-primary", "fingerprint": "ce33115b242a399d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-472c2ab6e3d1920f", "level": "note", "message": {"text": "Unused endpoint: GET /api/intraday"}, "properties": {"repobilityId": "04279c941cc47a1e", "scanner": "scanner-primary", "fingerprint": "472c2ab6e3d1920f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e2103dbc81e9235c", "level": "note", "message": {"text": "Unused endpoint: GET /api/sectors"}, "properties": {"repobilityId": "6a5c08cc65d1b6b9", "scanner": "scanner-primary", "fingerprint": "e2103dbc81e9235c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-20d595d1958d89d1", "level": "note", "message": {"text": "Unused endpoint: GET /api/disclosures"}, "properties": {"repobilityId": "3ca3ce6b7c7079c7", "scanner": "scanner-primary", "fingerprint": "20d595d1958d89d1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-54f5f1c476fe6637", "level": "note", "message": {"text": "Unused endpoint: PUT /risk-limits"}, "properties": {"repobilityId": "2d427a709b37961d", "scanner": "scanner-primary", "fingerprint": "54f5f1c476fe6637", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fb1bcf8fe8c24bf9", "level": "note", "message": {"text": "Unused endpoint: GET /api/holdings"}, "properties": {"repobilityId": "8e26593e119de9ed", "scanner": "scanner-primary", "fingerprint": "fb1bcf8fe8c24bf9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0019d9a61489f333", "level": "note", "message": {"text": "Unused endpoint: GET /api/kpis"}, "properties": {"repobilityId": "dd7167ad6de06ae9", "scanner": "scanner-primary", "fingerprint": "0019d9a61489f333", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f205af802af70a7e", "level": "note", "message": {"text": "Unused endpoint: GET /api/asset-curve"}, "properties": {"repobilityId": "7824277538a3ea47", "scanner": "scanner-primary", "fingerprint": "f205af802af70a7e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-860e0d487eaf3337", "level": "note", "message": {"text": "Unused endpoint: GET /api/allocation-gap"}, "properties": {"repobilityId": "50fd58c34b38ed5c", "scanner": "scanner-primary", "fingerprint": "860e0d487eaf3337", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7adf44d4a4ddc1dc", "level": "note", "message": {"text": "Unused endpoint: GET /api/attribution"}, "properties": {"repobilityId": "c6c8659affbbf8ed", "scanner": "scanner-primary", "fingerprint": "7adf44d4a4ddc1dc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ebc675afbca38e27", "level": "note", "message": {"text": "Unused endpoint: GET /api/retro"}, "properties": {"repobilityId": "558f879783e7d9db", "scanner": "scanner-primary", "fingerprint": "ebc675afbca38e27", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0e205bb1615da063", "level": "note", "message": {"text": "Unused endpoint: GET /api/daily-pnl"}, "properties": {"repobilityId": "ed05fbd22fcdcab9", "scanner": "scanner-primary", "fingerprint": "0e205bb1615da063", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b0a322b00d4bf653", "level": "note", "message": {"text": "Unused endpoint: GET /api/backtest"}, "properties": {"repobilityId": "e7b9202c9817e36b", "scanner": "scanner-primary", "fingerprint": "b0a322b00d4bf653", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cc1d7672453836a5", "level": "note", "message": {"text": "Unused endpoint: GET /api/var"}, "properties": {"repobilityId": "8009357bca32f318", "scanner": "scanner-primary", "fingerprint": "cc1d7672453836a5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3109a4c85e6b1312", "level": "note", "message": {"text": "Unused endpoint: GET /api/scenario"}, "properties": {"repobilityId": "de2411ec89db2b70", "scanner": "scanner-primary", "fingerprint": "3109a4c85e6b1312", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b643e3474be0c320", "level": "note", "message": {"text": "Unused endpoint: GET /api/whatif"}, "properties": {"repobilityId": "b75f6a50d86604ee", "scanner": "scanner-primary", "fingerprint": "b643e3474be0c320", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}