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,
|
Proven chain: review, done recognised, finalise, result branch pushed,
|
||||||
`TaskCompleted`. Submission, human PR review and merge remain unproven, and they
|
`TaskCompleted`. Submission, human PR review and merge remain unproven, and they
|
||||||
need registry configuration rather than code.
|
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