9dd52a0435
Closes L14 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
3.7 KiB
3.7 KiB
Changelog
All notable changes to this project are documented in this file.
The format follows Keep a Changelog.
[4.2.0] - 2026-05-16
Release tag: v4.2.0.
Added
- prompt-async-gate: new shared safety primitive (
src/shared/prompt-async-gate.ts) withpromptAsyncAfterSessionIdle,promptAfterSessionIdle,releasePromptAsyncReservation,DEFAULT_PROMPT_ASYNC_POST_DISPATCH_HOLD_MSpublic exports. Routes 13+ internal hook callers through reservation-based duplicate-injection prevention. Seedocs/reference/prompt-async-gate-rfc.md. - Background-agent: extracted
ParentWakeNotifiermodule for parent-wake coalescing (preparatory refactor; manager.ts integration in same release). - First-prompt watchdog for stuck subagents (closes #3952 by way of #4051).
- Subagent quota abort fast-path when no fallback is configured (closes #4006).
Fixed
- prompt-async-gate: add dispatch timeout via
Promise.race, fix post-dispatch reservation hold on throw, harden prefix release to require:suffix (BLOCKER-1, BLOCKER-2, HIGH-6, HIGH-7 partial). - model-suggestion-retry: release reservation before suggested-model retry attempt (regression caused by post-dispatch hold landing).
- prompt-async-gate tests: remove fixed-time sleep synchronization from the BLOCKER-3 path. The final release branch should keep only event-driven test synchronization for this area.
- session-recovery: schema-compatible synthetic tool results (PR #4053 supersedes #3866).
- tool-pair-validator: schema-compatible synthetic results for background sessions (PR #4032).
- claude-code-hooks: accumulate modifiedInput on allow/deny/ask exit paths (PR #3299 area, multiple commits).
- runtime-fallback: dedupe overlapping continuations, preserve provider-specific retries, classify localized provider errors.
- team-mode: skip tmux layout when opencode server unreachable (closes #3894).
- delegate-task: honor user fallback_models when category primary is unreachable.
- background-agent: detect stalled active sessions, coalesce rapid idle parent notifications, retry transient missing output tasks.
- todo-continuation: remove activity-based stagnation bypass, clean up idle event diagnostics.
- AGENTS.md: strengthened prompt-injection danger warning with root-cause analysis, gate semantics, forbidden patterns, and required tests.
Changed
- TypeScript audit: prompt-async-route-audit migrated from regex to TypeScript AST walker, catching destructuring, bracket call, optional chaining, and type-cast aliased bypass patterns (HIGH-5).
- Public surface:
createPluginModuletest seam moved fromsrc/index.tstosrc/testing/create-plugin-module.ts(HIGH-8). Plugin default exportpluginModuleis unchanged. - CI: removed sharded test runner; now uses plain
bun testin a single process (test-discipline.md added to enforce no-setTimeout-in-tests). - Background-agent: manager.ts internal parent-wake state delegated to
ParentWakeNotifier(HIGH-9).
Known Issues
- BLOCKER-4: Delegated child-session early-failure fallback (PR #3825 reverted). Delegated subagents that fail on the very first
promptAsyncmay not advance to fallback models. Seedocs/reference/known-issues.md. Reland targets v4.2.1.
Internal
- New
.sisyphus/rules/test-discipline.mdrule: forbidssetTimeout(resolve, N)andawait sleep(N)in test bodies unless time itself is the SUT. - mock.module lifecycle audit test (
src/shared/mock-module-lifecycle-audit.test.ts) added to catch unpaired mocks (H10). - Public exports for prompt-async-gate primitives - MINOR semver bump justified.
- If parallel BLOCKER-3, HIGH-9, or BLOCKER-4 follow-up commits land after this entry, update the changelog in the final release commit with their exact hashes.