{"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-e47f119c9a56b9b7", "name": "Possibly dead Python function: log", "shortDescription": {"text": "Possibly dead Python function: log"}, "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-94cc399b53c3afce", "name": "Possibly dead Python function: adebug", "shortDescription": {"text": "Possibly dead Python function: adebug"}, "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-9be06d8dfa8cdc54", "name": "Possibly dead Python function: aerror", "shortDescription": {"text": "Possibly dead Python function: aerror"}, "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-b0893db25796b290", "name": "Possibly dead Python function: set_exc_info", "shortDescription": {"text": "Possibly dead Python function: set_exc_info"}, "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-6f1b5dc714205c6c", "name": "Possibly dead Python function: merge_contextvars", "shortDescription": {"text": "Possibly dead Python function: merge_contextvars"}, "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-dbf979fbff6de1bf", "name": "Possibly dead Python function: clear_contextvars", "shortDescription": {"text": "Possibly dead Python function: clear_contextvars"}, "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-1241ec675707e58c", "name": "Possibly dead Python function: reset_contextvars", "shortDescription": {"text": "Possibly dead Python function: reset_contextvars"}, "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-9df86f184d2da0a4", "name": "Possibly dead Python function: wrap_dict", "shortDescription": {"text": "Possibly dead Python function: wrap_dict"}, "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-3e7b1afd88503408", "name": "Dockerfile runs as root: docker/fabro-sandbox/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: docker/fabro-sandbox/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-03606cdfcbf47289", "name": "Docker base image is tag-pinned but not digest-pinned: buildpack-deps:noble", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: buildpack-deps:noble"}, "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-0ca7c95a25948896", "name": "Dockerfile pipes a remote installer into a shell", "shortDescription": {"text": "Dockerfile pipes a remote installer into a shell"}, "fullDescription": {"text": "Executing downloaded code during image build gives the remote endpoint build-time code execution. Prefer pinned packages or verify downloaded installers by checksum/signature."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "high", "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-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bfdd551f4ab5145b", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "thewoolleyman/livespec-dev-tooling/.github/workflows/reusable-release-dispatch.yml@v0.14.0 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eea92d7748146c20", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/create-github-app-token@v1 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cbe310f193a6df9f", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b3a0b4afff3dbaca", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-61d39fc6a4a7e021", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f7c7d25911e6e1e4", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/create-github-app-token@v1 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-31fbbdc8ce83e8ee", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1d6b44d9c97d92f3", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "thewoolleyman/livespec-dev-tooling/.github/workflows/reusable-bump-pin-from-dispatch.yml@v0.14.0 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6441bbf3f79be813", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/create-github-app-token@v1 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-16c58f9118200a02", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/create-github-app-token@v1 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f4cc542c8389a8d", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/create-github-app-token@v1 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7969adbed9cfd500", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-439f67880be4c9ed", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/create-github-app-token@v1 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-61070c77739661be", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "thewoolleyman/livespec-dev-tooling/.github/workflows/reusable-pin-freshness.yml@v0.14.0 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bf34f9820af4c718", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-161196bccfe7bc62", "name": "Very large file: tests/livespec_dev_tooling/checks/test_red_green_replay.py (2532 lines)", "shortDescription": {"text": "Very large file: tests/livespec_dev_tooling/checks/test_red_green_replay.py (2532 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-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 18 placeholder/mock markers across 5 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-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-44f3471c2ecb189e", "name": "Agent authority lacks a verifier contract: dev-tooling/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: dev-tooling/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-bb872412238bff94", "name": "Agent authority lacks a verifier contract: tests/livespec_dev_tooling/fleet/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: tests/livespec_dev_tooling/fleet/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-f84aa2d7b8e999e0", "name": "Agent authority lacks a verifier contract: livespec_dev_tooling/fleet/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: livespec_dev_tooling/fleet/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-78ee0fce7f7ed5fa", "name": "Agent authority lacks a verifier contract: livespec_dev_tooling/agent_hooks/CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: livespec_dev_tooling/agent_hooks/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-6cc554adec112b05", "name": "Legacy-named symbol `test_impl_plugin_consumes_check_without_local_copy` in tests/consumer/test_package_consumption.py:1", "shortDescription": {"text": "Legacy-named symbol `test_impl_plugin_consumes_check_without_local_copy` in tests/consumer/test_package_consumption.py:101"}, "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-4d031a66297de5ae", "name": "Commented-code block (6 lines) in tests/consumer/test_package_consumption.py:38", "shortDescription": {"text": "Commented-code block (6 lines) in tests/consumer/test_package_consumption.py:38"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-33c9eb1174a725cd", "name": "Commented-code block (5 lines) in tests/livespec_dev_tooling/test_fabro_image_pin_lockstep.py:30", "shortDescription": {"text": "Commented-code block (5 lines) in tests/livespec_dev_tooling/test_fabro_image_pin_lockstep.py:30"}, "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-4afb8d3cf7e56be2", "name": "Commented-code block (7 lines) in tests/livespec_dev_tooling/test_tdd_commit.py:35", "shortDescription": {"text": "Commented-code block (7 lines) in tests/livespec_dev_tooling/test_tdd_commit.py:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2efa99d3b9e40ea6", "name": "Commented-code block (6 lines) in tests/livespec_dev_tooling/testing/test_cli_e2e.py:56", "shortDescription": {"text": "Commented-code block (6 lines) in tests/livespec_dev_tooling/testing/test_cli_e2e.py:56"}, "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-ac0bf4a1e3c47bae", "name": "Commented-code block (7 lines) in tests/livespec_dev_tooling/workflow_checks/test_no_stale_revise_branches.py:44", "shortDescription": {"text": "Commented-code block (7 lines) in tests/livespec_dev_tooling/workflow_checks/test_no_stale_revise_branches.py:44"}, "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-6462c4e536b6036e", "name": "Commented-code block (6 lines) in tests/livespec_dev_tooling/cross_repo/test_bump_pin_rewrite_composite_action.py:52", "shortDescription": {"text": "Commented-code block (6 lines) in tests/livespec_dev_tooling/cross_repo/test_bump_pin_rewrite_composite_action.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-1f5e16eee9ca9e24", "name": "Commented-code block (10 lines) in tests/livespec_dev_tooling/checks/test_red_green_replay.py:59", "shortDescription": {"text": "Commented-code block (10 lines) in tests/livespec_dev_tooling/checks/test_red_green_replay.py:59"}, "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-564dc8e41e9f66bd", "name": "Commented-code block (6 lines) in tests/livespec_dev_tooling/checks/test_per_file_coverage.py:88", "shortDescription": {"text": "Commented-code block (6 lines) in tests/livespec_dev_tooling/checks/test_per_file_coverage.py:88"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-616373c4e8dd4cff", "name": "Commented-code block (7 lines) in tests/livespec_dev_tooling/checks/test_all_declared.py:121", "shortDescription": {"text": "Commented-code block (7 lines) in tests/livespec_dev_tooling/checks/test_all_declared.py:121"}, "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-51904de385930f9c", "name": "Legacy-named symbol `test_old` in tests/livespec_dev_tooling/checks/test_heading_coverage.py:129", "shortDescription": {"text": "Legacy-named symbol `test_old` in tests/livespec_dev_tooling/checks/test_heading_coverage.py:129"}, "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-02af480437c1d59b", "name": "Commented-code block (6 lines) in tests/livespec_dev_tooling/checks/test_commit_pairs_source_and_test.py:40", "shortDescription": {"text": "Commented-code block (6 lines) in tests/livespec_dev_tooling/checks/test_commit_pairs_source_and_test.py:40"}, "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-bfad52febe714d41", "name": "Commented-code block (6 lines) in tests/livespec_dev_tooling/checks/test_aggregate_completeness.py:320", "shortDescription": {"text": "Commented-code block (6 lines) in tests/livespec_dev_tooling/checks/test_aggregate_completeness.py:320"}, "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-2c4093e71e67f7ae", "name": "Commented-code block (6 lines) in tests/livespec_dev_tooling/agent_hooks/test_subagent_stop_guard.py:67", "shortDescription": {"text": "Commented-code block (6 lines) in tests/livespec_dev_tooling/agent_hooks/test_subagent_stop_guard.py:67"}, "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-b352daa511fbbda6", "name": "Commented-code block (7 lines) in livespec_dev_tooling/parallel_check_dispatcher.py:86", "shortDescription": {"text": "Commented-code block (7 lines) in livespec_dev_tooling/parallel_check_dispatcher.py:86"}, "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-d012671fe6507717", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/parallel_check_dispatcher.py:223", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/parallel_check_dispatcher.py:223"}, "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-8c5f22205f945320", "name": "Commented-code block (5 lines) in livespec_dev_tooling/config.py:36", "shortDescription": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/config.py:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fd10b8caa07cf039", "name": "Commented-code block (9 lines) in livespec_dev_tooling/red_leg_scope.py:73", "shortDescription": {"text": "Commented-code block (9 lines) in livespec_dev_tooling/red_leg_scope.py:73"}, "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-539df9c621bd42c8", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/red_leg_scope.py:142", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/red_leg_scope.py:142"}, "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-85ff7f0edcd2f081", "name": "Commented-code block (9 lines) in livespec_dev_tooling/tdd_commit.py:96", "shortDescription": {"text": "Commented-code block (9 lines) in livespec_dev_tooling/tdd_commit.py:96"}, "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-0ee8789a157b9327", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/tdd_commit.py:176", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/tdd_commit.py:176"}, "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-62a5367c3d2d0417", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/green_token.py:47", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/green_token.py:47"}, "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-07277089a9f9459a", "name": "Commented-code block (6 lines) in livespec_dev_tooling/fleet/_reconcile.py:54", "shortDescription": {"text": "Commented-code block (6 lines) in livespec_dev_tooling/fleet/_reconcile.py:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b143db25aaf91985", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/fleet/_context.py:110", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/fleet/_context.py:110"}, "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-b1948fd126ffce44", "name": "Commented-code block (5 lines) in livespec_dev_tooling/_vendor/structlog/stdlib.py:133", "shortDescription": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/_vendor/structlog/stdlib.py:133"}, "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-3f43eea1316297a5", "name": "Stub function `_nop` (body is just `pass`/`return`) \u2014 livespec_dev_tooling/_vendor/structlog/_native.py:34", "shortDescription": {"text": "Stub function `_nop` (body is just `pass`/`return`) \u2014 livespec_dev_tooling/_vendor/structlog/_native.py:34"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f19a7d7ed5415a63", "name": "Commented-code block (9 lines) in livespec_dev_tooling/_vendor/tomli/_parser.py:26", "shortDescription": {"text": "Commented-code block (9 lines) in livespec_dev_tooling/_vendor/tomli/_parser.py:26"}, "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-44a19e4debcda4b5", "name": "Commented-code block (7 lines) in livespec_dev_tooling/testing/cli_e2e.py:223", "shortDescription": {"text": "Commented-code block (7 lines) in livespec_dev_tooling/testing/cli_e2e.py:223"}, "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-a782d9e62bef3e18", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/testing/cli_e2e.py:239", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/testing/cli_e2e.py:239"}, "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-fe4f23a52794dd55", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/workflow_checks/no_stale_revise_branches.py", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/workflow_checks/no_stale_revise_branches.py:164"}, "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-f637ffce55b37062", "name": "Commented-code block (5 lines) in livespec_dev_tooling/cross_repo/pin_autodiscovery.py:139", "shortDescription": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/cross_repo/pin_autodiscovery.py:139"}, "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-21ef8823dc5b8155", "name": "Commented-code block (5 lines) in livespec_dev_tooling/checks/no_write_direct.py:61", "shortDescription": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/checks/no_write_direct.py:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-17bc24b56d296f70", "name": "Commented-code block (7 lines) in livespec_dev_tooling/checks/no_todo_registry.py:70", "shortDescription": {"text": "Commented-code block (7 lines) in livespec_dev_tooling/checks/no_todo_registry.py:70"}, "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-ce12012350939d86", "name": "Commented-code block (5 lines) in livespec_dev_tooling/checks/skill_invocation_paths.py:78", "shortDescription": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/checks/skill_invocation_paths.py:78"}, "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-905efa6f30c1e9b8", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/primary_checkout_commit_refuse_hook_", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/primary_checkout_commit_refuse_hook_installed.py:127"}, "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-5e858835f4dc8ead", "name": "Commented-code block (5 lines) in livespec_dev_tooling/checks/wrapper_shape.py:68", "shortDescription": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/checks/wrapper_shape.py:68"}, "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-6f99ea5e1e9ebcea", "name": "Commented-code block (5 lines) in livespec_dev_tooling/checks/per_file_coverage.py:59", "shortDescription": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/checks/per_file_coverage.py:59"}, "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-9878ca1e14a551c1", "name": "Commented-code block (5 lines) in livespec_dev_tooling/checks/aggregate_completeness.py:274", "shortDescription": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/checks/aggregate_completeness.py:274"}, "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-60c4a20b15b99d1b", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/check_tools.py:82", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/check_tools.py:82"}, "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-0a935ca4e9627e91", "name": "Commented-code block (6 lines) in livespec_dev_tooling/checks/_red_green_replay_modes.py:24", "shortDescription": {"text": "Commented-code block (6 lines) in livespec_dev_tooling/checks/_red_green_replay_modes.py:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0739b92a093101bf", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/_red_green_replay_modes.py:78", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/_red_green_replay_modes.py:78"}, "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-57c7f503e8016ce4", "name": "Commented-code block (7 lines) in livespec_dev_tooling/checks/red_green_replay.py:91", "shortDescription": {"text": "Commented-code block (7 lines) in livespec_dev_tooling/checks/red_green_replay.py:91"}, "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-5d9cd896baebebc6", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/red_green_replay.py:161", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/red_green_replay.py:161"}, "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-bf08a660fbd72481", "name": "Commented-code block (8 lines) in livespec_dev_tooling/checks/check_coverage_incremental.py:73", "shortDescription": {"text": "Commented-code block (8 lines) in livespec_dev_tooling/checks/check_coverage_incremental.py:73"}, "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-0d9a48a98aff176f", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/check_coverage_incremental.py:228", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/check_coverage_incremental.py:228"}, "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-b64d601439122ccb", "name": "Commented-code block (6 lines) in livespec_dev_tooling/checks/branch_protection_alignment.py:94", "shortDescription": {"text": "Commented-code block (6 lines) in livespec_dev_tooling/checks/branch_protection_alignment.py:94"}, "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-81ab023844bb1e48", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/branch_protection_alignment.py:173", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/branch_protection_alignment.py:173"}, "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-37f1234018421d2d", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/commit_pairs_source_and_test.py:77", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/commit_pairs_source_and_test.py:77"}, "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-dc66305787548541", "name": "Commented-code block (5 lines) in livespec_dev_tooling/checks/tool_backed_check_completeness.py:97", "shortDescription": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/checks/tool_backed_check_completeness.py:97"}, "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-837354a5b334d6fc", "name": "Commented-code block (5 lines) in livespec_dev_tooling/checks/master_ci_green.py:114", "shortDescription": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/checks/master_ci_green.py:114"}, "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-fb7327c58f36e2d2", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/master_ci_green.py:82", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/master_ci_green.py:82"}, "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-15cf73fca03fe7df", "name": "Commented-code block (5 lines) in livespec_dev_tooling/checks/heading_coverage.py:368", "shortDescription": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/checks/heading_coverage.py:368"}, "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-16f401281e41ffec", "name": "Commented-code block (7 lines) in livespec_dev_tooling/checks/check_mutation.py:123", "shortDescription": {"text": "Commented-code block (7 lines) in livespec_dev_tooling/checks/check_mutation.py:123"}, "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-ca75d8cb76d56667", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/check_mutation.py:240", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/check_mutation.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-e1b971db19cd0fa0", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/tests_no_subprocess_spawn.py:99", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/tests_no_subprocess_spawn.py:99"}, "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-80dda742a6ec188e", "name": "Commented-code block (7 lines) in livespec_dev_tooling/checks/vendor_manifest.py:108", "shortDescription": {"text": "Commented-code block (7 lines) in livespec_dev_tooling/checks/vendor_manifest.py:108"}, "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-9eaaca041591a37d", "name": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/agent_hooks/subagent_stop_guard.py:105", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/agent_hooks/subagent_stop_guard.py:105"}, "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-49c0e0d1667ccd0e", "name": "Commented-code block (5 lines) in livespec_dev_tooling/agent_hooks/pretooluse_background_guard.py:57", "shortDescription": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/agent_hooks/pretooluse_background_guard.py:57"}, "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-6718a631ead09376", "name": "Near-duplicate function bodies in 38 places", "shortDescription": {"text": "Near-duplicate function bodies in 38 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nlivespec_dev_tooling/fabro_image_pin_lockstep.py:main, livespec_dev_tooling/green_token.py:main, livespec_dev_tooling/fleet/fleet_conformance.py:main, livespec_dev_tooling/fleet/wire_fleet_member.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-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:\nlivespec_dev_tooling/_vendor/structlog/_base.py:unbind, livespec_dev_tooling/_vendor/structlog/stdlib.py:unbind, livespec_dev_tooling/_vendor/structlog/stdlib.py:unbind\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:\nlivespec_dev_tooling/_vendor/structlog/stdlib.py:findCaller, livespec_dev_tooling/_vendor/structlog/stdlib.py:findCaller\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-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:\nlivespec_dev_tooling/_vendor/structlog/stdlib.py:critical, livespec_dev_tooling/_vendor/structlog/stdlib.py:fatal, livespec_dev_tooling/_vendor/structlog/stdlib.py:critical, livespec_dev_tooling/_vendor/structlog/stdlib.py:fatal\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}}]}}, "automationDetails": {"id": "repobility/21179"}, "properties": {"repository": "thewoolleyman/livespec-dev-tooling", "repoUrl": "https://github.com/thewoolleyman/livespec-dev-tooling", "branch": "main"}, "results": [{"ruleId": "scanner-e47f119c9a56b9b7", "level": "note", "message": {"text": "Possibly dead Python function: log"}, "properties": {"repobilityId": "eb911eadfbb94865", "scanner": "scanner-primary", "fingerprint": "e47f119c9a56b9b7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "livespec_dev_tooling/_vendor/structlog/stdlib.py:677"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-94cc399b53c3afce", "level": "note", "message": {"text": "Possibly dead Python function: adebug"}, "properties": {"repobilityId": "8edc5faa879a1637", "scanner": "scanner-primary", "fingerprint": "94cc399b53c3afce", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "livespec_dev_tooling/_vendor/structlog/stdlib.py:437"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9be06d8dfa8cdc54", "level": "note", "message": {"text": "Possibly dead Python function: aerror"}, "properties": {"repobilityId": "f6c2c02b57e181d5", "scanner": "scanner-primary", "fingerprint": "9be06d8dfa8cdc54", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "livespec_dev_tooling/_vendor/structlog/stdlib.py:461"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b0893db25796b290", "level": "note", "message": {"text": "Possibly dead Python function: set_exc_info"}, "properties": {"repobilityId": "82ad1af21465812f", "scanner": "scanner-primary", "fingerprint": "b0893db25796b290", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "livespec_dev_tooling/_vendor/structlog/dev.py:1176"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6f1b5dc714205c6c", "level": "note", "message": {"text": "Possibly dead Python function: merge_contextvars"}, "properties": {"repobilityId": "b0f6309e1c81df80", "scanner": "scanner-primary", "fingerprint": "6f1b5dc714205c6c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "livespec_dev_tooling/_vendor/structlog/contextvars.py:75"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dbf979fbff6de1bf", "level": "note", "message": {"text": "Possibly dead Python function: clear_contextvars"}, "properties": {"repobilityId": "9b6e9e891bd8a8a9", "scanner": "scanner-primary", "fingerprint": "dbf979fbff6de1bf", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "livespec_dev_tooling/_vendor/structlog/contextvars.py:96"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1241ec675707e58c", "level": "note", "message": {"text": "Possibly dead Python function: reset_contextvars"}, "properties": {"repobilityId": "5044c15def9fc212", "scanner": "scanner-primary", "fingerprint": "1241ec675707e58c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "livespec_dev_tooling/_vendor/structlog/contextvars.py:141"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9df86f184d2da0a4", "level": "note", "message": {"text": "Possibly dead Python function: wrap_dict"}, "properties": {"repobilityId": "9452d01327a7adf2", "scanner": "scanner-primary", "fingerprint": "9df86f184d2da0a4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "livespec_dev_tooling/_vendor/structlog/threadlocal.py:80"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3e7b1afd88503408", "level": "warning", "message": {"text": "Dockerfile runs as root: docker/fabro-sandbox/Dockerfile"}, "properties": {"repobilityId": "7acfaaaa61949062", "scanner": "scanner-primary", "fingerprint": "3e7b1afd88503408", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-03606cdfcbf47289", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: buildpack-deps:noble"}, "properties": {"repobilityId": "5e3d7eebf17015e2", "scanner": "scanner-primary", "fingerprint": "03606cdfcbf47289", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/fabro-sandbox/Dockerfile"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-0ca7c95a25948896", "level": "error", "message": {"text": "Dockerfile pipes a remote installer into a shell"}, "properties": {"repobilityId": "57c5b481e7ee1bc2", "scanner": "scanner-primary", "fingerprint": "0ca7c95a25948896", "layer": "hardware", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "docker", "remote-installer"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/fabro-sandbox/Dockerfile"}, "region": {"startLine": 51}}}]}, {"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-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-bfdd551f4ab5145b", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b1db60b4cb34680a", "scanner": "scanner-primary", "fingerprint": "bfdd551f4ab5145b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-dispatch.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-eea92d7748146c20", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6746656bae8e4005", "scanner": "scanner-primary", "fingerprint": "eea92d7748146c20", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-please.yml"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-eea92d7748146c20", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8922d1c1e281f80e", "scanner": "scanner-primary", "fingerprint": "eea92d7748146c20", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-please.yml"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-cbe310f193a6df9f", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "573212e145c44806", "scanner": "scanner-primary", "fingerprint": "cbe310f193a6df9f", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-please.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b3a0b4afff3dbaca", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "21c92a2f04d38c8e", "scanner": "scanner-primary", "fingerprint": "b3a0b4afff3dbaca", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fabro-sandbox-image.yml"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-b3a0b4afff3dbaca", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3c4cbbb859eee274", "scanner": "scanner-primary", "fingerprint": "b3a0b4afff3dbaca", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fabro-sandbox-image.yml"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-b3a0b4afff3dbaca", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4df7b9b2b2ee6b15", "scanner": "scanner-primary", "fingerprint": "b3a0b4afff3dbaca", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fabro-sandbox-image.yml"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-b3a0b4afff3dbaca", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "03d8e6adf3b2da61", "scanner": "scanner-primary", "fingerprint": "b3a0b4afff3dbaca", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fabro-sandbox-image.yml"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-b3a0b4afff3dbaca", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "975bcdf045a3623d", "scanner": "scanner-primary", "fingerprint": "b3a0b4afff3dbaca", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fabro-sandbox-image.yml"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-61d39fc6a4a7e021", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "560d83560af8e9fb", "scanner": "scanner-primary", "fingerprint": "61d39fc6a4a7e021", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fabro-sandbox-image.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f7c7d25911e6e1e4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "851b58f92a898a8e", "scanner": "scanner-primary", "fingerprint": "f7c7d25911e6e1e4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/auto-update-branches.yml"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-31fbbdc8ce83e8ee", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "6311de3c5fe9d5eb", "scanner": "scanner-primary", "fingerprint": "31fbbdc8ce83e8ee", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/auto-update-branches.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1d6b44d9c97d92f3", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4a011cab08acbc62", "scanner": "scanner-primary", "fingerprint": "1d6b44d9c97d92f3", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bump-pin-from-dispatch.yml"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-6441bbf3f79be813", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "df7b98a667ae3683", "scanner": "scanner-primary", "fingerprint": "6441bbf3f79be813", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-bump-pin-from-dispatch.yml"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-6441bbf3f79be813", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "03f62f253bb19f24", "scanner": "scanner-primary", "fingerprint": "6441bbf3f79be813", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-bump-pin-from-dispatch.yml"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-6441bbf3f79be813", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "03f62f253bb19f24", "scanner": "scanner-primary", "fingerprint": "6441bbf3f79be813", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-bump-pin-from-dispatch.yml"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-6441bbf3f79be813", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d5ac48f2c385d3e7", "scanner": "scanner-primary", "fingerprint": "6441bbf3f79be813", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-bump-pin-from-dispatch.yml"}, "region": {"startLine": 155}}}]}, {"ruleId": "scanner-16c58f9118200a02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "740914f03cac880c", "scanner": "scanner-primary", "fingerprint": "16c58f9118200a02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-pin-freshness.yml"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-16c58f9118200a02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "38be617a20c2f385", "scanner": "scanner-primary", "fingerprint": "16c58f9118200a02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-pin-freshness.yml"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-16c58f9118200a02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "38be617a20c2f385", "scanner": "scanner-primary", "fingerprint": "16c58f9118200a02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-pin-freshness.yml"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-16c58f9118200a02", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3f563a76f1524f89", "scanner": "scanner-primary", "fingerprint": "16c58f9118200a02", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-pin-freshness.yml"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-16c58f9118200a02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "740914f03cac880c", "scanner": "scanner-primary", "fingerprint": "16c58f9118200a02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-pin-freshness.yml"}, "region": {"startLine": 182}}}]}, {"ruleId": "scanner-16c58f9118200a02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "38be617a20c2f385", "scanner": "scanner-primary", "fingerprint": "16c58f9118200a02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-pin-freshness.yml"}, "region": {"startLine": 188}}}]}, {"ruleId": "scanner-16c58f9118200a02", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "38be617a20c2f385", "scanner": "scanner-primary", "fingerprint": "16c58f9118200a02", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-pin-freshness.yml"}, "region": {"startLine": 194}}}]}, {"ruleId": "scanner-16c58f9118200a02", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3f563a76f1524f89", "scanner": "scanner-primary", "fingerprint": "16c58f9118200a02", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-pin-freshness.yml"}, "region": {"startLine": 201}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9ad4c3f023525f19", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 119}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "dd71a6cf842545f0", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 123}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9ad4c3f023525f19", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9ad4c3f023525f19", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 209}}}]}, {"ruleId": "scanner-2f4cc542c8389a8d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e8b97afa423e3365", "scanner": "scanner-primary", "fingerprint": "2f4cc542c8389a8d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-release-dispatch.yml"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-2f4cc542c8389a8d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5d04cb4661698f42", "scanner": "scanner-primary", "fingerprint": "2f4cc542c8389a8d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-release-dispatch.yml"}, "region": {"startLine": 139}}}]}, {"ruleId": "scanner-2f4cc542c8389a8d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e8b97afa423e3365", "scanner": "scanner-primary", "fingerprint": "2f4cc542c8389a8d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-release-dispatch.yml"}, "region": {"startLine": 149}}}]}, {"ruleId": "scanner-2f4cc542c8389a8d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cc4a392c11ed8e0d", "scanner": "scanner-primary", "fingerprint": "2f4cc542c8389a8d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-release-dispatch.yml"}, "region": {"startLine": 156}}}]}, {"ruleId": "scanner-2f4cc542c8389a8d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e8b97afa423e3365", "scanner": "scanner-primary", "fingerprint": "2f4cc542c8389a8d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-release-dispatch.yml"}, "region": {"startLine": 179}}}]}, {"ruleId": "scanner-7969adbed9cfd500", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8cb207bfea27169b", "scanner": "scanner-primary", "fingerprint": "7969adbed9cfd500", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fleet-conformance.yml"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-7969adbed9cfd500", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "48cdce57b52fbfb7", "scanner": "scanner-primary", "fingerprint": "7969adbed9cfd500", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fleet-conformance.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-7969adbed9cfd500", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1c417eff4de3286e", "scanner": "scanner-primary", "fingerprint": "7969adbed9cfd500", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fleet-conformance.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-439f67880be4c9ed", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "dcb55af0330e9946", "scanner": "scanner-primary", "fingerprint": "439f67880be4c9ed", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/auto-enable-merge.yml"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-61070c77739661be", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ab6d6bea3e7decfe", "scanner": "scanner-primary", "fingerprint": "61070c77739661be", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pin-freshness.yml"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-bf34f9820af4c718", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "611ddc9fef64e36e", "scanner": "scanner-primary", "fingerprint": "bf34f9820af4c718", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-check-matrix.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-bf34f9820af4c718", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "611ddc9fef64e36e", "scanner": "scanner-primary", "fingerprint": "bf34f9820af4c718", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reusable-check-matrix.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-161196bccfe7bc62", "level": "note", "message": {"text": "Very large file: tests/livespec_dev_tooling/checks/test_red_green_replay.py (2532 lines)"}, "properties": {"repobilityId": "d43e28cb23772b65", "scanner": "scanner-primary", "fingerprint": "161196bccfe7bc62", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "32ee0214e7460d38", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "1e832a6ba981c562", "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": "ade53355825b88e4", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-44f3471c2ecb189e", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: dev-tooling/CLAUDE.md"}, "properties": {"repobilityId": "49f0105254624ee5", "scanner": "scanner-primary", "fingerprint": "44f3471c2ecb189e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dev-tooling/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bb872412238bff94", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: tests/livespec_dev_tooling/fleet/CLAUDE.md"}, "properties": {"repobilityId": "33a424c9a5815d3e", "scanner": "scanner-primary", "fingerprint": "bb872412238bff94", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/livespec_dev_tooling/fleet/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f84aa2d7b8e999e0", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: livespec_dev_tooling/fleet/CLAUDE.md"}, "properties": {"repobilityId": "418b04cc0df14f7d", "scanner": "scanner-primary", "fingerprint": "f84aa2d7b8e999e0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "livespec_dev_tooling/fleet/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-78ee0fce7f7ed5fa", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: livespec_dev_tooling/agent_hooks/CLAUDE.md"}, "properties": {"repobilityId": "067126d4278b96c6", "scanner": "scanner-primary", "fingerprint": "78ee0fce7f7ed5fa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "livespec_dev_tooling/agent_hooks/CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6cc554adec112b05", "level": "note", "message": {"text": "Legacy-named symbol `test_impl_plugin_consumes_check_without_local_copy` in tests/consumer/test_package_consumption.py:101"}, "properties": {"repobilityId": "25f415f5f1a98a00", "scanner": "scanner-primary", "fingerprint": "6cc554adec112b05", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4d031a66297de5ae", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/consumer/test_package_consumption.py:38"}, "properties": {"repobilityId": "812b824384f22e87", "scanner": "scanner-primary", "fingerprint": "4d031a66297de5ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33c9eb1174a725cd", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/livespec_dev_tooling/test_fabro_image_pin_lockstep.py:30"}, "properties": {"repobilityId": "2bd573dbe630f9dc", "scanner": "scanner-primary", "fingerprint": "33c9eb1174a725cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4afb8d3cf7e56be2", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/livespec_dev_tooling/test_tdd_commit.py:35"}, "properties": {"repobilityId": "78685729a813a93f", "scanner": "scanner-primary", "fingerprint": "4afb8d3cf7e56be2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2efa99d3b9e40ea6", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/livespec_dev_tooling/testing/test_cli_e2e.py:56"}, "properties": {"repobilityId": "35e68faac5579f53", "scanner": "scanner-primary", "fingerprint": "2efa99d3b9e40ea6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac0bf4a1e3c47bae", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/livespec_dev_tooling/workflow_checks/test_no_stale_revise_branches.py:44"}, "properties": {"repobilityId": "8b67cec7e1b0bf96", "scanner": "scanner-primary", "fingerprint": "ac0bf4a1e3c47bae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6462c4e536b6036e", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/livespec_dev_tooling/cross_repo/test_bump_pin_rewrite_composite_action.py:52"}, "properties": {"repobilityId": "e0eace6d607d0335", "scanner": "scanner-primary", "fingerprint": "6462c4e536b6036e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f5e16eee9ca9e24", "level": "none", "message": {"text": "Commented-code block (10 lines) in tests/livespec_dev_tooling/checks/test_red_green_replay.py:59"}, "properties": {"repobilityId": "abfb0ae31e077204", "scanner": "scanner-primary", "fingerprint": "1f5e16eee9ca9e24", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-564dc8e41e9f66bd", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/livespec_dev_tooling/checks/test_per_file_coverage.py:88"}, "properties": {"repobilityId": "98757b153a065fd9", "scanner": "scanner-primary", "fingerprint": "564dc8e41e9f66bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-616373c4e8dd4cff", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/livespec_dev_tooling/checks/test_all_declared.py:121"}, "properties": {"repobilityId": "63a2c3a8ac274022", "scanner": "scanner-primary", "fingerprint": "616373c4e8dd4cff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51904de385930f9c", "level": "note", "message": {"text": "Legacy-named symbol `test_old` in tests/livespec_dev_tooling/checks/test_heading_coverage.py:129"}, "properties": {"repobilityId": "7964f3a87fb673c3", "scanner": "scanner-primary", "fingerprint": "51904de385930f9c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-02af480437c1d59b", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/livespec_dev_tooling/checks/test_commit_pairs_source_and_test.py:40"}, "properties": {"repobilityId": "4d97ac99e03029f9", "scanner": "scanner-primary", "fingerprint": "02af480437c1d59b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bfad52febe714d41", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/livespec_dev_tooling/checks/test_aggregate_completeness.py:320"}, "properties": {"repobilityId": "acb49a65abdf7ec7", "scanner": "scanner-primary", "fingerprint": "bfad52febe714d41", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c4093e71e67f7ae", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/livespec_dev_tooling/agent_hooks/test_subagent_stop_guard.py:67"}, "properties": {"repobilityId": "701f6885006ed23e", "scanner": "scanner-primary", "fingerprint": "2c4093e71e67f7ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b352daa511fbbda6", "level": "none", "message": {"text": "Commented-code block (7 lines) in livespec_dev_tooling/parallel_check_dispatcher.py:86"}, "properties": {"repobilityId": "713fe0178ff32996", "scanner": "scanner-primary", "fingerprint": "b352daa511fbbda6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d012671fe6507717", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/parallel_check_dispatcher.py:223"}, "properties": {"repobilityId": "a420b21a0ddb1611", "scanner": "scanner-primary", "fingerprint": "d012671fe6507717", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8c5f22205f945320", "level": "none", "message": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/config.py:36"}, "properties": {"repobilityId": "8aea7871a1120105", "scanner": "scanner-primary", "fingerprint": "8c5f22205f945320", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd10b8caa07cf039", "level": "none", "message": {"text": "Commented-code block (9 lines) in livespec_dev_tooling/red_leg_scope.py:73"}, "properties": {"repobilityId": "81f12424fff12812", "scanner": "scanner-primary", "fingerprint": "fd10b8caa07cf039", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-539df9c621bd42c8", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/red_leg_scope.py:142"}, "properties": {"repobilityId": "39811c098be14d3f", "scanner": "scanner-primary", "fingerprint": "539df9c621bd42c8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-85ff7f0edcd2f081", "level": "none", "message": {"text": "Commented-code block (9 lines) in livespec_dev_tooling/tdd_commit.py:96"}, "properties": {"repobilityId": "bc88c07a6da56b08", "scanner": "scanner-primary", "fingerprint": "85ff7f0edcd2f081", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ee8789a157b9327", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/tdd_commit.py:176"}, "properties": {"repobilityId": "604dd77996e27f98", "scanner": "scanner-primary", "fingerprint": "0ee8789a157b9327", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-62a5367c3d2d0417", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/green_token.py:47"}, "properties": {"repobilityId": "886225e3ef1e22b6", "scanner": "scanner-primary", "fingerprint": "62a5367c3d2d0417", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-07277089a9f9459a", "level": "none", "message": {"text": "Commented-code block (6 lines) in livespec_dev_tooling/fleet/_reconcile.py:54"}, "properties": {"repobilityId": "480957051af977fb", "scanner": "scanner-primary", "fingerprint": "07277089a9f9459a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b143db25aaf91985", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/fleet/_context.py:110"}, "properties": {"repobilityId": "4bac4485dd783c39", "scanner": "scanner-primary", "fingerprint": "b143db25aaf91985", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b1948fd126ffce44", "level": "none", "message": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/_vendor/structlog/stdlib.py:133"}, "properties": {"repobilityId": "0b518f40c45f94d1", "scanner": "scanner-primary", "fingerprint": "b1948fd126ffce44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f43eea1316297a5", "level": "note", "message": {"text": "Stub function `_nop` (body is just `pass`/`return`) \u2014 livespec_dev_tooling/_vendor/structlog/_native.py:34"}, "properties": {"repobilityId": "705fb2da290a954f", "scanner": "scanner-primary", "fingerprint": "3f43eea1316297a5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-f19a7d7ed5415a63", "level": "none", "message": {"text": "Commented-code block (9 lines) in livespec_dev_tooling/_vendor/tomli/_parser.py:26"}, "properties": {"repobilityId": "e50fea2c9c546b33", "scanner": "scanner-primary", "fingerprint": "f19a7d7ed5415a63", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-44a19e4debcda4b5", "level": "none", "message": {"text": "Commented-code block (7 lines) in livespec_dev_tooling/testing/cli_e2e.py:223"}, "properties": {"repobilityId": "de64513933c64626", "scanner": "scanner-primary", "fingerprint": "44a19e4debcda4b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a782d9e62bef3e18", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/testing/cli_e2e.py:239"}, "properties": {"repobilityId": "e9812326587f4ce8", "scanner": "scanner-primary", "fingerprint": "a782d9e62bef3e18", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fe4f23a52794dd55", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/workflow_checks/no_stale_revise_branches.py:164"}, "properties": {"repobilityId": "8d17a837cbbca4e0", "scanner": "scanner-primary", "fingerprint": "fe4f23a52794dd55", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f637ffce55b37062", "level": "none", "message": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/cross_repo/pin_autodiscovery.py:139"}, "properties": {"repobilityId": "85d88a49c2d94427", "scanner": "scanner-primary", "fingerprint": "f637ffce55b37062", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21ef8823dc5b8155", "level": "none", "message": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/checks/no_write_direct.py:61"}, "properties": {"repobilityId": "0494f6e61e813ec0", "scanner": "scanner-primary", "fingerprint": "21ef8823dc5b8155", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17bc24b56d296f70", "level": "none", "message": {"text": "Commented-code block (7 lines) in livespec_dev_tooling/checks/no_todo_registry.py:70"}, "properties": {"repobilityId": "2552c30242541531", "scanner": "scanner-primary", "fingerprint": "17bc24b56d296f70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce12012350939d86", "level": "none", "message": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/checks/skill_invocation_paths.py:78"}, "properties": {"repobilityId": "5cc2808c77de8540", "scanner": "scanner-primary", "fingerprint": "ce12012350939d86", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-905efa6f30c1e9b8", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/primary_checkout_commit_refuse_hook_installed.py:127"}, "properties": {"repobilityId": "53af88f3ebd018e7", "scanner": "scanner-primary", "fingerprint": "905efa6f30c1e9b8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5e858835f4dc8ead", "level": "none", "message": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/checks/wrapper_shape.py:68"}, "properties": {"repobilityId": "58b68a1892fc7b48", "scanner": "scanner-primary", "fingerprint": "5e858835f4dc8ead", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f99ea5e1e9ebcea", "level": "none", "message": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/checks/per_file_coverage.py:59"}, "properties": {"repobilityId": "f99e3c112dbf7c45", "scanner": "scanner-primary", "fingerprint": "6f99ea5e1e9ebcea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9878ca1e14a551c1", "level": "none", "message": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/checks/aggregate_completeness.py:274"}, "properties": {"repobilityId": "84f9d129b4b2f882", "scanner": "scanner-primary", "fingerprint": "9878ca1e14a551c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60c4a20b15b99d1b", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/check_tools.py:82"}, "properties": {"repobilityId": "58d1dfa09e82ef91", "scanner": "scanner-primary", "fingerprint": "60c4a20b15b99d1b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0a935ca4e9627e91", "level": "none", "message": {"text": "Commented-code block (6 lines) in livespec_dev_tooling/checks/_red_green_replay_modes.py:24"}, "properties": {"repobilityId": "e4ee995d8fc5fe1e", "scanner": "scanner-primary", "fingerprint": "0a935ca4e9627e91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0739b92a093101bf", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/_red_green_replay_modes.py:78"}, "properties": {"repobilityId": "efd418b5d4d2f0e6", "scanner": "scanner-primary", "fingerprint": "0739b92a093101bf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-57c7f503e8016ce4", "level": "none", "message": {"text": "Commented-code block (7 lines) in livespec_dev_tooling/checks/red_green_replay.py:91"}, "properties": {"repobilityId": "836135b04ff1b5df", "scanner": "scanner-primary", "fingerprint": "57c7f503e8016ce4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d9cd896baebebc6", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/red_green_replay.py:161"}, "properties": {"repobilityId": "a6a8ba28b49670d3", "scanner": "scanner-primary", "fingerprint": "5d9cd896baebebc6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bf08a660fbd72481", "level": "none", "message": {"text": "Commented-code block (8 lines) in livespec_dev_tooling/checks/check_coverage_incremental.py:73"}, "properties": {"repobilityId": "2b539acf867aa94b", "scanner": "scanner-primary", "fingerprint": "bf08a660fbd72481", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d9a48a98aff176f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/check_coverage_incremental.py:228"}, "properties": {"repobilityId": "33f2f764db3a3936", "scanner": "scanner-primary", "fingerprint": "0d9a48a98aff176f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b64d601439122ccb", "level": "none", "message": {"text": "Commented-code block (6 lines) in livespec_dev_tooling/checks/branch_protection_alignment.py:94"}, "properties": {"repobilityId": "aa36ef86e68fb388", "scanner": "scanner-primary", "fingerprint": "b64d601439122ccb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81ab023844bb1e48", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/branch_protection_alignment.py:173"}, "properties": {"repobilityId": "a93fbd8e368ccd84", "scanner": "scanner-primary", "fingerprint": "81ab023844bb1e48", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-37f1234018421d2d", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/commit_pairs_source_and_test.py:77"}, "properties": {"repobilityId": "e5c0ebe0e142eedd", "scanner": "scanner-primary", "fingerprint": "37f1234018421d2d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dc66305787548541", "level": "none", "message": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/checks/tool_backed_check_completeness.py:97"}, "properties": {"repobilityId": "84bd8b7368021b80", "scanner": "scanner-primary", "fingerprint": "dc66305787548541", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-837354a5b334d6fc", "level": "none", "message": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/checks/master_ci_green.py:114"}, "properties": {"repobilityId": "c44d1dea4f08caf6", "scanner": "scanner-primary", "fingerprint": "837354a5b334d6fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb7327c58f36e2d2", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/master_ci_green.py:82"}, "properties": {"repobilityId": "7ec5513b0a355337", "scanner": "scanner-primary", "fingerprint": "fb7327c58f36e2d2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-15cf73fca03fe7df", "level": "none", "message": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/checks/heading_coverage.py:368"}, "properties": {"repobilityId": "1c07395bf6e2904f", "scanner": "scanner-primary", "fingerprint": "15cf73fca03fe7df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16f401281e41ffec", "level": "none", "message": {"text": "Commented-code block (7 lines) in livespec_dev_tooling/checks/check_mutation.py:123"}, "properties": {"repobilityId": "ef1d9489c42a2c46", "scanner": "scanner-primary", "fingerprint": "16f401281e41ffec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca75d8cb76d56667", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/check_mutation.py:240"}, "properties": {"repobilityId": "c55412fec0a9bab2", "scanner": "scanner-primary", "fingerprint": "ca75d8cb76d56667", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e1b971db19cd0fa0", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/checks/tests_no_subprocess_spawn.py:99"}, "properties": {"repobilityId": "76a2dd96b336b5ac", "scanner": "scanner-primary", "fingerprint": "e1b971db19cd0fa0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-80dda742a6ec188e", "level": "none", "message": {"text": "Commented-code block (7 lines) in livespec_dev_tooling/checks/vendor_manifest.py:108"}, "properties": {"repobilityId": "3e1fa47b36c2f174", "scanner": "scanner-primary", "fingerprint": "80dda742a6ec188e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9eaaca041591a37d", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 livespec_dev_tooling/agent_hooks/subagent_stop_guard.py:105"}, "properties": {"repobilityId": "906a996b4cd76784", "scanner": "scanner-primary", "fingerprint": "9eaaca041591a37d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-49c0e0d1667ccd0e", "level": "none", "message": {"text": "Commented-code block (5 lines) in livespec_dev_tooling/agent_hooks/pretooluse_background_guard.py:57"}, "properties": {"repobilityId": "2ebcc285ed5b9206", "scanner": "scanner-primary", "fingerprint": "49c0e0d1667ccd0e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6718a631ead09376", "level": "note", "message": {"text": "Near-duplicate function bodies in 38 places"}, "properties": {"repobilityId": "51b5dfbf9983b31d", "scanner": "scanner-primary", "fingerprint": "6718a631ead09376", "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": "de3edf660bfa9d36", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "021932bd6048d3ad", "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": "e916bd6530cf114b", "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": "90c6ae1a32663727", "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": "7905f0485914830b", "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": "79822208c44c9989", "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": "77dfafa683a995d9", "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": "166dff0d14d8ab51", "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": "c7bf6119262dd146", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "b90a412e982109a1", "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": "1a43c5a15b8b1c1e", "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": "903a4f7d5d1b5bfd", "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": "a4106d4757438f8a", "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": "cff1eef2c47cfd36", "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": "e94b7bff4456c1e9", "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": "6114513efd714345", "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": "37db8c1c66186756", "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": "466d8014b41798be", "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": "988ed59de50a813d", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}