{"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-04705a49cb0ea51e", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "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-c31830a44ba136d9", "name": "Possibly dead Python function: do_HEAD", "shortDescription": {"text": "Possibly dead Python function: do_HEAD"}, "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-094683709db94674", "name": "Possibly dead Python function: do_GET", "shortDescription": {"text": "Possibly dead Python function: do_GET"}, "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-bd23d81692f4b9c2", "name": "Possibly dead Python function: handle_error", "shortDescription": {"text": "Possibly dead Python function: handle_error"}, "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-bc1db01ca1745bf1", "name": "Possibly dead Python function: worktree_conflict_rule", "shortDescription": {"text": "Possibly dead Python function: worktree_conflict_rule"}, "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-a3c10a6dd5989388", "name": "Possibly dead Python function: dry_merge_gate_rule", "shortDescription": {"text": "Possibly dead Python function: dry_merge_gate_rule"}, "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-f2fd2cfe4efb0523", "name": "Possibly dead Python function: ready_to_ship_rule", "shortDescription": {"text": "Possibly dead Python function: ready_to_ship_rule"}, "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-fc04f85b5e64db10", "name": "Possibly dead Python function: auto_archive_rule", "shortDescription": {"text": "Possibly dead Python function: auto_archive_rule"}, "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-a903f7c3b396d666", "name": "Possibly dead Python function: cmd_init", "shortDescription": {"text": "Possibly dead Python function: cmd_init"}, "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-fa5e47ef3651f89f", "name": "Possibly dead Python function: cmd_register", "shortDescription": {"text": "Possibly dead Python function: cmd_register"}, "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-a5ca0f642113d704", "name": "Possibly dead Python function: cmd_prior_blocker", "shortDescription": {"text": "Possibly dead Python function: cmd_prior_blocker"}, "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-9ef3bc6cef5b92be", "name": "Possibly dead Python function: cmd_logs", "shortDescription": {"text": "Possibly dead Python function: cmd_logs"}, "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-a8a47115731660ac", "name": "Possibly dead Python function: cmd_status", "shortDescription": {"text": "Possibly dead Python function: cmd_status"}, "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-a60c04937233dc4d", "name": "Possibly dead Python function: cmd_pause", "shortDescription": {"text": "Possibly dead Python function: cmd_pause"}, "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-2224d82a08272ae6", "name": "Possibly dead Python function: cmd_resume", "shortDescription": {"text": "Possibly dead Python function: cmd_resume"}, "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-7c3bd0d941e7431a", "name": "Possibly dead Python function: cmd_retry", "shortDescription": {"text": "Possibly dead Python function: cmd_retry"}, "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-6d229bebe2b2c0dc", "name": "Possibly dead Python function: cmd_extend_lease", "shortDescription": {"text": "Possibly dead Python function: cmd_extend_lease"}, "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-f0f3b78ae305cec3", "name": "Possibly dead Python function: cmd_release_claim", "shortDescription": {"text": "Possibly dead Python function: cmd_release_claim"}, "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-fd31bcba26f56ee1", "name": "Possibly dead Python function: cmd_force_complete", "shortDescription": {"text": "Possibly dead Python function: cmd_force_complete"}, "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-8e76aac7ab7e7814", "name": "Possibly dead Python function: deco", "shortDescription": {"text": "Possibly dead Python function: deco"}, "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-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-53fd62a022de1bc5", "name": "Insecure pattern 'subprocess_shell_true' in end_of_line/cli.py:6124", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in end_of_line/cli.py:6124"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0e42f7de7ed1d355", "name": "Insecure pattern 'subprocess_shell_true' in end_of_line/dispatch.py:440", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in end_of_line/dispatch.py:440"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8f8092982b3f5ba1", "name": "Insecure pattern 'subprocess_shell_true' in end_of_line/dry_merge.py:96", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in end_of_line/dry_merge.py:96"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-60639027c07b8a53", "name": "Insecure pattern 'direct_innerhtml_assignment' in end_of_line/web/index.html:323", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in end_of_line/web/index.html:323"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b811d8aad82810e0", "name": "Insecure pattern 'direct_innerhtml_assignment' in plans/archive/clu-top-tui/brainstorm/prototype.html:253", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in plans/archive/clu-top-tui/brainstorm/prototype.html:253"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9388b580aece5cf6", "name": "Very large file: end_of_line/cli.py (6301 lines)", "shortDescription": {"text": "Very large file: end_of_line/cli.py (6301 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-798bf6f635e5aea7", "name": "Very large file: tests/test_top.py (1618 lines)", "shortDescription": {"text": "Very large file: tests/test_top.py (1618 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 325 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-02c0830020ea9247", "name": "Agent authority lacks a verifier contract: end_of_line/skills/clu-reply/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: end_of_line/skills/clu-reply/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d6980e80312ea0c5", "name": "Commented-code block (5 lines) in end_of_line/webserver.py:727", "shortDescription": {"text": "Commented-code block (5 lines) in end_of_line/webserver.py:727"}, "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-4972711dbeb9c9ca", "name": "Commented-code block (5 lines) in end_of_line/config.py:106", "shortDescription": {"text": "Commented-code block (5 lines) in end_of_line/config.py:106"}, "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-f7c43383a0603f40", "name": "Commented-code block (6 lines) in end_of_line/quota.py:45", "shortDescription": {"text": "Commented-code block (6 lines) in end_of_line/quota.py:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-48b57c6e6c6e05e4", "name": "Commented-code block (6 lines) in end_of_line/demo_worker.py:38", "shortDescription": {"text": "Commented-code block (6 lines) in end_of_line/demo_worker.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-c9b2e0f097a0821e", "name": "Commented-code block (7 lines) in end_of_line/_pty_spawn_shim.py:94", "shortDescription": {"text": "Commented-code block (7 lines) in end_of_line/_pty_spawn_shim.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-736475eeee823915", "name": "Network/subprocess call without timeout or try/except \u2014 end_of_line/cross_plan_rules.py:283", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 end_of_line/cross_plan_rules.py:283"}, "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-dca1345e0f70757e", "name": "Commented-code block (5 lines) in end_of_line/inbox.py:57", "shortDescription": {"text": "Commented-code block (5 lines) in end_of_line/inbox.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-6aedf7544e912a2d", "name": "Commented-code block (5 lines) in end_of_line/cli.py:2072", "shortDescription": {"text": "Commented-code block (5 lines) in end_of_line/cli.py:2072"}, "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-1dc857fb7c638ddc", "name": "Network/subprocess call without timeout or try/except \u2014 end_of_line/cli.py:1519", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 end_of_line/cli.py:1519"}, "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-76b38f5875ffdbcb", "name": "Network/subprocess call without timeout or try/except \u2014 end_of_line/notify_imessage_inbound.py:115", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 end_of_line/notify_imessage_inbound.py:115"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bb79388be65efec0", "name": "Commented-code block (5 lines) in end_of_line/top.py:382", "shortDescription": {"text": "Commented-code block (5 lines) in end_of_line/top.py:382"}, "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-cd989fa42ecb3beb", "name": "Commented-code block (5 lines) in end_of_line/top_registry.py:231", "shortDescription": {"text": "Commented-code block (5 lines) in end_of_line/top_registry.py:231"}, "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-9fe478eaf3d96589", "name": "Commented-code block (5 lines) in end_of_line/dispatch.py:27", "shortDescription": {"text": "Commented-code block (5 lines) in end_of_line/dispatch.py:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0b23993cdfc7ffc6", "name": "Network/subprocess call without timeout or try/except \u2014 end_of_line/dispatch.py:617", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 end_of_line/dispatch.py:617"}, "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-aeb9095e3e8f5051", "name": "Commented-code block (5 lines) in end_of_line/notify.py:65", "shortDescription": {"text": "Commented-code block (5 lines) in end_of_line/notify.py:65"}, "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-2452c8382f086b1a", "name": "Commented-code block (6 lines) in end_of_line/state.py:29", "shortDescription": {"text": "Commented-code block (6 lines) in end_of_line/state.py:29"}, "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-0e6eba3d0b0279d7", "name": "Network/subprocess call without timeout or try/except \u2014 end_of_line/dry_merge.py:64", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 end_of_line/dry_merge.py:64"}, "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-a7bec59e6d25c109", "name": "Commented-code block (6 lines) in end_of_line/supervisor.py:56", "shortDescription": {"text": "Commented-code block (6 lines) in end_of_line/supervisor.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-b0aea2e0d8163cdc", "name": "Commented-code block (6 lines) in end_of_line/hooks/clu_inbox_surface.py:112", "shortDescription": {"text": "Commented-code block (6 lines) in end_of_line/hooks/clu_inbox_surface.py:112"}, "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-20517a74e8de7c30", "name": "Legacy-named symbol `test_install_writes_marker_v2` in tests/test_install_hook.py:70", "shortDescription": {"text": "Legacy-named symbol `test_install_writes_marker_v2` in tests/test_install_hook.py:70"}, "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-aa83219b239b423e", "name": "Commented-code block (6 lines) in tests/test_install_hook.py:88", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_install_hook.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-1ae4dee2ff6d7df1", "name": "Commented-code block (5 lines) in tests/test_systemic_failure.py:263", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_systemic_failure.py:263"}, "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-0783cf62f977c5e4", "name": "Commented-code block (5 lines) in tests/test_webserver.py:139", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_webserver.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-56ccbbd2ad3f9b13", "name": "Commented-code block (5 lines) in tests/test_supervisor_stuck_tool.py:280", "shortDescription": {"text": "Commented-code block (5 lines) in tests/test_supervisor_stuck_tool.py:280"}, "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-3700668f4f47f1fc", "name": "Legacy-named symbol `_write_v1` in tests/test_monitor_migration.py:32", "shortDescription": {"text": "Legacy-named symbol `_write_v1` in tests/test_monitor_migration.py:32"}, "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-427be86e872af128", "name": "Commented-code block (6 lines) in tests/test_top.py:83", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_top.py:83"}, "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-7c78acd948d925a4", "name": "Legacy-named symbol `plans_v2` in tests/test_dry_merge_gate_rule.py:196", "shortDescription": {"text": "Legacy-named symbol `plans_v2` in tests/test_dry_merge_gate_rule.py:196"}, "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-cf07a294190549c0", "name": "Commented-code block (7 lines) in tests/test_demo.py:64", "shortDescription": {"text": "Commented-code block (7 lines) in tests/test_demo.py:64"}, "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-77172a0ede9498ea", "name": "Commented-code block (6 lines) in tests/test_terminalize.py:96", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_terminalize.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-51d336f5c7d5eb14", "name": "Commented-code block (6 lines) in tests/test_supervisor.py:100", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_supervisor.py:100"}, "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-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:\nend_of_line/heartbeat_daemon.py:run_loop, end_of_line/heartbeat_daemon.py:run\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:\nend_of_line/top_render.py:width, end_of_line/top_render.py:width, end_of_line/top_render.py:width\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/19862"}, "properties": {"repository": "smabe/end-of-line", "repoUrl": "https://github.com/smabe/end-of-line", "branch": "main"}, "results": [{"ruleId": "scanner-04705a49cb0ea51e", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "04705a49cb0ea51e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/webserver.py:570"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c31830a44ba136d9", "level": "note", "message": {"text": "Possibly dead Python function: do_HEAD"}, "properties": {"repobilityId": "105ffef0dec52931", "scanner": "scanner-primary", "fingerprint": "c31830a44ba136d9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/webserver.py:573"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-094683709db94674", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "094683709db94674", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/webserver.py:576"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bd23d81692f4b9c2", "level": "note", "message": {"text": "Possibly dead Python function: handle_error"}, "properties": {"repobilityId": "220b49dbecdb58f3", "scanner": "scanner-primary", "fingerprint": "bd23d81692f4b9c2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/webserver.py:726"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bc1db01ca1745bf1", "level": "note", "message": {"text": "Possibly dead Python function: worktree_conflict_rule"}, "properties": {"repobilityId": "a36d06c91e980e11", "scanner": "scanner-primary", "fingerprint": "bc1db01ca1745bf1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/cross_plan_rules.py:226"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a3c10a6dd5989388", "level": "note", "message": {"text": "Possibly dead Python function: dry_merge_gate_rule"}, "properties": {"repobilityId": "7e6e08ad24e580e0", "scanner": "scanner-primary", "fingerprint": "a3c10a6dd5989388", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/cross_plan_rules.py:339"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f2fd2cfe4efb0523", "level": "note", "message": {"text": "Possibly dead Python function: ready_to_ship_rule"}, "properties": {"repobilityId": "51720b42f561da47", "scanner": "scanner-primary", "fingerprint": "f2fd2cfe4efb0523", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/cross_plan_rules.py:447"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fc04f85b5e64db10", "level": "note", "message": {"text": "Possibly dead Python function: auto_archive_rule"}, "properties": {"repobilityId": "0b4086b5b36788a9", "scanner": "scanner-primary", "fingerprint": "fc04f85b5e64db10", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/cross_plan_rules.py:517"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a903f7c3b396d666", "level": "note", "message": {"text": "Possibly dead Python function: cmd_init"}, "properties": {"repobilityId": "3f17b7245a36f920", "scanner": "scanner-primary", "fingerprint": "a903f7c3b396d666", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/cli.py:1952"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fa5e47ef3651f89f", "level": "note", "message": {"text": "Possibly dead Python function: cmd_register"}, "properties": {"repobilityId": "c0f005c42b2646ae", "scanner": "scanner-primary", "fingerprint": "fa5e47ef3651f89f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/cli.py:2041"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a5ca0f642113d704", "level": "note", "message": {"text": "Possibly dead Python function: cmd_prior_blocker"}, "properties": {"repobilityId": "fa058d33caa83916", "scanner": "scanner-primary", "fingerprint": "a5ca0f642113d704", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/cli.py:4064"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9ef3bc6cef5b92be", "level": "note", "message": {"text": "Possibly dead Python function: cmd_logs"}, "properties": {"repobilityId": "983c48780a905c98", "scanner": "scanner-primary", "fingerprint": "9ef3bc6cef5b92be", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/cli.py:4315"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a8a47115731660ac", "level": "note", "message": {"text": "Possibly dead Python function: cmd_status"}, "properties": {"repobilityId": "244b91f3ae7622bf", "scanner": "scanner-primary", "fingerprint": "a8a47115731660ac", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/cli.py:4325"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a60c04937233dc4d", "level": "note", "message": {"text": "Possibly dead Python function: cmd_pause"}, "properties": {"repobilityId": "91caa55bcba25bb6", "scanner": "scanner-primary", "fingerprint": "a60c04937233dc4d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/cli.py:4387"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2224d82a08272ae6", "level": "note", "message": {"text": "Possibly dead Python function: cmd_resume"}, "properties": {"repobilityId": "446f8414d55507a8", "scanner": "scanner-primary", "fingerprint": "2224d82a08272ae6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/cli.py:4400"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7c3bd0d941e7431a", "level": "note", "message": {"text": "Possibly dead Python function: cmd_retry"}, "properties": {"repobilityId": "929b97d802447067", "scanner": "scanner-primary", "fingerprint": "7c3bd0d941e7431a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/cli.py:4419"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6d229bebe2b2c0dc", "level": "note", "message": {"text": "Possibly dead Python function: cmd_extend_lease"}, "properties": {"repobilityId": "63e0d21797ec77b4", "scanner": "scanner-primary", "fingerprint": "6d229bebe2b2c0dc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/cli.py:4439"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f0f3b78ae305cec3", "level": "note", "message": {"text": "Possibly dead Python function: cmd_release_claim"}, "properties": {"repobilityId": "0161f45e415b99f9", "scanner": "scanner-primary", "fingerprint": "f0f3b78ae305cec3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/cli.py:4473"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fd31bcba26f56ee1", "level": "note", "message": {"text": "Possibly dead Python function: cmd_force_complete"}, "properties": {"repobilityId": "f315de1f075ac9cd", "scanner": "scanner-primary", "fingerprint": "fd31bcba26f56ee1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/cli.py:4850"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8e76aac7ab7e7814", "level": "note", "message": {"text": "Possibly dead Python function: deco"}, "properties": {"repobilityId": "11da05572c448654", "scanner": "scanner-primary", "fingerprint": "8e76aac7ab7e7814", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/top_registry.py:389"}, "region": {"startLine": 1}}}]}, {"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-53fd62a022de1bc5", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in end_of_line/cli.py:6124"}, "properties": {"repobilityId": "13bc0878930645b7", "scanner": "scanner-primary", "fingerprint": "53fd62a022de1bc5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/cli.py"}, "region": {"startLine": 6124}}}]}, {"ruleId": "scanner-0e42f7de7ed1d355", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in end_of_line/dispatch.py:440"}, "properties": {"repobilityId": "da6cace8a6954300", "scanner": "scanner-primary", "fingerprint": "0e42f7de7ed1d355", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/dispatch.py"}, "region": {"startLine": 440}}}]}, {"ruleId": "scanner-8f8092982b3f5ba1", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in end_of_line/dry_merge.py:96"}, "properties": {"repobilityId": "ad583a0c2f79c331", "scanner": "scanner-primary", "fingerprint": "8f8092982b3f5ba1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/dry_merge.py"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-60639027c07b8a53", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in end_of_line/web/index.html:323"}, "properties": {"repobilityId": "0e04b519c991258f", "scanner": "scanner-primary", "fingerprint": "60639027c07b8a53", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/web/index.html"}, "region": {"startLine": 323}}}]}, {"ruleId": "scanner-b811d8aad82810e0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in plans/archive/clu-top-tui/brainstorm/prototype.html:253"}, "properties": {"repobilityId": "7be2a60286c22d2e", "scanner": "scanner-primary", "fingerprint": "b811d8aad82810e0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "plans/archive/clu-top-tui/brainstorm/prototype.html"}, "region": {"startLine": 253}}}]}, {"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-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-9388b580aece5cf6", "level": "note", "message": {"text": "Very large file: end_of_line/cli.py (6301 lines)"}, "properties": {"repobilityId": "ee644a9f189d3f40", "scanner": "scanner-primary", "fingerprint": "9388b580aece5cf6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-798bf6f635e5aea7", "level": "note", "message": {"text": "Very large file: tests/test_top.py (1618 lines)"}, "properties": {"repobilityId": "f92faec62bb5abfa", "scanner": "scanner-primary", "fingerprint": "798bf6f635e5aea7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "c013b9b00593f0ea", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "a3b38bf4faea55c5", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "efc9efaa2d0959fa", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "c7d874eed342b36d", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "5b16bf8f965343db", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "add9dd38ea729c27", "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": "91cea7c8c72dbe82", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-02c0830020ea9247", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: end_of_line/skills/clu-reply/SKILL.md"}, "properties": {"repobilityId": "74473aa1db3432e0", "scanner": "scanner-primary", "fingerprint": "02c0830020ea9247", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "end_of_line/skills/clu-reply/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d6980e80312ea0c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in end_of_line/webserver.py:727"}, "properties": {"repobilityId": "37dfd21077c0e7b9", "scanner": "scanner-primary", "fingerprint": "d6980e80312ea0c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4972711dbeb9c9ca", "level": "none", "message": {"text": "Commented-code block (5 lines) in end_of_line/config.py:106"}, "properties": {"repobilityId": "fc8a54b402bd5414", "scanner": "scanner-primary", "fingerprint": "4972711dbeb9c9ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7c43383a0603f40", "level": "none", "message": {"text": "Commented-code block (6 lines) in end_of_line/quota.py:45"}, "properties": {"repobilityId": "9d25d7587c8ea348", "scanner": "scanner-primary", "fingerprint": "f7c43383a0603f40", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48b57c6e6c6e05e4", "level": "none", "message": {"text": "Commented-code block (6 lines) in end_of_line/demo_worker.py:38"}, "properties": {"repobilityId": "f95e5f0464aedfd7", "scanner": "scanner-primary", "fingerprint": "48b57c6e6c6e05e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c9b2e0f097a0821e", "level": "none", "message": {"text": "Commented-code block (7 lines) in end_of_line/_pty_spawn_shim.py:94"}, "properties": {"repobilityId": "f45b7dfc69433271", "scanner": "scanner-primary", "fingerprint": "c9b2e0f097a0821e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-736475eeee823915", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 end_of_line/cross_plan_rules.py:283"}, "properties": {"repobilityId": "b17f3998e794d913", "scanner": "scanner-primary", "fingerprint": "736475eeee823915", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dca1345e0f70757e", "level": "none", "message": {"text": "Commented-code block (5 lines) in end_of_line/inbox.py:57"}, "properties": {"repobilityId": "a8b1b18c965325f9", "scanner": "scanner-primary", "fingerprint": "dca1345e0f70757e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6aedf7544e912a2d", "level": "none", "message": {"text": "Commented-code block (5 lines) in end_of_line/cli.py:2072"}, "properties": {"repobilityId": "9f1ba197e5a7942c", "scanner": "scanner-primary", "fingerprint": "6aedf7544e912a2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1dc857fb7c638ddc", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 end_of_line/cli.py:1519"}, "properties": {"repobilityId": "c1a35ddfe07bd2db", "scanner": "scanner-primary", "fingerprint": "1dc857fb7c638ddc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-76b38f5875ffdbcb", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 end_of_line/notify_imessage_inbound.py:115"}, "properties": {"repobilityId": "67c7adbf979f5c75", "scanner": "scanner-primary", "fingerprint": "76b38f5875ffdbcb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bb79388be65efec0", "level": "none", "message": {"text": "Commented-code block (5 lines) in end_of_line/top.py:382"}, "properties": {"repobilityId": "fdf147c2460fb2d2", "scanner": "scanner-primary", "fingerprint": "bb79388be65efec0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd989fa42ecb3beb", "level": "none", "message": {"text": "Commented-code block (5 lines) in end_of_line/top_registry.py:231"}, "properties": {"repobilityId": "4c901c6d37f381cf", "scanner": "scanner-primary", "fingerprint": "cd989fa42ecb3beb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9fe478eaf3d96589", "level": "none", "message": {"text": "Commented-code block (5 lines) in end_of_line/dispatch.py:27"}, "properties": {"repobilityId": "810f7fba8fd75984", "scanner": "scanner-primary", "fingerprint": "9fe478eaf3d96589", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b23993cdfc7ffc6", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 end_of_line/dispatch.py:617"}, "properties": {"repobilityId": "d10fccb139701043", "scanner": "scanner-primary", "fingerprint": "0b23993cdfc7ffc6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aeb9095e3e8f5051", "level": "none", "message": {"text": "Commented-code block (5 lines) in end_of_line/notify.py:65"}, "properties": {"repobilityId": "bc700782ee40ec5a", "scanner": "scanner-primary", "fingerprint": "aeb9095e3e8f5051", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2452c8382f086b1a", "level": "none", "message": {"text": "Commented-code block (6 lines) in end_of_line/state.py:29"}, "properties": {"repobilityId": "65254f966927ff1c", "scanner": "scanner-primary", "fingerprint": "2452c8382f086b1a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e6eba3d0b0279d7", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 end_of_line/dry_merge.py:64"}, "properties": {"repobilityId": "acf98f9c7e318dba", "scanner": "scanner-primary", "fingerprint": "0e6eba3d0b0279d7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a7bec59e6d25c109", "level": "none", "message": {"text": "Commented-code block (6 lines) in end_of_line/supervisor.py:56"}, "properties": {"repobilityId": "44d761463546211c", "scanner": "scanner-primary", "fingerprint": "a7bec59e6d25c109", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0aea2e0d8163cdc", "level": "none", "message": {"text": "Commented-code block (6 lines) in end_of_line/hooks/clu_inbox_surface.py:112"}, "properties": {"repobilityId": "f52ac2dbe6e9ae7e", "scanner": "scanner-primary", "fingerprint": "b0aea2e0d8163cdc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20517a74e8de7c30", "level": "note", "message": {"text": "Legacy-named symbol `test_install_writes_marker_v2` in tests/test_install_hook.py:70"}, "properties": {"repobilityId": "e67cbf62d616e739", "scanner": "scanner-primary", "fingerprint": "20517a74e8de7c30", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-aa83219b239b423e", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_install_hook.py:88"}, "properties": {"repobilityId": "adfa1bda73be20ce", "scanner": "scanner-primary", "fingerprint": "aa83219b239b423e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ae4dee2ff6d7df1", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_systemic_failure.py:263"}, "properties": {"repobilityId": "1a55d0c24eaf107d", "scanner": "scanner-primary", "fingerprint": "1ae4dee2ff6d7df1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0783cf62f977c5e4", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_webserver.py:139"}, "properties": {"repobilityId": "b34fd76a5ab2d718", "scanner": "scanner-primary", "fingerprint": "0783cf62f977c5e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56ccbbd2ad3f9b13", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/test_supervisor_stuck_tool.py:280"}, "properties": {"repobilityId": "4932117bab722fdb", "scanner": "scanner-primary", "fingerprint": "56ccbbd2ad3f9b13", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3700668f4f47f1fc", "level": "note", "message": {"text": "Legacy-named symbol `_write_v1` in tests/test_monitor_migration.py:32"}, "properties": {"repobilityId": "6bd65d29d0e49e42", "scanner": "scanner-primary", "fingerprint": "3700668f4f47f1fc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-427be86e872af128", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_top.py:83"}, "properties": {"repobilityId": "6ade152c27d3ee6a", "scanner": "scanner-primary", "fingerprint": "427be86e872af128", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c78acd948d925a4", "level": "note", "message": {"text": "Legacy-named symbol `plans_v2` in tests/test_dry_merge_gate_rule.py:196"}, "properties": {"repobilityId": "be62bd84eddd5e0a", "scanner": "scanner-primary", "fingerprint": "7c78acd948d925a4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cf07a294190549c0", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/test_demo.py:64"}, "properties": {"repobilityId": "e980b9c026059275", "scanner": "scanner-primary", "fingerprint": "cf07a294190549c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-77172a0ede9498ea", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_terminalize.py:96"}, "properties": {"repobilityId": "9cf0f2eafef08e47", "scanner": "scanner-primary", "fingerprint": "77172a0ede9498ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51d336f5c7d5eb14", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_supervisor.py:100"}, "properties": {"repobilityId": "828198a36d104793", "scanner": "scanner-primary", "fingerprint": "51d336f5c7d5eb14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "83fb23fb6846bad8", "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": "42388969b9c19faf", "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": "2bbc486d2c044499", "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": "b806f2b9bca646b7", "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": "5274bad47b08457f", "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": "db6b3b87890b7624", "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": "9451070fac728929", "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": "ce4e81a89fc3ff6e", "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": "43a945c9eb3a5515", "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": "b33ce3e8e3367bb8", "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": "b15173b8f1318636", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}