From 4e244d81048c80c4b5d33bf06412e1cb282eef81 Mon Sep 17 00:00:00 2001 From: kami Date: Fri, 28 Aug 2026 11:07:41 +0400 Subject: [PATCH] Record run 6, the four missing links, and the baseline conformance run Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01CVbaKucEYBjMqVeUgJUsc1 --- BURNIN.md | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/BURNIN.md b/BURNIN.md index 66d9b04..0dcdc47 100644 --- a/BURNIN.md +++ b/BURNIN.md @@ -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]/` 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//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`.