docs: add live cloud Box 2-way fan-out results for issue #255

dcb170205df6 · AtlantisPleb · · parent 6a8d05ee2e8a

docs: add live cloud Box 2-way fan-out results for issue #255

Record the after-state: 2-box fanout admitted at the cap with a durable
plan, isolated concurrent forge clones on distinct provider hosts,
durable run output, cleanup, and the two seams found live — the
credentialed assignment dispatch failing box_response_invalid at the
provider /commands call, and the CLI runs-output parser reading the
nested output object as text.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SoZMfWRSGnf6FZX2Ar9rQ2
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>

Deploy story

What this commit did to the running system — joined from the forge receipt chain, the part a commit page elsewhere cannot show.

pushed
by user · WAL seq 416 · 2026-08-25T19:47:52.678934Z

Changed files

  • modified docs/2026-08-25-ox-alpha-stress-test-log.md

Diff

1 file changed, +100 -0

docs/2026-08-25-ox-alpha-stress-test-log.md modified +100

@@ -167,3 +167,103 @@ tree the site runs:

167 167
   (`GET /api/v1/user` returns no `conversation_id`).
168 168
3. `BOX_API_KEY` provider credential configuration in production, verifiable
169 169
   only after 1 and 2.
170
171
## 7. Cloud Box 2-way fan-out: live results (2026-08-25, after unblock)
172
173
The three blockers in section 6 were cleared the same day: the `BOX_API_KEY`
174
provider credential was set in production, a `box:control`-scoped API token
175
was minted from **Settings → API tokens**, and the owner's conversation UUID
176
was supplied directly. The CLI consumed the scoped token through its
177
`OPENAGENTS_TOKEN` environment override; all commands below are real
178
`openagents box` invocations run from monorepo source at `6f575f466a`.
179
180
### Fan-out and provisioning (criterion a: demonstrated live)
181
182
`openagents box fanout --count 2 --labels ox-alpha-1,ox-alpha-2
183
--conversation <uuid> --json` returned plan
184
`f6e8b333-0508-4615-825d-52df9dd2b59b`: 2 requested, 2 admitted, 0 queued,
185
`budgeted: false`, `effective_limits.conversation_active_limit: 2`. Both VMs
186
reached `idle` / setup `done` within ~10 seconds of the request. The plan is
187
durable: `GET .../boxes/fanout/f6e8b333-...` re-serves it after the boxes
188
stopped.
189
190
| Label | Box ID | Provider host | Admitted at |
191
| --- | --- | --- | --- |
192
| ox-alpha-1 | `bx_8af5ehkj` | `box-node-67cd03d983815f97` | 19:37:03Z |
193
| ox-alpha-2 | `bx_xsv6tr39` | `agents-server-one-1787686473-313447` | 19:37:08Z |
194
195
Distinct hostnames confirm the two sandboxes landed on different provider
196
hosts. Box images carry git 2.43, node v24.19, npm, bun, and codex on
197
Ubuntu (4 vCPU, 8 GB); `opencode` is not installed.
198
199
### Isolated clones and asynchronous runs (criterion b: partially demonstrated)
200
201
Each box ran a durable background run (`openagents box run <box_id>
202
--conversation <uuid> '<script>'`) that cloned the repository from the forge
203
(`git clone --depth 1 https://openagents.com/OpenAgentsInc/openagents.com.git`)
204
into its own sandbox and reported timings and the head revision. The two runs
205
executed concurrently (19:43:09.3–14.5Z and 19:43:10.3–16.2Z) and both
206
resolved `HEAD` to production main `40dbd832`, proving isolated per-box clones
207
served by the forge.
208
209
| Run ID | Box | State | Exit | Wall | Clone |
210
| --- | --- | --- | --- | --- | --- |
211
| `0c0f2de0-ce47-4377-a9fb-f0743d95d9d6` | bx_8af5ehkj | completed | 0 | 5 s | 5 s |
212
| `202d391c-77d6-4ba1-91fd-8b8063bc5db8` | bx_xsv6tr39 | completed | 0 | 6 s | 6 s |
213
214
Not demonstrated: an actual Ox Alpha model turn on a box. `opencode` is not in
215
the box image and no inference-credential lane exists for boxes yet; placing
216
the account token inside a run command would persist a secret in the durable
217
run record, so it was not attempted. Tokens generated on boxes: 0.
218
219
### Output logs and receipts (criterion c: output demonstrated; push receipts blocked)
220
221
Run output is durable server-side:
222
`GET .../boxes/:box_id/runs/:run_id/output` returns the full log (`box_host`,
223
timings, `head_revision`) with offsets after run completion, and `box runs
224
list` / `runs view` re-serve every run record, including the failed attempts
225
below.
226
227
Push receipts could not be exercised. The credentialed lane —
228
`POST .../boxes/:box_id/assignments` (`OpenAgents.Forge.Assignments`), which
229
injects a branch-scoped forge credential so the box can push — failed
230
deterministically on dispatch, twice per box (initial + one retry):
231
232
| Assignment | Branch | Run | Failure |
233
| --- | --- | --- | --- |
234
| `9c328eca` | `box/ox-alpha-1-issue-255` | `78bf8a79` | `box_response_invalid` |
235
| `1879b291` | `box/ox-alpha-2-issue-188` | `686c33be` | `box_response_invalid` |
236
| `e35d1c88` (retry) | `box/ox-alpha-1-issue-255` | `4c91167c` | `box_response_invalid` |
237
| `40392ea6` (retry) | `box/ox-alpha-2-issue-188` | `fc347327` | `box_response_invalid` |
238
239
Evidence points at the provider seam: the identical script dispatched without
240
a credential completes normally, but the credentialed dispatch — the only
241
variant that adds an `env` field (`OPENAGENTS_FORGE_TOKEN`) to the provider
242
`/commands` request and a credential-setup preamble to the wrapper — comes
243
back without a parseable PID (`Box.Client.dispatch_pid/1` refuses), and box
244
forensics show the run root directory was never created, so the wrapper never
245
executed. The likely cause is the provider command API not honoring the `env`
246
parameter. Follow-up belongs with openagents#58 / a provider-API check, not
247
with the fanout substrate.
248
249
One CLI defect surfaced: `openagents box runs output` prints an empty string
250
because `BoxClient.runOutput` reads the response's `output` key as text while
251
the server returns a nested object (`{"output": {"output": ...}}`). The raw
252
route returns the log correctly.
253
254
### Cleanup
255
256
Both boxes were stopped (`openagents box stop`), observed `archiving` with
257
slots released. Peak concurrent boxes: 2 of the 2-box cap; `--budgeted` never
258
used.
259
260
### Acceptance criteria after the live run
261
262
1. Multi-box dispatch provisions/queues up to the cap: **demonstrated live**
263
   (2 requested, 2 admitted, 0 queued, cap honored, durable plan).
264
2. Isolated repo clones and asynchronous execution per box: **demonstrated
265
   live** for clones and concurrent durable runs; **Ox Alpha model turns
266
   remain undemonstrated** (no `opencode`/inference lane in the box image).
267
3. Output logs, tokens, and push receipts on the server: **output logs
268
   demonstrated live**; tokens not applicable (no model turn); **push
269
   receipts blocked** by the credentialed-dispatch failure above.

This page updates live while a promote is in flight · changelog