This release adds 2 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+12 more
Summary
AI summaryFixed Bash exit status recording to correctly log zero when successful, avoiding false -1 sentinel.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Low |
Adds `scripts/qa-mcp-call.py` to call an MCP tool over real stdio transport. Adds `scripts/qa-mcp-call.py` to call an MCP tool over real stdio transport. Source: llm_adapter@2026-07-20 Confidence: medium |
— |
| Feature | Low |
Adds `--ledger PATH` option to `scripts/qa-matrix.py` for separate cell ledger files. Adds `--ledger PATH` option to `scripts/qa-matrix.py` for separate cell ledger files. Source: llm_adapter@2026-07-20 Confidence: medium |
— |
| Bugfix | Medium |
Correctly records Bash exit status in PostToolUse tool_response. Correctly records Bash exit status in PostToolUse tool_response. Source: llm_adapter@2026-07-20 Confidence: medium |
— |
Full changelog
Fixed
- Bash exit status recorded from the event, not an absent payload key. The Bash
PostToolUsetool_responsecarries no exit status at all -- a captured live payload is
{stdout, stderr, interrupted, isImage, noOutputExpected}-- so reading a status key under
any spelling always missed and every command logged the-1absent-value sentinel. With
session_test_run_seenrequiring a zero exit, the turn-end "no passing test run this turn"
advisory was unsatisfiable no matter how much the user tested (measured on the plugin's own
repo: 37,291 of 37,293 rows recorded-1).PostToolUsefires only after a tool call
succeeds -- a failed call raisesPostToolUseFailure, which the hook is not registered for --
so an uninterrupted Bash response object now records exit 0. An explicitexit_code/
returnCodestill wins when a host sends one, and an absent or non-dict response keeps the
sentinel. The contract test that guarded this asserted the broken behaviour, written from the
same misreading of the docs, and now uses the captured payload shape as its fixture.
Added
scripts/qa-mcp-call.py(dev tooling): calls an MCP tool over the real stdio transport,
launching the server exactly the way.mcp.jsondoes, so a verification run exercises the
wire rather than an in-process import.scripts/qa-matrix.py --ledger PATH: point the cell ledger commands at a different cell file
so an independent re-verification keeps its verdicts separate from the run it audits.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Chameleon
All releases →Beta — feedback welcome: [email protected]