Skip to content

v1.41.1: MCP-tool hook audit conclusion (#218) - #250

Merged
BaseInfinity merged 1 commit into
mainfrom
roadmap-218-mcp-hook-audit
Apr 26, 2026
Merged

v1.41.1: MCP-tool hook audit conclusion (#218)#250
BaseInfinity merged 1 commit into
mainfrom
roadmap-218-mcp-hook-audit

Conversation

@BaseInfinity

Copy link
Copy Markdown
Owner

Summary

ROADMAP #218: audited all 5 wizard hooks against CC 2.1.118's type: "mcp_tool" migration option. Conclusion: all stay bash. Per-hook rationale documented in CLAUDE_CODE_SDLC_WIZARD.md → "Known CC Gotchas → MCP-tool hooks audit".

Codex Review

  • Round 1: 5/10 NOT CERTIFIED. 4 P1 findings (all real):
    • Wrong Codex sibling path (~/.codex/agents/... doesn't exist)
    • Oversimplified "MCP can't gate" claim — real issue is fail-closed contract
    • Per-hook rationale was filler ("MCP overkill", "Portability rules")
    • Tests false-greened on filler bullets
  • Round 2: 10/10 CERTIFIED. All 4 fixes verified, mutation-tested.

Test plan

  • tests/test-mcp-hook-audit.sh — 7/7 (mutation-verified)
  • All other suites green

ROADMAP #218: CC 2.1.118 added type:'mcp_tool' for hooks. Audited all 5
wizard hooks (sdlc-prompt-check, instructions-loaded-check, tdd-pretool-
check, model-effort-check, precompact-seam-check). Conclusion: all stay
bash. Per-hook rationale documented under "Known CC Gotchas → MCP-tool
hooks audit" so future PRs don't redo the work.

Decision criteria: portability (Codex/OpenCode siblings), fail-closed
gating (bash exit 2 fails closed; MCP server errors fail open), local-only
state (cache files, handoff.json don't surface across tools).

Codex round 1: 5/10 NOT CERTIFIED. 4 P1 findings — all real:
  - AUDIT-001: portability claim cited wrong Codex path (~/.codex/agents/...
    didn't exist; actual is ~/codex-sdlc-wizard). OpenCode sibling marked
    'planned' per ROADMAP #91, not shipped. Fixed.
  - AUDIT-002: oversimplified "MCP can't gate" claim. CC docs confirm
    mcp_tool hooks CAN return decision:"block". Real concern: MCP server
    errors are non-blocking by design — that flips fail-closed (bash) to
    fail-open (MCP). Rewrote criterion.
  - AUDIT-003: per-hook rationale was filler ("MCP overkill", "Portability
    rules"). Each bullet now applies ≥1 criterion explicitly with substance.
  - AUDIT-004: tests false-greened on filler. Mutation: replacing all 5
    bullets with "Stay bash." filler still passed 7/7. Tightened: test 3
    requires ≥200 chars + criterion keyword per bullet; test 6 scoped to
    precompact bullet specifically with fail-closed/fail-open framing.
    Mutation now correctly fails tests 3+6.

Round 2: 10/10 CERTIFIED.

7 quality tests in tests/test-mcp-hook-audit.sh.
@github-actions

github-actions Bot commented Apr 26, 2026

Copy link
Copy Markdown
Contributor

Claude encountered an error —— View job


I'll analyze this and get back to you.

@BaseInfinity
BaseInfinity merged commit 315b26f into main Apr 26, 2026
2 of 3 checks passed
@BaseInfinity
BaseInfinity deleted the roadmap-218-mcp-hook-audit branch April 26, 2026 07:48
BaseInfinity added a commit that referenced this pull request Apr 27, 2026
All 5 entries had been implemented but their title cells still read OPEN.
Adding DONE markers + commit/PR/version references for archaeology:

- #218 MCP-tool hook audit → PR #250, v1.41.1
- #221 post-mortem wizard integration → PR #249, v1.41.0
- #224 prompt-hook-fires-once test → PR #243, v1.38.0
  (tests/test-prompt-hook-fires-once.sh)
- #225 cleanupPeriodDays guidance → PR #248, v1.40.1
- #226 P1 fake-CI honest labeling → commit 13dccc4
  (Option B: judge-consistency caveat; Option A true N-trial deferred to
  ROADMAP #230 / #212 Option 1 follow-up)

Same closure-gap pattern just hit on #209 (PR #255). Five stale markers
is enough signal that a roadmap-hygiene check would be worth a small
piece of automation — track separately.
BaseInfinity added a commit that referenced this pull request Apr 27, 2026
All 5 entries had been implemented but their title cells still read OPEN.
Adding DONE markers + commit/PR/version references for archaeology:

- #218 MCP-tool hook audit → PR #250, v1.41.1
- #221 post-mortem wizard integration → PR #249, v1.41.0
- #224 prompt-hook-fires-once test → PR #243, v1.38.0
  (tests/test-prompt-hook-fires-once.sh)
- #225 cleanupPeriodDays guidance → PR #248, v1.40.1
- #226 P1 fake-CI honest labeling → commit 13dccc4
  (Option B: judge-consistency caveat; Option A true N-trial deferred to
  ROADMAP #230 / #212 Option 1 follow-up)

Same closure-gap pattern just hit on #209 (PR #255). Five stale markers
is enough signal that a roadmap-hygiene check would be worth a small
piece of automation — track separately.
BaseInfinity added a commit that referenced this pull request May 5, 2026
ROADMAP #218: CC 2.1.118 added type:'mcp_tool' for hooks. Audited all 5
wizard hooks (sdlc-prompt-check, instructions-loaded-check, tdd-pretool-
check, model-effort-check, precompact-seam-check). Conclusion: all stay
bash. Per-hook rationale documented under "Known CC Gotchas → MCP-tool
hooks audit" so future PRs don't redo the work.

Decision criteria: portability (Codex/OpenCode siblings), fail-closed
gating (bash exit 2 fails closed; MCP server errors fail open), local-only
state (cache files, handoff.json don't surface across tools).

Codex round 1: 5/10 NOT CERTIFIED. 4 P1 findings — all real:
  - AUDIT-001: portability claim cited wrong Codex path (~/.codex/agents/...
    didn't exist; actual is ~/codex-sdlc-wizard). OpenCode sibling marked
    'planned' per ROADMAP #91, not shipped. Fixed.
  - AUDIT-002: oversimplified "MCP can't gate" claim. CC docs confirm
    mcp_tool hooks CAN return decision:"block". Real concern: MCP server
    errors are non-blocking by design — that flips fail-closed (bash) to
    fail-open (MCP). Rewrote criterion.
  - AUDIT-003: per-hook rationale was filler ("MCP overkill", "Portability
    rules"). Each bullet now applies ≥1 criterion explicitly with substance.
  - AUDIT-004: tests false-greened on filler. Mutation: replacing all 5
    bullets with "Stay bash." filler still passed 7/7. Tightened: test 3
    requires ≥200 chars + criterion keyword per bullet; test 6 scoped to
    precompact bullet specifically with fail-closed/fail-open framing.
    Mutation now correctly fails tests 3+6.

Round 2: 10/10 CERTIFIED.

7 quality tests in tests/test-mcp-hook-audit.sh.
BaseInfinity added a commit that referenced this pull request May 5, 2026
All 5 entries had been implemented but their title cells still read OPEN.
Adding DONE markers + commit/PR/version references for archaeology:

- #218 MCP-tool hook audit → PR #250, v1.41.1
- #221 post-mortem wizard integration → PR #249, v1.41.0
- #224 prompt-hook-fires-once test → PR #243, v1.38.0
  (tests/test-prompt-hook-fires-once.sh)
- #225 cleanupPeriodDays guidance → PR #248, v1.40.1
- #226 P1 fake-CI honest labeling → commit 13dccc4
  (Option B: judge-consistency caveat; Option A true N-trial deferred to
  ROADMAP #230 / #212 Option 1 follow-up)

Same closure-gap pattern just hit on #209 (PR #255). Five stale markers
is enough signal that a roadmap-hygiene check would be worth a small
piece of automation — track separately.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant