audit: Phase 4 — final shell wave (mcp-config, cli, mcp-server)#69
audit: Phase 4 — final shell wave (mcp-config, cli, mcp-server)#69Nelson Spence (Fieldnote-Echo) merged 5 commits intomainfrom
Conversation
Add 3 direct tests for _load_config: malformed JSON, non-dict root, and missing file. Previously only exercised implicitly through add_to_client/is_configured. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Infrastructure/config unit. 169 LOC, 22 tests. Score: 7.8/10 Adequate. No findings. stdlib-only leaf with comprehensive graceful degradation. All _load_config edge cases (malformed JSON, non-dict root, missing file) directly tested. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Infrastructure/boundary unit. 240 LOC, 29 tests. Score: 7.6/10 Adequate. One LOW finding: F-CLI-01 — silent fallback to "local" transport on invalid interactive input. Lazy imports verified. IN-B01/IN-B04 N/A (no subprocess, no external calls). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Infrastructure/boundary unit. 232 LOC, 29 tests. Score: 7.7/10 Adequate. No findings. Core invariant (all paths return JSON) verified across all 29 tests. LLM timeout delegation to MCP client documented as design observation. Relay role in CH-1/CH-4 confirmed — no anchor ownership. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Mark mcp-config, cli, mcp-server as CURRENT. 30/30 units audited. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
project-navi-bot
left a comment
There was a problem hiding this comment.
All required CI checks passed. Auto-approved by navi-bot.
project-navi-bot
left a comment
There was a problem hiding this comment.
All required CI checks passed. Auto-approved by navi-bot.
|
|
||
| ## Compound Chain Exposure | ||
|
|
||
| None identified. cli (`__main__.py`) is a pure dispatch layer. It routes to `mcp_server.main()`, `review.main()`, and `mcp_config` functions. It does not process untrusted input, touch PR content, or participate in the review pipeline data flow. All 5 known chains (CH-1 through CH-5) operate entirely within the downstream modules. |
There was a problem hiding this comment.
🔵 LOW: Silent fallback to 'local' transport on invalid CLI input
Confidence: 95%
When a user enters an invalid value during interactive transport selection in the CLI (e.g., a non-integer or out-of-range index), the code silently defaults to 'local' transport without notifying the user. This could mask operator intent and may only be noticed after an unexpected failure or behavior.
Suggestion: Update the CLI to print a warning or message when an invalid choice is entered and fallback occurs. For example, print the selected transport or a warning when falling back to default, such as: print(f" Invalid choice, defaulting to: {transport}") after the except block.
— Masks operator intent. Best practice: warn explicitly when falling back on user error. Minor but worth fixing.
✅ Grippy Review — PASSScore: 98/100 | Findings: 1 Delta: 1 new Commit: 3cb362d |
project-navi-bot
left a comment
There was a problem hiding this comment.
All required CI checks passed. Auto-approved by navi-bot.
project-navi-bot
left a comment
There was a problem hiding this comment.
All required CI checks passed. Auto-approved by navi-bot.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Summary
_load_configedge cases (malformed JSON, non-dict root, missing file)Commits
6216aca_load_configedge casese7339cdd58661b6a92ce73cb362dTest plan
uv run pytest tests/ -v— 1136 passed, 0 failed🤖 Generated with Claude Code