### Change summary Defer rollout file creation until needed. * Add a core API to force rollout persistence for loaded non-ephemeral threads: * seeds initial context if needed * flushes rollout and returns persisted path Add concurrency guard to make lazy rollout initialization idempotent under concurrent calls. Add centralized app-server rollout-path resolver that: * uses in-memory thread state when loaded * forces persistence on demand for rollout-dependent calls * falls back to on-disk lookup for unloaded threads * maps ephemeral threads to invalid-request errors for rollout-dependent operations Route rollout-dependent endpoints through the resolver (v2 + shared legacy surfaces), including: * thread/archive * thread/resume (thread-id path) * thread/fork (thread-id path) * resumeConversation * forkConversation * thread summary by thread id * detached review parent-thread path resolution * feedback include_logs rollout resolution Remove stale cached rollout-path assumptions in rollback/detached-review flows by resolving via thread id when needed. No wire-schema changes; behavior-only change. v1 compatibility is not expanded in this PR. ### Tests updated/added * thread_start: assert rollout is absent immediately after thread/start; created after first completed turn. * thread_resume: resume by thread id succeeds for just-started thread via on-demand persistence; path-vs-thread-id precedence test updated. * thread_fork: fork by thread id succeeds for just-started thread. * thread_archive: archive succeeds for just-started thread and materializes before archive. * thread_unarchive: adjusted for deferred creation timing. * thread_rollback: rollback path no longer depends on stale cached rollout path. * Detached review targeted test verified for lazy path behavior. * Core tests for new persistence API
codex-core
This crate implements the business logic for Codex. It is designed to be used by the various Codex UIs written in Rust.
Dependencies
Note that codex-core makes some assumptions about certain helper utilities being available in the environment. Currently, this support matrix is:
macOS
Expects /usr/bin/sandbox-exec to be present.
When using the workspace-write sandbox policy, the Seatbelt profile allows
writes under the configured writable roots while keeping .git (directory or
pointer file), the resolved gitdir: target, and .codex read-only.
Linux
Expects the binary containing codex-core to run the equivalent of codex sandbox linux (legacy alias: codex debug landlock) when arg0 is codex-linux-sandbox. See the codex-arg0 crate for details.
All Platforms
Expects the binary containing codex-core to simulate the virtual apply_patch CLI when arg1 is --codex-run-as-apply-patch. See the codex-arg0 crate for details.