cloud-tasks: split the mock client out of cloud-tasks-client (#16456)

## Why

`codex-cloud-tasks-client` was mixing two different roles: the real HTTP
client and the mock implementation used by tests and local mock mode.
Keeping both in the same crate forced Cargo feature toggles and Bazel
`crate_features` just to pick an implementation.

This change keeps `codex-cloud-tasks-client` focused on the shared API
surface and real backend client, and moves the mock implementation into
its own crate so we can remove those feature permutations cleanly.

## What changed

- add a new `codex-cloud-tasks-mock-client` crate that owns `MockClient`
- remove the `mock` and `online` features from
`codex-cloud-tasks-client`
- make `codex-cloud-tasks-client` unconditionally depend on
`codex-backend-client` and export `HttpClient` directly
- gate the mock-mode path in `codex-cloud-tasks` behind
`#[cfg(debug_assertions)]`, so release builds always initialize the real
HTTP client
- update `codex-cloud-tasks` and its tests to use
`codex-cloud-tasks-mock-client::MockClient` wherever mock behavior is
needed
- remove the matching Bazel `crate_features` override and shrink the
manifest verifier allowlist accordingly

## How tested

- `cargo test -p codex-cloud-tasks-client`
- `cargo test -p codex-cloud-tasks-mock-client`
- `cargo test -p codex-cloud-tasks`

---
[//]: # (BEGIN SAPLING FOOTER)
Stack created with [Sapling](https://sapling-scm.com). Best reviewed
with [ReviewStack](https://reviewstack.dev/openai/codex/pull/16456).
* #16457
* __->__ #16456
This commit is contained in:
Michael Bolin
2026-04-01 12:09:14 -07:00
committed by GitHub
parent dc263f5926
commit 9f0be146db
13 changed files with 93 additions and 85 deletions

View File

@@ -27,11 +27,6 @@ UTILITY_NAME_EXCEPTIONS = {
"path-utils": "codex-utils-path",
}
MANIFEST_FEATURE_EXCEPTIONS = {
"codex-rs/cloud-tasks-client/Cargo.toml": {
"default": ("online",),
"online": ("dep:codex-backend-client",),
"mock": (),
},
"codex-rs/otel/Cargo.toml": {
"disable-default-metrics-exporter": (),
},
@@ -43,11 +38,6 @@ MANIFEST_FEATURE_EXCEPTIONS = {
},
}
OPTIONAL_DEPENDENCY_EXCEPTIONS = {
(
"codex-rs/cloud-tasks-client/Cargo.toml",
"dependencies",
"codex-backend-client",
),
(
"codex-rs/tui/Cargo.toml",
'target.cfg(not(target_os = "linux")).dependencies',
@@ -55,11 +45,6 @@ OPTIONAL_DEPENDENCY_EXCEPTIONS = {
),
}
INTERNAL_DEPENDENCY_FEATURE_EXCEPTIONS = {
(
"codex-rs/cloud-tasks/Cargo.toml",
"dependencies",
"codex-cloud-tasks-client",
): ("mock", "online"),
(
"codex-rs/core/Cargo.toml",
"dev-dependencies",