Skip to content

v0.52.1

Choose a tag to compare

@github-actions github-actions released this 23 Aug 12:25
· 1194 commits to main since this release

v0.52.1

Patch release: transport resilience under module restarts, a hashline atomicity fix with a newly registered oracle deviation, faster cross-worktree search, and CI-integrity hardening.

Fixes

  • Hashline: same-path patch sections now compose atomically. A single patch with multiple [path#TAG] sections targeting the same file previously half-applied: the first section mutated the file and the second was rejected with hashline_baseline_drift, leaving the file in a mixed state and reporting one path as "2 files". Sections resolving to the same canonical file (symlink aliases included) now merge into one transaction unit: one baseline, one verification view, one write, one fresh tag, one undo entry — and any section failing verification rejects the entire patch with nothing written. Cross-section conflicts (an op whose target line was consumed by an earlier op) reject the whole patch with a message naming both operations. This composition is a deliberate, registered deviation from the pinned oh-my-pi oracle (which rejects same-path sections upfront): hand-merging sections is model-hostile, and hashline's tag-anchored pre-request coordinates make composition deterministic. The oracle manifest now registers same-path-section-composition as its third deviation category with control fixtures proving the divergence is intentional.
  • Module restarts are now invisible to in-flight tool traffic. Route-open refusals during a daemon-supervised module reload (module_reloading, module_warming, registry-miss during respawn) are absorbed behind a single bounded floor timer and retried, instead of surfacing transient errors to the agent. Severed in-flight requests still surface as outcome-unknown — if bytes may have moved, honesty wins over absorption.
  • Terminal transport no longer hot-spins. A permanently failed transport parks after a single backed-off revival attempt instead of burning CPU in a reconnect loop under opencode serve.
  • Search index reload wedge after route churn. Rebind replay now retains queued index work across route teardown, and borrowed search index loads are bounded and cancellable, fixing a class of stalls where a worktree's search served stale or hung after rapid bind/unbind cycles.

Performance

  • Cross-worktree (borrowed) search reload ~4.9x faster. Borrowed index opens memoize parent-path resolution instead of re-walking on every reload.

Reliability & CI integrity

  • E2E suites now provably test the workspace plugin build rather than the published npm release (file-based plugin loading with a source-labeled resolution contract), with plugin logs attached to failure artifacts.
  • Fixed a macOS unit-suite hang where a cancellation test starved itself on runner-derived read slots; the macOS unit lane now runs under nextest with per-test time caps so a future hang names itself instead of timing out the job.
  • The binary resolver logs which resolution arm produced the executable, making stale-binary situations diagnosable from logs.