docs: CI green and deployed — record the verified production state
Run 498 passed and deployed. Confirmed on gw-04: 53 skills, 11 templates, zero unresolved bindings, self-authoring announced ENABLED, the new gateway_preflight answering, and migration 0080 applied. Also records that run 497 was cancelled by the concurrency guard rather than failing, and that the stream-json runtime image is still NOT shipped by this pipeline. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5
parent
689a5e14a3
commit
ac4fa0b8f7
+40
-26
@@ -10,44 +10,58 @@ Read `CAPABILITY-REVIEW.md` for the system picture,
|
|||||||
`merge/upstream-v0.8.4` is at `db1c50966`. The local suite is green — 106 test
|
`merge/upstream-v0.8.4` is at `db1c50966`. The local suite is green — 106 test
|
||||||
binaries, zero build errors, frontend builds.
|
binaries, zero build errors, frontend builds.
|
||||||
|
|
||||||
## CI: root cause found — an apostrophe
|
## CI green, deployed to production 2026-08-20
|
||||||
|
|
||||||
Runs 490–496 all failed. Two distinct causes, both now fixed:
|
Run **498 passed and deployed**. Verified on gw-04 after the recreate:
|
||||||
|
|
||||||
|
```
|
||||||
|
skill_self_authoring: ENABLED — agents apply their own skill drafts without human approval
|
||||||
|
skills_loader: loaded 53 builtin skill(s)
|
||||||
|
team_template_loader: loaded 11 builtin team template(s) # 0 unresolved
|
||||||
|
gateway_preflight: http://clawmates-runtime:42617 answered
|
||||||
|
missions.retain_events_until # migration 0080 applied
|
||||||
|
```
|
||||||
|
|
||||||
|
107 test binaries green in CI. So everything in this block is now **live**,
|
||||||
|
including self-authoring with no human click and the PreToolUse gate installing
|
||||||
|
into every microVM mission.
|
||||||
|
|
||||||
|
### Why runs 490–496 failed (two causes, both fixed)
|
||||||
|
|
||||||
- **490** — two runs overlapped. Every run began by removing the *shared*
|
- **490** — two runs overlapped. Every run began by removing the *shared*
|
||||||
container `cm-ci-pg`, so run 491 deleted run 490's database mid-suite. Fixed
|
container `cm-ci-pg`, so run 491 deleted run 490's database mid-suite. Fixed
|
||||||
with a `concurrency` group and a run-scoped container name.
|
with a `concurrency` group and a run-scoped name. (497 was later *cancelled*
|
||||||
|
by that guard, which is correct behaviour, not a failure.)
|
||||||
- **491–496** — a **single apostrophe**. The Rust step is
|
- **491–496** — a **single apostrophe**. The Rust step is
|
||||||
`docker run … sh -c '…'`, and a comment inside that single-quoted block read
|
`docker run … sh -c '…'`, and a comment inside it read `cm-api's
|
||||||
`cm-api's vm_tool_gate`. The quote closed, bash died with *"unexpected EOF
|
vm_tool_gate`. The quote closed; bash died with *"unexpected EOF"* **before
|
||||||
while looking for matching quote"* **before running anything** — hence an
|
running anything** — hence an empty log, a breadcrumb showing the step
|
||||||
empty log, a breadcrumb showing the step entered and produced nothing, and
|
entered and produced nothing, and three wrong theories. I introduced it in
|
||||||
three wrong theories. I introduced it in the commit that fixed 490.
|
the commit that fixed 490.
|
||||||
|
|
||||||
`tests/workflow_shell_syntax.rs` now `bash -n`s every `run:` block, so this
|
`tests/workflow_shell_syntax.rs` now `bash -n`s every `run:` block, so this
|
||||||
class fails locally instead of six runs later. Negative-controlled.
|
class fails locally rather than six runs later. Negative-controlled.
|
||||||
|
|
||||||
**Verify the deploy landed.** A run was in flight at session end:
|
### Still worth having
|
||||||
|
|
||||||
|
The Gitea actions-log API returns **403** for the token in
|
||||||
|
`deploy/compose/.env`, and the server is behind Cloudflare on a host not on the
|
||||||
|
tailnet. Every step now writes to `/tmp/ci-logs` on the runner host as a
|
||||||
|
workaround (`ssh gw-04 'cat /tmp/ci-logs/STEP; tail -40 /tmp/ci-logs/rust-step.log'`),
|
||||||
|
but **a token with the `actions` scope** would have made the whole detour
|
||||||
|
unnecessary.
|
||||||
|
|
||||||
|
### Watch the first real mission
|
||||||
|
|
||||||
|
Nothing has yet confirmed end to end that the PreToolUse gate behaves in a real
|
||||||
|
guest, or that `tool.call` rows appear. The `stream-json` runtime image is
|
||||||
|
**still not deployed** — it is a separate image (`clawmates-runtime:streamjson`,
|
||||||
|
built locally) and this pipeline does not ship it.
|
||||||
|
|
||||||
```
|
```
|
||||||
ssh gw-04 'curl -s "https://git.redclaw.dev/api/v1/repos/osobh/clawmates/actions/tasks?limit=4" | python3 -m json.tool | grep -E "run_number|status|name"'
|
ssh gw-04 'cat /root/toolgate/denied.jsonl' # inside a mission VM
|
||||||
ssh gw-04 'cat /tmp/ci-logs/STEP; tail -40 /tmp/ci-logs/rust-step.log'
|
|
||||||
```
|
```
|
||||||
|
|
||||||
If `build` succeeds, gw-04's 60s timer deploys within a minute — **that is the
|
|
||||||
first time these 12 commits reach production**, including self-authoring ON by
|
|
||||||
default and the PreToolUse gate installing into every microVM mission. Watch
|
|
||||||
the first mission after it.
|
|
||||||
|
|
||||||
If `test` fails again, read `/tmp/ci-logs/rust-step.log` — it now captures the
|
|
||||||
docker command's own stdout and stderr on the host, which is what was missing
|
|
||||||
the whole time. Do not infer a cause without it.
|
|
||||||
|
|
||||||
Note the Gitea actions-log API returns **403** for the token in
|
|
||||||
`deploy/compose/.env`, and the Gitea server is behind Cloudflare on a host not
|
|
||||||
on the tailnet. **A token with the `actions` scope would have made this entire
|
|
||||||
detour unnecessary** — it is the single highest-value thing to obtain.
|
|
||||||
|
|
||||||
## Then, in order
|
## Then, in order
|
||||||
|
|
||||||
1. **Prove the PreToolUse gate in a real VM.** `vm_tool_gate` is unit-tested and
|
1. **Prove the PreToolUse gate in a real VM.** `vm_tool_gate` is unit-tested and
|
||||||
|
|||||||
Reference in New Issue
Block a user