Skip to content

Release 0.5.0 - #20

Merged
mcheemaa merged 1 commit into
mainfrom
release-hardening
Jul 8, 2026
Merged

mcheemaa merged 1 commit into
mainfrom
release-hardening

Conversation

@mcheemaa

@mcheemaa mcheemaa commented Jul 8, 2026

Copy link
Copy Markdown
Owner

The 0.5 slate is merged; this is the release commit, carrying what the full live matrix (51 scenarios, three providers) surfaced on its first complete run since 0.4.1.

The version and the notes

0.4.1 to 0.5.0, and the unreleased changelog groomed into release notes: bullets reordered foundation-first (registry, spawning, background, reports, console, stop, locks, transcript, ends_turn, stores, polish) plus one bullet that had never been written for the concurrent-append hardening that shipped inside #15.

What the matrix caught

Three failures, three different stories:

  • A feature outran its test. Per-run worker names (Stream in-progress tool calls and name each specialist run #18) mean gpt-5.2 labels its researcher lane with a name of its own choosing, so origins.all? { start_with?("researcher#") } asserted the pre-Stream in-progress tool calls and name each specialist run #18 world. The scenario now asserts the real invariant, exactly one consistently-shaped lane tag, while the unit suite keeps pinning the default-name fallback.
  • A fixture's timing premise expired. Report self-delivery (Deliver a worker's report to its parent #15) means a 2-second oracle finishes mid-turn on a fast model and the parent, correctly, answers with the folded report instead of the scripted acknowledgement. The oracle now sleeps 8 seconds so the receipt turn reliably lands first; assertions untouched.
  • A transient exposed a real hole. One run wedged a child as :queued forever: a runner that dies before the started entry (session open, lock acquire, terminal check) wrote no terminal, and Dispatchers::Thread swallowed the exception with rescue nil. "Completion is a contract" now covers the preamble: run_dispatched writes the failed terminal on any raise, releases the lease, re-raises, and the failure reports to the parent like every other terminal; the thread warns with class and message instead of dying mute. A new test breaks the lock backend and asserts the child reads :failed and the report arrives.

Verification

414 hermetic runs green, rubocop clean, gem build valid, and the full live matrix green across Anthropic, OpenAI, and Gemini, modulo two one-off task-adherence flakes on gemini-flash that pass in isolation and are deliberately not tuned around.

@mcheemaa
mcheemaa merged commit da85dfb into main Jul 8, 2026
5 checks passed
@mcheemaa
mcheemaa deleted the release-hardening branch July 13, 2026 01:28
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