v2.1.318 (published 2026-11-04T00:01Z) is a bug-fix release whose fixes cluster around a single theme: honest failure reporting. Several paths that previously printed success or returned exit code 0 while the underlying operation had failed — config writes, headless -p/SDK runs, compaction, MCP startup — now surface the failure. A second theme is teach-the-model errors: instead of reporting an absence (e.g. "tool not loaded"), the error carries the information the model needs to correct itself.
This page records the release as assessed against yoyo v0.4.0 (commit 963b8f81) on Day 249 at 11:53; the earlier Day 249 scan covered releases through 2.1.317, so this entry is a delta over that baseline. Each upstream fix was mapped to a defect class and judged as either already-correct in yoyo, already tracked by an existing task, or a new candidate.
Key Points
Theme: honest failure reporting on write paths and headless runs; teach-the-model errors instead of silent absences.
Already correct in yoyo: invalid config handling on non-interactive launch (probed directly); valueless trailing flags (refused via require_flag_value). No tasks filed.
Tracked under existing work: headless truncation/exit-code correctness (#1026), hook-wrapped turns, and model-visible MCP signals (#1134).
Genuinely new candidate: validating compaction output before swapping it into the conversation, and caching MCP stdio version-probe outcomes instead of double-spawning every server.
Notable reference point: Claude Code caches a stdio MCP probe result for 7 days; yoyo currently spawns each stdio MCP server twice per start (pre-flight plus connect).
Concepts
Honest failure reporting — a command must not print "Saved"/exit 0 unless the write actually succeeded.
— non-interactive runs where silent success is especially costly because no human sees the output.
Headless mode (-p / SDK)
Teach-the-model error — an error response that includes the remedy (e.g. the required input schema) rather than only stating that something is missing.
Idle compaction — background summarization of a conversation to reclaim context; unsafe if the replacement is not actually a summary.
MCP stdio pre-flight probe — a version check performed by spawning the server, which is expensive if not cached.
yoyo — the downstream agent CLI (v0.4.0) against which each upstream fix is judged for transferability.
Details
1. Config writes that report success on failure
Upstream: /logout and mcp remove on network home directories could report success while the write failed.
Transferable class: any config, memory, or goal write path that prints "Saved" before checking the write result. This is the most broadly applicable defect class in the release — the fix is to check the write outcome first and only then emit the success message.
2. Invalid JSON config replaced with defaults on launch
Upstream: non-interactive launches used to overwrite an invalid JSON config with defaults; they now fail and leave the file untouched.
yoyo status: already correct, no task. This was probed directly — a malformed .yoyo.toml makes -p refuse with exit 2, names the offending lines, and leaves the file in place; config get emits a warning. Recorded as a verified strength rather than an open item.
3. -p / SDK reporting success on a truncated reply
Upstream: headless runs reported success when an API error cut off a reply while a hook was installed; failing custom slash commands printed nothing at all under -p.
yoyo analogs: #1026 (output-limit cutoffs and JSON exit codes) and hook-wrapped turns. Falls under existing tracking rather than a new task.
4. Compaction output not validated before swap-in
Upstream: idle compaction could replace a conversation with a reply that was not a summary.
Transferable rule: validate a compaction output before swapping it into the conversation — the replacement must be checked to be an actual summary, not merely non-empty.
5. MCP tool call before the tool is loaded
Upstream: calling an MCP tool before it finished loading now returns the tool's input schema, so the error teaches the model the fix.
This matches yoyo #1134 (model-visible MCP signals): the principle is that an "unavailable" response should carry the information needed to retry correctly, rather than a bare absence.
6. Re-probing stdio MCP servers on every start
Upstream: stdio MCP servers that exit during a version probe were re-probed on every start; Claude Code now caches the probe outcome for 7 days.
yoyo gap: yoyo double-spawns every stdio MCP server — once for a pre-flight check and once for the actual connection. Caching the probe result would eliminate the redundant spawn.
7. Trailing flag with no value
Upstream: a flag given as the last argument with no value now produces a startup warning.
yoyo status: already correct — such invocations are refused via require_flag_value. No task.
8. NODE_EXTRA_CA_CERTS empty or damaged
Upstream: an empty or damaged certificate bundle no longer fails every connection; readable certificates are used and a warning is emitted.
Transferable class: degrade partially and warn, rather than failing every outbound connection because of one bad input in the environment.
Classification outcome
Of the eight defect classes, two were verified as already correct in yoyo (items 2 and 7), three map onto existing tracked work (items 3, 5, and by extension the -p reporting family), and the remainder — config-write success reporting, compaction output validation, stdio MCP probe caching, and certificate degradation — stand as transferable candidates.