{"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-21ee5739343813f1", "name": "Possibly dead Python function: short_session_id", "shortDescription": {"text": "Possibly dead Python function: short_session_id"}, "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-bc67572d9716ce98", "name": "Possibly dead Python function: root_label", "shortDescription": {"text": "Possibly dead Python function: root_label"}, "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-4e7b55035e4f866f", "name": "Possibly dead Python function: source_root_label", "shortDescription": {"text": "Possibly dead Python function: source_root_label"}, "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-2addc629cb8900eb", "name": "Possibly dead Python function: source_prefixed_path", "shortDescription": {"text": "Possibly dead Python function: source_prefixed_path"}, "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-d00cbb3f6b784918", "name": "Possibly dead Python function: share_suffix", "shortDescription": {"text": "Possibly dead Python function: share_suffix"}, "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-3d0e476daec8a076", "name": "Possibly dead Python function: sum_tokens", "shortDescription": {"text": "Possibly dead Python function: sum_tokens"}, "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-37d512d3944d0a6e", "name": "Possibly dead Python function: cache_tokens", "shortDescription": {"text": "Possibly dead Python function: cache_tokens"}, "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-8b01fb224f3b8aa0", "name": "Possibly dead Python function: time_bucket_label", "shortDescription": {"text": "Possibly dead Python function: time_bucket_label"}, "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-fdfa04888c23fe4e", "name": "Possibly dead Python function: time_bucket_label_short", "shortDescription": {"text": "Possibly dead Python function: time_bucket_label_short"}, "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-d6879681cb9816c7", "name": "Possibly dead Python function: ts_to_local", "shortDescription": {"text": "Possibly dead Python function: ts_to_local"}, "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-0c3ddc40ebbb2900", "name": "Possibly dead Python function: action_prev_view", "shortDescription": {"text": "Possibly dead Python function: action_prev_view"}, "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-df4ac304ff5c4f89", "name": "Possibly dead Python function: action_next_view", "shortDescription": {"text": "Possibly dead Python function: action_next_view"}, "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-693dbc5ad1feb4ee", "name": "Possibly dead Python function: action_show_pricing", "shortDescription": {"text": "Possibly dead Python function: action_show_pricing"}, "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-7f8bd3fda47b5395", "name": "Possibly dead Python function: action_show_help", "shortDescription": {"text": "Possibly dead Python function: action_show_help"}, "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-297f03012da98ca2", "name": "Possibly dead Python function: action_auto_refresh_on", "shortDescription": {"text": "Possibly dead Python function: action_auto_refresh_on"}, "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-c4fb71f16ba3a775", "name": "Possibly dead Python function: action_auto_refresh_off", "shortDescription": {"text": "Possibly dead Python function: action_auto_refresh_off"}, "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-f50240730859975d", "name": "Possibly dead Python function: check_action", "shortDescription": {"text": "Possibly dead Python function: check_action"}, "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-4deda9b5f7c87a35", "name": "Possibly dead Python function: action_noop", "shortDescription": {"text": "Possibly dead Python function: action_noop"}, "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-d42c75ebb9be700c", "name": "Possibly dead Python function: delete_sync_state_prefix", "shortDescription": {"text": "Possibly dead Python function: delete_sync_state_prefix"}, "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-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-a53bf972e19b52fd", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "pypa/gh-action-pypi-publish@release/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": "medium", "confidence": 1.0}}, {"id": "scanner-7ffa33751be3d771", "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-fec283aeac9d7d6d", "name": "Very large file: tests/test_store.py (2204 lines)", "shortDescription": {"text": "Very large file: tests/test_store.py (2204 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-d4a075c9c799fd50", "name": "Very large file: tests/test_collectors.py (2224 lines)", "shortDescription": {"text": "Very large file: tests/test_collectors.py (2224 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-2d193d45c7fec6e4", "name": "Very large file: src/agentic_metric/cli.py (1593 lines)", "shortDescription": {"text": "Very large file: src/agentic_metric/cli.py (1593 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-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-e725d2ab884fbd49", "name": "Multiple root agent instruction files without precedence", "shortDescription": {"text": "Multiple root agent instruction files without precedence"}, "fullDescription": {"text": "The repo has multiple top-level AI-coder instruction files. Without precedence rules, different agents may follow different policies."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7ed8ebdca134c1cc", "name": "Legacy-named symbol `sessions_old` in tests/test_store.py:110", "shortDescription": {"text": "Legacy-named symbol `sessions_old` in tests/test_store.py:110"}, "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-76cf1888b3885b2f", "name": "Commented-code block (14 lines) in src/agentic_metric/pricing.py:15", "shortDescription": {"text": "Commented-code block (14 lines) in src/agentic_metric/pricing.py:15"}, "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-4ec318ef445be067", "name": "Commented-code block (14 lines) in src/agentic_metric/collectors/claude_code.py:606", "shortDescription": {"text": "Commented-code block (14 lines) in src/agentic_metric/collectors/claude_code.py:606"}, "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-d7edd5ebeee98bd1", "name": "Commented-code block (5 lines) in src/agentic_metric/collectors/remote.py:301", "shortDescription": {"text": "Commented-code block (5 lines) in src/agentic_metric/collectors/remote.py:301"}, "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-72164428b2df27b8", "name": "Commented-code block (7 lines) in src/agentic_metric/collectors/codex.py:431", "shortDescription": {"text": "Commented-code block (7 lines) in src/agentic_metric/collectors/codex.py:431"}, "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-70fd6648eac575c5", "name": "Legacy-named symbol `sessions_old` in src/agentic_metric/store/database.py:193", "shortDescription": {"text": "Legacy-named symbol `sessions_old` in src/agentic_metric/store/database.py:193"}, "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-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:\nsrc/agentic_metric/cli.py:today_cmd, src/agentic_metric/cli.py:week_cmd, src/agentic_metric/cli.py:month_cmd\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:\nsrc/agentic_metric/usage.py:openai_non_cached_input, src/agentic_metric/usage.py:openai_input_tokens_are_separate\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:\nsrc/agentic_metric/tui/widgets.py:update_data, src/agentic_metric/tui/widgets.py:update_data, src/agentic_metric/tui/widgets.py:update_data, src/agentic_metric/tui/widgets.py:update_data\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/23000"}, "properties": {"repository": "xihuai18/agentic-metric", "repoUrl": "https://github.com/xihuai18/agentic-metric", "branch": "main"}, "results": [{"ruleId": "scanner-21ee5739343813f1", "level": "note", "message": {"text": "Possibly dead Python function: short_session_id"}, "properties": {"repobilityId": "69ca767caac1f967", "scanner": "scanner-primary", "fingerprint": "21ee5739343813f1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/formatting.py:38"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bc67572d9716ce98", "level": "note", "message": {"text": "Possibly dead Python function: root_label"}, "properties": {"repobilityId": "98f06bbc18acb57e", "scanner": "scanner-primary", "fingerprint": "bc67572d9716ce98", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/formatting.py:69"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4e7b55035e4f866f", "level": "note", "message": {"text": "Possibly dead Python function: source_root_label"}, "properties": {"repobilityId": "a7273b6cc49b7786", "scanner": "scanner-primary", "fingerprint": "4e7b55035e4f866f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/formatting.py:74"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2addc629cb8900eb", "level": "note", "message": {"text": "Possibly dead Python function: source_prefixed_path"}, "properties": {"repobilityId": "9dd9ac80f123b2eb", "scanner": "scanner-primary", "fingerprint": "2addc629cb8900eb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/formatting.py:82"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d00cbb3f6b784918", "level": "note", "message": {"text": "Possibly dead Python function: share_suffix"}, "properties": {"repobilityId": "e1731205cd5f96b8", "scanner": "scanner-primary", "fingerprint": "d00cbb3f6b784918", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/formatting.py:127"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3d0e476daec8a076", "level": "note", "message": {"text": "Possibly dead Python function: sum_tokens"}, "properties": {"repobilityId": "b73aa66ecd184404", "scanner": "scanner-primary", "fingerprint": "3d0e476daec8a076", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/formatting.py:138"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-37d512d3944d0a6e", "level": "note", "message": {"text": "Possibly dead Python function: cache_tokens"}, "properties": {"repobilityId": "a53d5db7936dd892", "scanner": "scanner-primary", "fingerprint": "37d512d3944d0a6e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/formatting.py:147"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8b01fb224f3b8aa0", "level": "note", "message": {"text": "Possibly dead Python function: time_bucket_label"}, "properties": {"repobilityId": "77b9279f555e93ba", "scanner": "scanner-primary", "fingerprint": "8b01fb224f3b8aa0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/formatting.py:208"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fdfa04888c23fe4e", "level": "note", "message": {"text": "Possibly dead Python function: time_bucket_label_short"}, "properties": {"repobilityId": "d0b6fb1013a44dc1", "scanner": "scanner-primary", "fingerprint": "fdfa04888c23fe4e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/formatting.py:214"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d6879681cb9816c7", "level": "note", "message": {"text": "Possibly dead Python function: ts_to_local"}, "properties": {"repobilityId": "4f83aefafa730b4d", "scanner": "scanner-primary", "fingerprint": "d6879681cb9816c7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/tui/widgets.py:47"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0c3ddc40ebbb2900", "level": "note", "message": {"text": "Possibly dead Python function: action_prev_view"}, "properties": {"repobilityId": "fd6b0d3639a10000", "scanner": "scanner-primary", "fingerprint": "0c3ddc40ebbb2900", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/tui/app.py:480"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-df4ac304ff5c4f89", "level": "note", "message": {"text": "Possibly dead Python function: action_next_view"}, "properties": {"repobilityId": "db8b82954b9efb08", "scanner": "scanner-primary", "fingerprint": "df4ac304ff5c4f89", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/tui/app.py:484"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-693dbc5ad1feb4ee", "level": "note", "message": {"text": "Possibly dead Python function: action_show_pricing"}, "properties": {"repobilityId": "9239a6c09cf9d438", "scanner": "scanner-primary", "fingerprint": "693dbc5ad1feb4ee", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/tui/app.py:508"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7f8bd3fda47b5395", "level": "note", "message": {"text": "Possibly dead Python function: action_show_help"}, "properties": {"repobilityId": "c5f632007b7bb32e", "scanner": "scanner-primary", "fingerprint": "7f8bd3fda47b5395", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/tui/app.py:521"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-297f03012da98ca2", "level": "note", "message": {"text": "Possibly dead Python function: action_auto_refresh_on"}, "properties": {"repobilityId": "bdf4c761cfc5b24f", "scanner": "scanner-primary", "fingerprint": "297f03012da98ca2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/tui/app.py:525"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c4fb71f16ba3a775", "level": "note", "message": {"text": "Possibly dead Python function: action_auto_refresh_off"}, "properties": {"repobilityId": "2dedd4b34c6d2c52", "scanner": "scanner-primary", "fingerprint": "c4fb71f16ba3a775", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/tui/app.py:538"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f50240730859975d", "level": "note", "message": {"text": "Possibly dead Python function: check_action"}, "properties": {"repobilityId": "37efc58da56419a6", "scanner": "scanner-primary", "fingerprint": "f50240730859975d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/tui/app.py:549"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4deda9b5f7c87a35", "level": "note", "message": {"text": "Possibly dead Python function: action_noop"}, "properties": {"repobilityId": "74826acb1fe84458", "scanner": "scanner-primary", "fingerprint": "4deda9b5f7c87a35", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/tui/app.py:562"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d42c75ebb9be700c", "level": "note", "message": {"text": "Possibly dead Python function: delete_sync_state_prefix"}, "properties": {"repobilityId": "278297aaeda7be1d", "scanner": "scanner-primary", "fingerprint": "d42c75ebb9be700c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/agentic_metric/store/database.py:287"}, "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-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-a53bf972e19b52fd", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "26eca5024249c767", "scanner": "scanner-primary", "fingerprint": "a53bf972e19b52fd", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-7ffa33751be3d771", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "491a3ad29cbaf189", "scanner": "scanner-primary", "fingerprint": "7ffa33751be3d771", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fec283aeac9d7d6d", "level": "note", "message": {"text": "Very large file: tests/test_store.py (2204 lines)"}, "properties": {"repobilityId": "a9eb220068303b4d", "scanner": "scanner-primary", "fingerprint": "fec283aeac9d7d6d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d4a075c9c799fd50", "level": "note", "message": {"text": "Very large file: tests/test_collectors.py (2224 lines)"}, "properties": {"repobilityId": "0e118155ae81efc4", "scanner": "scanner-primary", "fingerprint": "d4a075c9c799fd50", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2d193d45c7fec6e4", "level": "note", "message": {"text": "Very large file: src/agentic_metric/cli.py (1593 lines)"}, "properties": {"repobilityId": "564d4cd18615f700", "scanner": "scanner-primary", "fingerprint": "2d193d45c7fec6e4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "3504ee2e55d99170", "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": "83bc5729b224b839", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-e725d2ab884fbd49", "level": "note", "message": {"text": "Multiple root agent instruction files without precedence"}, "properties": {"repobilityId": "1953db6c89508d22", "scanner": "scanner-primary", "fingerprint": "e725d2ab884fbd49", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["agent-instructions", "governance"]}}, {"ruleId": "scanner-7ed8ebdca134c1cc", "level": "note", "message": {"text": "Legacy-named symbol `sessions_old` in tests/test_store.py:110"}, "properties": {"repobilityId": "69809aa6ffd99045", "scanner": "scanner-primary", "fingerprint": "7ed8ebdca134c1cc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-76cf1888b3885b2f", "level": "none", "message": {"text": "Commented-code block (14 lines) in src/agentic_metric/pricing.py:15"}, "properties": {"repobilityId": "06fe981fdace7a1e", "scanner": "scanner-primary", "fingerprint": "76cf1888b3885b2f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ec318ef445be067", "level": "none", "message": {"text": "Commented-code block (14 lines) in src/agentic_metric/collectors/claude_code.py:606"}, "properties": {"repobilityId": "fac3d085149c1df0", "scanner": "scanner-primary", "fingerprint": "4ec318ef445be067", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7edd5ebeee98bd1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/agentic_metric/collectors/remote.py:301"}, "properties": {"repobilityId": "7e96c4dd04a2b448", "scanner": "scanner-primary", "fingerprint": "d7edd5ebeee98bd1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-72164428b2df27b8", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/agentic_metric/collectors/codex.py:431"}, "properties": {"repobilityId": "96a91bb0d0dca65b", "scanner": "scanner-primary", "fingerprint": "72164428b2df27b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-70fd6648eac575c5", "level": "note", "message": {"text": "Legacy-named symbol `sessions_old` in src/agentic_metric/store/database.py:193"}, "properties": {"repobilityId": "b741a720081fb573", "scanner": "scanner-primary", "fingerprint": "70fd6648eac575c5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "c102a7fa790bcfa8", "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": "c37cc0b693fbe9ae", "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": "1db607cc1308ec8c", "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": "0e1ea26f305e2021", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "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": "5dba30bbb5817800", "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": "e626f4daa38f1fdb", "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": "747fe36717ab4a4a", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}