@uchibeke/gallivant 0.0.0-stage → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +26 -0
- package/LICENSE +204 -0
- package/README.md +239 -2
- package/SECURITY.md +19 -0
- package/bin/gallivant.mjs +261 -0
- package/bin/package-plugin.mjs +16 -0
- package/bin/release-live.mjs +29 -0
- package/bin/release-package.mjs +23 -0
- package/bin/session-runtime.mjs +13 -0
- package/bin/task-delivery-state.mjs +12 -0
- package/docs/README.md +72 -0
- package/docs/agent-setup.md +228 -0
- package/docs/app.md +111 -0
- package/docs/architecture.md +265 -0
- package/docs/chains.md +102 -0
- package/docs/codex-cloud.md +284 -0
- package/docs/commands.md +649 -0
- package/docs/config.md +437 -0
- package/docs/execution.md +796 -0
- package/docs/guardrails.md +311 -0
- package/docs/install.md +398 -0
- package/docs/launch.md +45 -0
- package/docs/learning.md +369 -0
- package/docs/network-recovery.md +101 -0
- package/docs/openai-agents.md +457 -0
- package/docs/prd.md +246 -0
- package/docs/preparation.md +110 -0
- package/docs/release-qualification.md +196 -0
- package/docs/releasing.md +149 -0
- package/docs/runtime-environment.md +113 -0
- package/docs/task-delivery.md +476 -0
- package/docs/tasks.md +739 -0
- package/lib/aport.mjs +95 -0
- package/lib/attribution.mjs +95 -0
- package/lib/block.mjs +89 -0
- package/lib/capabilities.mjs +3 -0
- package/lib/chains.mjs +222 -0
- package/lib/codex_cloud.mjs +160 -0
- package/lib/codex_cloud_config.mjs +20 -0
- package/lib/codex_cloud_input.mjs +49 -0
- package/lib/codex_cloud_result.mjs +74 -0
- package/lib/commands/doctor.mjs +466 -0
- package/lib/commands/init.mjs +245 -0
- package/lib/commands/learn.mjs +54 -0
- package/lib/commands/new.mjs +47 -0
- package/lib/commands/ready.mjs +45 -0
- package/lib/commands/register.mjs +249 -0
- package/lib/commands/resume.mjs +224 -0
- package/lib/commands/serve.mjs +349 -0
- package/lib/commands/start.mjs +247 -0
- package/lib/commands/start_services.mjs +22 -0
- package/lib/commands/status.mjs +150 -0
- package/lib/commands/task.mjs +73 -0
- package/lib/commands/up.mjs +228 -0
- package/lib/commands/why.mjs +143 -0
- package/lib/config.mjs +461 -0
- package/lib/context.mjs +102 -0
- package/lib/control.mjs +202 -0
- package/lib/control_contract.mjs +16 -0
- package/lib/coordinator.mjs +19 -0
- package/lib/credential.mjs +161 -0
- package/lib/daemon.mjs +156 -0
- package/lib/deliverable.mjs +357 -0
- package/lib/events.mjs +261 -0
- package/lib/executable.mjs +31 -0
- package/lib/execution.mjs +707 -0
- package/lib/execution_contract.mjs +15 -0
- package/lib/execution_input.mjs +4 -0
- package/lib/execution_io.mjs +94 -0
- package/lib/execution_journal.mjs +69 -0
- package/lib/execution_preparation.mjs +29 -0
- package/lib/execution_result.mjs +266 -0
- package/lib/fs.mjs +140 -0
- package/lib/gh.mjs +289 -0
- package/lib/git.mjs +434 -0
- package/lib/harness.mjs +521 -0
- package/lib/harness_log.mjs +432 -0
- package/lib/hash.mjs +16 -0
- package/lib/identity.mjs +98 -0
- package/lib/learning.mjs +654 -0
- package/lib/learning_contract.mjs +2 -0
- package/lib/learning_data.mjs +135 -0
- package/lib/learning_input.mjs +111 -0
- package/lib/learning_qualification.mjs +67 -0
- package/lib/learning_signer.mjs +151 -0
- package/lib/learning_store.mjs +88 -0
- package/lib/log.mjs +53 -0
- package/lib/network_diagnostics.mjs +64 -0
- package/lib/network_recovery.mjs +42 -0
- package/lib/notify.mjs +58 -0
- package/lib/openai_agents.mjs +373 -0
- package/lib/openai_agents_config.mjs +14 -0
- package/lib/openai_agents_http.mjs +87 -0
- package/lib/openai_agents_input.mjs +15 -0
- package/lib/openai_agents_sources.mjs +112 -0
- package/lib/owner_delivery.mjs +443 -0
- package/lib/plugin_package.mjs +340 -0
- package/lib/prd.mjs +635 -0
- package/lib/preparation_agents.mjs +33 -0
- package/lib/preparation_codex.mjs +212 -0
- package/lib/probe.mjs +126 -0
- package/lib/prompt.mjs +238 -0
- package/lib/provider_health.mjs +55 -0
- package/lib/public-format.mjs +31 -0
- package/lib/public_output.mjs +49 -0
- package/lib/release_package.mjs +154 -0
- package/lib/repository_files.mjs +86 -0
- package/lib/run.mjs +385 -0
- package/lib/run_log.mjs +94 -0
- package/lib/runtime-environment.mjs +87 -0
- package/lib/runtime_dependencies.mjs +15 -0
- package/lib/runtime_node.mjs +107 -0
- package/lib/runtime_state.mjs +174 -0
- package/lib/sources/index.mjs +27 -0
- package/lib/sources/prd.mjs +50 -0
- package/lib/start_contract.mjs +37 -0
- package/lib/state.mjs +246 -0
- package/lib/task_allowance.mjs +31 -0
- package/lib/task_completion.mjs +61 -0
- package/lib/task_contract.mjs +450 -0
- package/lib/task_delivery.mjs +219 -0
- package/lib/task_delivery_cancel.mjs +34 -0
- package/lib/task_delivery_contract.mjs +61 -0
- package/lib/task_delivery_mcp.mjs +40 -0
- package/lib/task_delivery_store.mjs +43 -0
- package/lib/task_delivery_view.mjs +88 -0
- package/lib/task_environment.mjs +281 -0
- package/lib/task_prepare.mjs +224 -0
- package/lib/task_store.mjs +38 -0
- package/lib/tasks.mjs +513 -0
- package/lib/tick.mjs +1654 -0
- package/lib/time.mjs +36 -0
- package/lib/tracker/assets.mjs +43 -0
- package/lib/tracker/pages.mjs +320 -0
- package/lib/tracker/runs.mjs +102 -0
- package/lib/tracker/stream.mjs +74 -0
- package/lib/tracker_process.mjs +107 -0
- package/lib/verification_sandbox.mjs +181 -0
- package/node_modules/smol-toml/LICENSE +24 -0
- package/node_modules/smol-toml/README.md +605 -0
- package/node_modules/smol-toml/dist/date.d.ts +41 -0
- package/node_modules/smol-toml/dist/date.js +156 -0
- package/node_modules/smol-toml/dist/error.d.ts +37 -0
- package/node_modules/smol-toml/dist/error.js +67 -0
- package/node_modules/smol-toml/dist/extract.js +289 -0
- package/node_modules/smol-toml/dist/index.cjs +770 -0
- package/node_modules/smol-toml/dist/index.d.ts +44 -0
- package/node_modules/smol-toml/dist/index.js +34 -0
- package/node_modules/smol-toml/dist/parse.d.ts +73 -0
- package/node_modules/smol-toml/dist/parse.js +164 -0
- package/node_modules/smol-toml/dist/primitive.js +151 -0
- package/node_modules/smol-toml/dist/stringify.d.ts +32 -0
- package/node_modules/smol-toml/dist/stringify.js +219 -0
- package/node_modules/smol-toml/dist/struct.js +156 -0
- package/node_modules/smol-toml/dist/util.d.ts +43 -0
- package/node_modules/smol-toml/dist/util.js +57 -0
- package/node_modules/smol-toml/package.json +68 -0
- package/npm-shrinkwrap.json +1823 -0
- package/package.json +105 -4
- package/templates/claude-settings.json +18 -0
- package/templates/passport.gallivant.json +83 -0
- package/templates/plugin/bundled-runtime.json +26 -0
- package/templates/plugin/schemas/mcp.schema.json +120 -0
- package/templates/plugin/schemas/plugin.schema.json +65 -0
- package/templates/plugin/task-delivery.SKILL.md +60 -0
- package/templates/prd.md +32 -0
- package/templates/tracker/tracker.css +301 -0
- package/templates/tracker/tracker.js +721 -0
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
# Codex Cloud execution
|
|
2
|
+
|
|
3
|
+
**This is Codex Cloud, not local Codex or Claude Code.** New Cloud dispatch is
|
|
4
|
+
disabled because Gallivant cannot verify which repository the selected Cloud
|
|
5
|
+
environment is connected to through the supported CLI interface. Sending work
|
|
6
|
+
without that binding could target a different repository. Local `codex` and
|
|
7
|
+
`claude` execution remain available; API-backed `openai-agents` is a separate
|
|
8
|
+
implemented integration. See the [support table](../README.md#harness-support).
|
|
9
|
+
There is no bypass flag; enabling this adapter requires a supported verification
|
|
10
|
+
interface and qualification of the full repository/account boundary.
|
|
11
|
+
|
|
12
|
+
`codex-cloud` implements the experimental Codex CLI transport through the shared
|
|
13
|
+
task, execution journal, polling, GitHub gates and result writer. **New dispatch
|
|
14
|
+
is unavailable:** the pinned CLI cannot prove which repository is connected to
|
|
15
|
+
the selected environment. Read diagnostics and recovery of previously owned
|
|
16
|
+
tasks remain available. Its implementation is offline tested; live qualification
|
|
17
|
+
is **unverified**. Local Codex and `openai-agents` retain their existing defaults
|
|
18
|
+
and continuation behavior.
|
|
19
|
+
|
|
20
|
+
## Trusted worker setup
|
|
21
|
+
|
|
22
|
+
Use a trusted operator or self-hosted Node 22+ worker with persistent private
|
|
23
|
+
state, Git/gh and the existing enforced verification sandbox. The pinned CLI
|
|
24
|
+
version is **0.160.0**. Newer versions require command/output requalification;
|
|
25
|
+
experimental compatibility is not inferred from a greater version number.
|
|
26
|
+
Install and sign in using the exact configured executable:
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
"/absolute/path/to/codex" --version
|
|
30
|
+
"/absolute/path/to/codex" login
|
|
31
|
+
"/absolute/path/to/codex" login status
|
|
32
|
+
"/absolute/path/to/codex" cloud
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The last command is the operator's native interactive environment picker, used
|
|
36
|
+
to identify a published Cloud environment connected to the intended GitHub
|
|
37
|
+
repository. This adapter never automates that UI. Configure the environment ID
|
|
38
|
+
and its repository explicitly; branch/ref access is checked using the existing
|
|
39
|
+
scoped GitHub connection. That GitHub connection and Cloud's connected-repository
|
|
40
|
+
authority are separate. The filtered native listing resolves the environment and
|
|
41
|
+
proves read authorization, but does not prove inference eligibility or confirm
|
|
42
|
+
the environment's repository mapping. Neither a configured repository name nor
|
|
43
|
+
an operator's UI observation is a machine-verified dispatch authorization.
|
|
44
|
+
|
|
45
|
+
The registry marks Cloud unavailable, and its native access check returns
|
|
46
|
+
`CLOUD_ENVIRONMENT_REPOSITORY` after successful read diagnostics with
|
|
47
|
+
`effective.repository: null`. Normal start/resume and provider readiness refuse new work;
|
|
48
|
+
the transport also refuses before saving a Cloud dispatch intent or calling
|
|
49
|
+
`cloud exec`. Initial and successor submission use the same gate. GitHub branch
|
|
50
|
+
access cannot substitute for Cloud environment ownership.
|
|
51
|
+
|
|
52
|
+
The exact remedy is to qualify and implement a supported documented interface
|
|
53
|
+
that binds the authorized account, selected environment and connected repository
|
|
54
|
+
before enabling dispatch. Requalification must verify branch/revision access and
|
|
55
|
+
model eligibility under the existing security settings. There is no configuration
|
|
56
|
+
flag to bypass this gate. Do not infer proof from task listing fields or use a
|
|
57
|
+
private endpoint, browser automation or a trial paid submission to find the mapping.
|
|
58
|
+
|
|
59
|
+
This private `config.json` entry describes the intended setup and supports owned
|
|
60
|
+
task recovery; adding it does not enable dispatch or change existing selections:
|
|
61
|
+
|
|
62
|
+
```json
|
|
63
|
+
{
|
|
64
|
+
"execution": { "deadlineMs": 20000 },
|
|
65
|
+
"harness": {
|
|
66
|
+
"codex-cloud": {
|
|
67
|
+
"bin": "/absolute/path/to/codex",
|
|
68
|
+
"account": "operator",
|
|
69
|
+
"authentication": "operator-chatgpt",
|
|
70
|
+
"mode": "trusted-worker",
|
|
71
|
+
"environment": "published_environment_id",
|
|
72
|
+
"repository": "owner/disposable-repository",
|
|
73
|
+
"continuation": "successor-task",
|
|
74
|
+
"billing_source": "chatgpt-account",
|
|
75
|
+
"allowance": { "remainingUsd": 1, "reservedUsd": 0.1 }
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
This explicit request deadline allows bounded CLI/network and native verification
|
|
82
|
+
work within the shared configurable limit. It does not change package defaults
|
|
83
|
+
or bound the duration of remote compute. Submission, access checks, listings and
|
|
84
|
+
diff retrieval use the shared abort signal without a shorter subprocess timeout;
|
|
85
|
+
standalone diagnostic calls without a signal retain a 10-second fallback. If the
|
|
86
|
+
deadline expires before a submission URL is received, acceptance remains unknown
|
|
87
|
+
and dispatch is fenced until exact ownership can be reconciled. Stopping the
|
|
88
|
+
submission client does not stop remote compute.
|
|
89
|
+
|
|
90
|
+
Amounts are explicit conservative accounting reservations, not a Cloud billing
|
|
91
|
+
cap. Unknown usage retains reservations. Cloud uses the authorized ChatGPT
|
|
92
|
+
account's actual plan/credits and limits; API billing is a separate allowance.
|
|
93
|
+
No plan eligibility, available credits, zero cost, hard spend cap or specific
|
|
94
|
+
model access is inferred from sign-in. Check current account usage before live
|
|
95
|
+
dispatch. Exactly one best-of attempt is supported; model overrides are refused
|
|
96
|
+
and account defaults remain unchanged. Native CLI read checks do not call a model.
|
|
97
|
+
|
|
98
|
+
This is not a demonstrated delegated multi-user mode or generic plugin OAuth
|
|
99
|
+
flow. Public setup must never collect passwords, browser cookies or pasted Codex
|
|
100
|
+
auth files. The worker uses only its operator's native sign-in store. It does not
|
|
101
|
+
copy another connector's identity. Configure a capable backend when mandatory
|
|
102
|
+
local policy or private read-only context paths are required: Cloud refuses those
|
|
103
|
+
options, and completion receipts do not replace pre-action enforcement.
|
|
104
|
+
|
|
105
|
+
## Dispatch, inspection and delivery
|
|
106
|
+
|
|
107
|
+
The shared `gallivant doctor` and provider readiness gates report Cloud's
|
|
108
|
+
unavailable capability and mapping remedy; start and resume use those gates.
|
|
109
|
+
Cloud remains a recognized provider in configuration, approved brief parsing and
|
|
110
|
+
saved recovery identities. Recognition does not authorize new work. An approved PRD
|
|
111
|
+
with `harness: codex-cloud` cannot dispatch until that boundary is qualified.
|
|
112
|
+
The following delivery contract is implemented and exercised by explicit offline
|
|
113
|
+
fixtures; it is not a live dispatch qualification. Restricted natural-language
|
|
114
|
+
preparation is not advertised for Cloud. The local Codex preparation adapter does
|
|
115
|
+
not supply a hosted Cloud preparation capability.
|
|
116
|
+
|
|
117
|
+
Before dispatch, the isolated owned task checkout must contain only committed
|
|
118
|
+
code and the approved brief/source overlays. The existing portable snapshot
|
|
119
|
+
validator refuses private paths, symlinks, unsupported modes and unrelated local
|
|
120
|
+
edits. Only approved overlay paths are committed. The coordinator pushes the task
|
|
121
|
+
branch, checks its exact remote head, and reads each approved snapshot at that
|
|
122
|
+
revision to compare its bytes/SHA-256. It then publishes a unique input ref
|
|
123
|
+
`<task-branch>-cloud-<full-input-head>` without changing the task's upstream.
|
|
124
|
+
The input ref is never advanced by the coordinator. Retain these refs for
|
|
125
|
+
recovery; after the logical task is retired, an operator can remove its recorded
|
|
126
|
+
input refs under the repository's retention policy. No automatic remote deletion
|
|
127
|
+
or force push is performed.
|
|
128
|
+
|
|
129
|
+
The implemented submission path rechecks the task/input refs and snapshot hashes
|
|
130
|
+
before `cloud exec --env ENV_ID --branch INPUT_REF --attempts 1`. That documented
|
|
131
|
+
call has no repository argument and stays blocked until environment mapping is
|
|
132
|
+
verified. Do not invoke it manually to bypass qualification or retry an owned
|
|
133
|
+
intent. Read-only diagnostics for previously acknowledged tasks are:
|
|
134
|
+
|
|
135
|
+
```sh
|
|
136
|
+
"/absolute/path/to/codex" cloud list --json --env ENV_ID --limit 20
|
|
137
|
+
"/absolute/path/to/codex" cloud list --json --env ENV_ID --limit 20 --cursor CURSOR
|
|
138
|
+
"/absolute/path/to/codex" cloud status TASK_ID
|
|
139
|
+
"/absolute/path/to/codex" cloud diff TASK_ID --attempt 1
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
These are native read-only examples. An exited submission command acknowledges a
|
|
143
|
+
URL; it does not finish remote work. Native `status` exits nonzero for non-ready tasks;
|
|
144
|
+
the adapter uses the JSON listing's status rather than interpreting an exit as
|
|
145
|
+
task failure. Every adapter inspection (including acknowledgement recovery) and
|
|
146
|
+
result collection checks the configured executable's exact **0.160.0** version
|
|
147
|
+
before reading listings or diffs, independently of the new-dispatch gate. A changed
|
|
148
|
+
version stops native retrieval, retains the owned task and reports `CLOUD_VERSION`;
|
|
149
|
+
restore the qualified executable to retry the same task. It does not reject the
|
|
150
|
+
result as a malformed artifact, create a successor or enable new dispatch. Already
|
|
151
|
+
collected, validated results are reused without another native command.
|
|
152
|
+
Listings paginate up to 20 pages/1 MiB with shared request deadlines,
|
|
153
|
+
backoff and coordinator concurrency. Every page includes the configured `--env`;
|
|
154
|
+
the pinned CLI resolves that environment before issuing its filtered list request.
|
|
155
|
+
Its list-item mapper emits a null `environment_id`, so an owned task's listing
|
|
156
|
+
scope comes from the successful filtered request and persisted configuration.
|
|
157
|
+
This scope does not prove the environment's connected repository or authorize a
|
|
158
|
+
new submission. The exact saved task ID, URL and single attempt remain required.
|
|
159
|
+
Contradictory environment metadata, missing tasks, unexpected attempts, malformed pages, cursor
|
|
160
|
+
loops and failed filtered requests remain unknown; there is no unfiltered fallback
|
|
161
|
+
or newest-task selection. Status events record the configured environment with
|
|
162
|
+
`environmentSource: filtered-listing`, rather than claiming a per-task field.
|
|
163
|
+
The CLI may also omit the attempt count when sibling metadata is unavailable.
|
|
164
|
+
For an owned dispatch sent with `--attempts 1`, null or omitted counts preserve
|
|
165
|
+
selector 1; explicit counts other than one refuse collection. Events retain the
|
|
166
|
+
actual reported count as `providerAttemptTotal`, including null. Missing counts
|
|
167
|
+
and selector 1 do not establish a native attempt ID.
|
|
168
|
+
|
|
169
|
+
Cloud `pending` remains queued/pending because this interface cannot distinguish
|
|
170
|
+
provisioning from execution. `ready`, `applied` and `error` observations retain
|
|
171
|
+
provider status, diff summaries, timestamps and the task link. Per-attempt native
|
|
172
|
+
IDs, token/tool transcripts, detailed provider errors, effective model and actual
|
|
173
|
+
per-task dollar cost are unavailable on this supported surface. The shared root
|
|
174
|
+
identity is the **real Cloud task ID**, not an invented provider turn ID;
|
|
175
|
+
`providerAttemptId` is null and `attemptSelector` is 1. A diff selector is not a
|
|
176
|
+
native attempt ID. Error observations enter the normalized journal; unknown cost
|
|
177
|
+
is null. Read-only clients consume saved state and never launch another poller.
|
|
178
|
+
|
|
179
|
+
The prompt requires the provider to verify the input head and source hashes,
|
|
180
|
+
make the approved change, and include `.codex-cloud-result.json` in its returned
|
|
181
|
+
diff. That envelope binds the run, repository, logical task branch, input head,
|
|
182
|
+
source hashes, neutral PR text/receipt and actual provider test records. It is
|
|
183
|
+
removed from the deliverable manifest. It does not authorize arbitrary actions.
|
|
184
|
+
The provider is instructed to leave all GitHub writing to the coordinator.
|
|
185
|
+
|
|
186
|
+
The adapter reconstructs only the saved input in a disposable directory, validates
|
|
187
|
+
every diff path/type/mode and checks/applies the diff there. Quoted paths, renames,
|
|
188
|
+
binary patches and executable-mode changes require explicit recovery rather than
|
|
189
|
+
lossy conversion. Wrong-base or mismatched envelopes persist a blocked collection
|
|
190
|
+
checkpoint. The shared result writer validates the logical task/root/base,
|
|
191
|
+
origin/branch, paths, modes and current head again, commits the accepted text
|
|
192
|
+
changes in the isolated task checkout, runs approved Verify commands in the
|
|
193
|
+
existing filesystem/network sandbox, and opens/updates one regular PR. Its
|
|
194
|
+
checkpoint reconciles already committed/pushed files and lost PR acknowledgements
|
|
195
|
+
without applying or verifying them twice. Provider test claims are preserved as
|
|
196
|
+
provider records; only coordinator-executed evidence qualifies verification.
|
|
197
|
+
Both hosted adapters validate each provider test record's command string, exact
|
|
198
|
+
input revision and integer exit status before accepting it. Empty test lists remain
|
|
199
|
+
empty; malformed records block collection and cannot become publication evidence.
|
|
200
|
+
|
|
201
|
+
An approved successor may return only the owned result envelope, including
|
|
202
|
+
`receipt`, `public-text` and explicit resume corrections.
|
|
203
|
+
Its empty source manifest uses the shared writer's verified pushed-revision path
|
|
204
|
+
at the exact input head, so verification and PR updates still require remote
|
|
205
|
+
head/ancestry, clean checkout and current ownership. It creates no source commit;
|
|
206
|
+
recovery reuses the publication checkpoint. The shared gates still decide whether
|
|
207
|
+
the PR text or receipt changed and whether a round made progress. Initial
|
|
208
|
+
dispatches still require deliverable file changes.
|
|
209
|
+
|
|
210
|
+
## Continuation, cancellation and recovery
|
|
211
|
+
|
|
212
|
+
The pinned CLI exposes no native Cloud resume/cancel command. The implemented
|
|
213
|
+
review correction creates a **successor task** after its exact predecessor settles. Each
|
|
214
|
+
child gets approved requirements/snapshots, current pushed code, trusted feedback
|
|
215
|
+
and recorded decisions. The shared logical session stays the initial Cloud task
|
|
216
|
+
ID; each run records its child task ID, parent, input revision and continuity mode.
|
|
217
|
+
One task branch, PR, configured round limit, current-head gates, evaluator and
|
|
218
|
+
human merge boundary remain canonical. There is no provider-specific review loop
|
|
219
|
+
and no claim that native memory was transferred.
|
|
220
|
+
|
|
221
|
+
Stop/cancel/timeout fences future dispatch, retains the task URL, and quarantines
|
|
222
|
+
late results. **Remote execution may continue.** Killing the CLI is not stopping
|
|
223
|
+
remote compute or billing. Interrupt is unsupported and cannot create overlapping
|
|
224
|
+
tasks. Use the native Cloud task page for any account-side intervention it offers;
|
|
225
|
+
this adapter does not claim or automate an unavailable native control.
|
|
226
|
+
|
|
227
|
+
Private `<state-home>/runs/<task-slug>/cloud.json` records dispatch intent and
|
|
228
|
+
acknowledgement; `execution.json` owns lifecycle/reservations. Per-run `job.json`,
|
|
229
|
+
`events.jsonl`, `job.log`, `result.json`, `verification.json` and
|
|
230
|
+
`result-application.json` retain observation, delivery and publication evidence.
|
|
231
|
+
Use `gallivant status`, `gallivant why <task>` and the tracker to inspect saved
|
|
232
|
+
state. Restart the same coordinator/state namespace to reconcile acknowledged
|
|
233
|
+
tasks. An acknowledgement saved by the transport can repair the execution
|
|
234
|
+
projection. A reply lost before any exact ID is persisted **stays unknown**:
|
|
235
|
+
inspect the saved intent and account task listing manually, without deleting
|
|
236
|
+
state, adopting another task or resubmitting. Automatic ambiguity resolution is
|
|
237
|
+
unavailable because this CLI supplies no documented idempotency key/lookup API.
|
|
238
|
+
|
|
239
|
+
## Verification and live qualification
|
|
240
|
+
|
|
241
|
+
`npm run test:codex-cloud` is offline. Run it alongside `npm test`, `npm run lint`,
|
|
242
|
+
`npm run test:execution-backends`, `npm run test:openai-agents` and
|
|
243
|
+
`git diff --check`. Native process locks and verification sandbox tests require
|
|
244
|
+
host process inspection and a functional native sandbox; they cannot be qualified
|
|
245
|
+
inside a sandbox that denies those OS facilities.
|
|
246
|
+
|
|
247
|
+
The live suite requires private `CODEX_CLOUD_LIVE_HOME`, `CODEX_CLOUD_LIVE_PRD`,
|
|
248
|
+
`CODEX_CLOUD_LIVE_REPO` and `CODEX_CLOUD_CAMPAIGN_LEDGER`. Use the single external
|
|
249
|
+
campaign ledger from the carried contract: `version: 1`, `limitUsd: 10`, an
|
|
250
|
+
`attempts` array with reconciled API reservations/costs, and a separate `cloud`
|
|
251
|
+
object containing `account: operator`, selected `environment`, `repo`,
|
|
252
|
+
`billingSource: chatgpt-account`, positive integer `remainingTasks`, current
|
|
253
|
+
`checkedAt`, a concrete `accountUsageEvidence` pointer, and positive `taskSeconds`
|
|
254
|
+
of at most 120. The ledger must stay outside this repository/public package.
|
|
255
|
+
The observation deadline cannot cap native remote compute. Unknown prior paid
|
|
256
|
+
API cost blocks dispatch. Cloud account allowance is separate from API dollars.
|
|
257
|
+
|
|
258
|
+
```sh
|
|
259
|
+
npm run test:codex-cloud:live
|
|
260
|
+
npm run test:codex-cloud:live -- --execute --phase=implementation
|
|
261
|
+
# Introduce an actual current-head CI failure or trusted review finding.
|
|
262
|
+
# Set CODEX_CLOUD_LIVE_CORRECTION to that finding and approved decisions.
|
|
263
|
+
npm run test:codex-cloud:live -- --execute --phase=correction
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Preflight is read-only and returns unverified on missing prerequisites or the
|
|
267
|
+
unqualified environment mapping. With this pinned adapter, both execution phases
|
|
268
|
+
are blocked before account reservation or campaign dispatch intent. After a
|
|
269
|
+
supported mapping interface is implemented and qualified, a phase reserves one
|
|
270
|
+
authorized account task and persists intent before start or resume. Never repeat
|
|
271
|
+
an intent-bearing phase. The suite restarts the coordinator, externally verifies pushed file bytes/head, actual Verify evidence, one PR and
|
|
272
|
+
successor parentage, and saves `cloud-live-evidence.json` privately. Costs and
|
|
273
|
+
missing native attempt IDs remain unknown. Installed-plugin/browser release
|
|
274
|
+
evidence belongs to M5/M6; neither a CLI help check nor these fixtures qualifies it.
|
|
275
|
+
|
|
276
|
+
Command and environment references rechecked 2026-10-07; authentication checked
|
|
277
|
+
2026-10-06:
|
|
278
|
+
[developer commands](https://learn.chatgpt.com/docs/developer-commands),
|
|
279
|
+
[Cloud environments](https://learn.chatgpt.com/docs/environments/cloud-environments),
|
|
280
|
+
[authentication](https://learn.chatgpt.com/docs/auth).
|
|
281
|
+
The version-specific public CLI source was also inspected for status/JSON/diff
|
|
282
|
+
semantics, including [environment resolution and filtered listing](https://github.com/openai/codex/blob/rust-v0.160.0/codex-rs/cloud-tasks/src/lib.rs)
|
|
283
|
+
and [list-item mapping](https://github.com/openai/codex/blob/rust-v0.160.0/codex-rs/cloud-tasks-client/src/http.rs).
|
|
284
|
+
No internal endpoint from that source is called by this adapter.
|