Skip to content

fix(execution): settle permanent preparation rejections - #250

Merged
SaladDay merged 2 commits into
mainfrom
codex/preparation-rejection-20260930
Sep 30, 2026
Merged

SaladDay merged 2 commits into
mainfrom
codex/preparation-rejection-20260930

Conversation

@SaladDay

@SaladDay SaladDay commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator

A Runtime can definitively reject execution_prepare as unsupported while Core keeps retrying the same pending input until its five-minute deadline. Settle explicit configuration rejections through the existing runtime_preparation_failed path so the Session reports a safe failure and accepts corrected input without creating a Turn.

Only invalid_configuration, unsupported_configuration and unsupported_preparation for the current execution_prepare request with no Run are terminal here. Capacity, resource pressure, unconfirmed cleanup, disconnects and unknown responses retain their existing retry/deadline behavior. The existing failure settlement checks expiration after acquiring the Session lock, before applying failure to a still-pending input. Admission and Start handling, protocol/schema, Harness adapters and MCP preparation are unchanged.

Validation:

  • Final-commit targeted tests passed on an isolated remote PostgreSQL database (36.0 s), including deadline evaluation after a blocked Session lock: safe failure and subsequent input, transient rejection retries with the original deadline, cancellation/newer-input and stale-request protection, existing preparation/disconnection/Start settlement and queued capacity behavior.
  • Canonical Environment documentation and generated guide updated; git diff --check passed.
  • A fresh independent blind review of the full final diff found no remaining issues.
  • Final commit 5d7124b060e1fe395ab1569d024c58fca47ddac4: complete make check and daemon build, official-client acceptance, and Linux, macOS and Windows native checks all passed.

This is an immediate failure-reporting fix for a bounded retry, not a claim of infinite hanging. No deployment or stored-data changes; no release is published by this PR.

The remote make check attempt and a supplementary test attempt overlapped on their shared test database; both encountered the exclusive execution-owner lock. The targeted rerun on a newly created isolated database passed. The clean GitHub CI run is the full-gate acceptance source; the contended remote run is not a passing result.

@SaladDay
SaladDay merged commit bc890bb into main Sep 30, 2026
5 checks passed
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