2.1.1 — MCP Phase 0: every high-level op returns an envelope (return-not-print)
Internal refactor per docs/MCP-SERVER-SPEC.md §4; CLI output and exit codes unchanged (wrappers reproduce them from the envelopes): - echo_ops: capture_op/resolve_op/link_op — duplicate gate and offline queueing are data (action: duplicate-gate + candidates; queued: true); the --json stdout-swallow hack is deleted (helper chatter -> stderr inside the cores); capture_op takes body_text= directly (the MCP path, no temp file). - echo_recall.recall_op — one structured result backs prose and --json. - echo_triage.list_op/route_op, echo_reflect.apply_op, echo_session.session_end_op — call capture_op internally, count gate outcomes from envelopes. - echo.scope_show_op/scope_set_op/load_op (+ shared _load_gather), and echo_doctor.run_op (checks as data). New eval/test_ops_api.py asserts the contract for every core: envelope shape AND stdout purity (a stray print would corrupt an MCP response stream). All six suites green. The 2.2 server build now starts directly at the app layer. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,33 @@
|
||||
# Changelog
|
||||
|
||||
## 2.1.1
|
||||
|
||||
### Changed — Phase 0 of the MCP build: every high-level op returns an envelope
|
||||
|
||||
Internal refactor (MCP-SERVER-SPEC §4), no behavior change intended: each
|
||||
high-level operation now has a core `*_op` function that **returns an envelope
|
||||
dict and never prints to stdout** — the transport-agnostic seam the upcoming MCP
|
||||
server (2.2) wraps. The CLI verbs are thin wrappers that print exactly what they
|
||||
printed before and map envelope outcomes to the same exit codes.
|
||||
|
||||
- `echo_ops`: `capture_op` / `resolve_op` / `link_op` — the duplicate gate and
|
||||
offline queueing are now **data** (`action: duplicate-gate` with candidates;
|
||||
`queued: true`), mapped to exit 76 / "queued" text only in the wrapper. The
|
||||
`--json` stdout-swallowing hack is gone: helper chatter from the low-level
|
||||
verbs routes to **stderr** wholesale inside the cores. `capture_op` accepts
|
||||
`body_text=` directly (no temp file needed — the MCP path).
|
||||
- `echo_recall.recall_op` — one structured result backs both the prose and
|
||||
`--json` renderings (the duplicated prose path was deleted).
|
||||
- `echo_triage.list_op` / `route_op`, `echo_reflect.apply_op`,
|
||||
`echo_session.session_end_op` — same pattern; reflect/triage/session now call
|
||||
`capture_op` internally and count gate outcomes from envelopes.
|
||||
- `echo.scope_show_op` / `scope_set_op` / `load_op` (sections + brief digest as
|
||||
data), `echo_doctor.run_op` (checks as a list).
|
||||
|
||||
New suite `eval/test_ops_api.py` asserts the contract for every core: envelope
|
||||
shape AND stdout purity (a stray print would corrupt an MCP response stream).
|
||||
All existing suites pass unchanged.
|
||||
|
||||
## 2.1.0
|
||||
|
||||
The "quick-wins train" from the 2026-07-28 review (`docs/IMPROVEMENT-PLANS.md` #1,
|
||||
|
||||
Reference in New Issue
Block a user