Record run 6, the four missing links, and the baseline conformance run
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVbaKucEYBjMqVeUgJUsc1
This commit is contained in:
@@ -1790,3 +1790,113 @@ has no `sources` and no `delivery` keys, so no PR could be opened.
|
||||
Proven chain: review, done recognised, finalise, result branch pushed,
|
||||
`TaskCompleted`. Submission, human PR review and merge remain unproven, and they
|
||||
need registry configuration rather than code.
|
||||
|
||||
## Run 6, 2026-08-28: the PR tail, and the baseline conformance run
|
||||
|
||||
The last handoff said submission, human review and merge needed configuration
|
||||
rather than code. That was wrong. The whole event log held zero `ReviewRecorded`
|
||||
and zero `TaskSubmitted`: nothing in the running system ever called either
|
||||
endpoint, so the publisher, the merge reflection and the human trust boundary
|
||||
had no entry point at all. Four links were missing, and three more defects
|
||||
surfaced while proving them.
|
||||
|
||||
### F43, the reviewed change had no path to the human
|
||||
|
||||
The worker's completion tail called `federation.Client.Complete` directly and
|
||||
emitted `TaskCompleted`. `POST /v1/tasks/{id}/review` and
|
||||
`POST /v1/tasks/{id}/submission` existed and had no live caller; `task pr` is
|
||||
named in six documents and implemented nowhere. `GiteaPublisher.Push` also ran
|
||||
`git push` from `projectRoots[project]/<task>` on the coordinator, a directory
|
||||
that does not exist for a worker-owned project whose worktree is on workpc.
|
||||
|
||||
Fixed in `e8d04d7`:
|
||||
|
||||
- `finalize` commits first and runs the gate against the committed tree, so
|
||||
`GateResult.SHA` is the commit being submitted. `CheckSubmission` requires
|
||||
gate sha, review sha and head sha to be one commit, which a gate run on the
|
||||
pre-commit tree can never satisfy.
|
||||
- `POST /v1/federation/workers/<id>/submit` seals the review and submits. A
|
||||
blocking review returns the task to implementation; a project with no forge
|
||||
still completes directly.
|
||||
- The reviewer's brief names `.orchestra/review.json` and no longer claims a
|
||||
diff is supplied. Nothing populates `agentctx.Evidence` on the federated
|
||||
path, so the brief described material the session never received.
|
||||
- `Push` asks the forge what the branch holds before reaching for a checkout.
|
||||
|
||||
### F44, the Gitea source ingested Orchestra's own pull requests
|
||||
|
||||
The first submission this deployment ever made, `kami/test-e2e#8`, came back one
|
||||
minute later as task `06G4E83E4KRXM8DS90M2648MGM` with the submission packet as
|
||||
its description. That task would have implemented, reviewed and submitted again,
|
||||
opening a pull request per cycle. The issues endpoint returns pull requests and
|
||||
nothing filtered them. The webhook had the same hole from the other side: a
|
||||
`pull_request` delivery leaves the `issue` key empty and would have appended a
|
||||
task numbered 0 with no title.
|
||||
|
||||
Contained by blocking the spawned task, fixed in `6ccc755`.
|
||||
|
||||
### F45, the submission reflection loop was dead code
|
||||
|
||||
`if len(pullRequests) > 0` guarded the loop 600 lines before the Gitea wiring
|
||||
that writes to that map. The length was always zero, the goroutine never
|
||||
started, and a merged pull request could never complete its task. Live: a
|
||||
trusted comment on PR #8 moved nothing until `4af9880` moved the block below
|
||||
the wiring.
|
||||
|
||||
### F46, stale review findings survive a changes-requested round trip
|
||||
|
||||
The worktree is not recreated, so `.orchestra/review.json` from the first review
|
||||
is still present when the second one starts. A reviewer that writes
|
||||
`.orchestra/done` without rewriting it would have the earlier findings sealed
|
||||
against the new commit, and a stale pass is indistinguishable from a fresh one.
|
||||
Observed at 10:57:48 with a file from 10:55:45. That reviewer did rewrite it, so
|
||||
the run stands. Fixed in `063a3ab`.
|
||||
|
||||
### Baseline conformance run
|
||||
|
||||
Task `06G4E6F69AKP2PA00S28D7ASBC`, issue `kami/test-e2e#7`, `workpc-claude`,
|
||||
tmux backend. Coordinator `4af9880`, worker `e8d04d7`. No manual lifecycle
|
||||
intervention: every event below was emitted by the plane.
|
||||
|
||||
```text
|
||||
06:41:14 TaskCreated issue #7 polled
|
||||
06:41:37 WorkPhaseChanged frame -> research
|
||||
06:42:57 WorkPhaseChanged research -> plan
|
||||
06:45:12 WorkPhaseChanged plan -> implement
|
||||
06:46:27 WorkPhaseChanged implement -> review
|
||||
06:47:48 ReviewRecorded blocking 0, sha 41dee802
|
||||
06:47:49 TaskSubmitted PR 8 opened, sha 41dee802
|
||||
06:55:11 TaskChangesRequested trusted comment by kami
|
||||
06:55:11 WorkPhaseChanged review -> implement
|
||||
06:57:47 WorkPhaseChanged implement -> review
|
||||
07:00:09 ReviewRecorded blocking 0, sha 0d1585df
|
||||
07:00:09 TaskSubmitted PR 8 reused, sha 0d1585df
|
||||
07:02:07 merge by kami
|
||||
07:02:11 TaskCompleted receipt binds merge f48e363d
|
||||
```
|
||||
|
||||
Acceptance, each checked against the artifact rather than the log line:
|
||||
|
||||
- The gate ran against the exact submitted commit. Gate artifact
|
||||
`bd3549d6`: `{"command":"bash -n scripts/*.sh && bash
|
||||
scripts/orchestra_e2e_healthcheck.sh","exit_code":0,"sha":"0d1585df"}`.
|
||||
- `TaskSubmitted` binds all five: gate sha, review sha, result sha, remote ref
|
||||
`origin/orchestra/06G4E6F69AKP2PA00S28D7ASBC`, and PR 8. The PR head reads
|
||||
`0d1585df` at the forge.
|
||||
- Resubmission reused PR 8 with a new gate ref and a new review ref.
|
||||
- A trusted human reopened the task and the change reached merged `master`:
|
||||
`--quiet` is documented in `--help`, which is what the comment asked for.
|
||||
- Merge produced the completion receipt: `merge_sha f48e363d`,
|
||||
`submitted_sha 0d1585df`, `submission_ref 06G4EASR63SZ1WWRYHR62WJQS4`.
|
||||
- Final state `completed`.
|
||||
|
||||
Freeze this as the baseline. One caveat on the reopen: Gitea returns 422 for a
|
||||
review on your own pull request, and Orchestra opens the PR as the same forge
|
||||
user the operator reviews as. `REQUEST_CHANGES` is therefore unreachable in this
|
||||
deployment and the comment path is what was exercised. A separate bot account
|
||||
for `ORCHESTRA_GITEA_TOKEN` would restore it.
|
||||
|
||||
Configuration this needed, for the record: `quality_gate` on `test-e2e` in both
|
||||
`config.jsonc` (coordinator) and `/etc/orchestra/worker-projects.json` (worker,
|
||||
which is the copy `finalize` actually reads), plus `ORCHESTRA_REVIEW_ACTORS=kami`
|
||||
in the compose `.env`.
|
||||
|
||||
Reference in New Issue
Block a user