Do not reopen completed runs when reaper misses an already-pushed closing reference #1606

Closed
opened 2026-07-28 10:12:15 +00:00 by coilyco-ops · 4 comments
Member

Problem

A completed headless run for coilyco-flight-deck/ward#1605 pushed to main and posted WARD-WORKFLOW: done, with both follow-up workflows green, but the reaper then posted WARD-WORKFLOW: blocked and reopened the issue because it believed no same-repo closing reference reached main.

Observed from the read-only burndown surface on 2026-07-28:

Issue #1605 final engineer log:
Implemented and landed.
Pushed main at 626969b2 with commit a7cef736 carrying closes #1605.
Forgejo promote #2507 success.
Forgejo release #2508 success.

Issue thread after that:
WARD-WORKFLOW: done ✅
WARD-WORKFLOW: blocked 🛑
Salvage branch: ward-salvage/ward-86b72dcf
Pull request: not opened - salvage branch has no diff against main
Reason: missing same-repo closing reference

The result is a completed issue left open and marked blocked, even though there was no salvage diff and the release pipeline was green.

Desired outcome

Make reaper/salvage classification trust or re-check the already-pushed main state before reopening a completed run as blocked.

Acceptance

  • Reproduce or explain how a run with a posted done comment and green pushed main can be reopened as blocked for missing same-repo closing reference.
  • Prefer a fix that re-checks origin/main for the closing reference before posting blocked/reopening, or treats no-diff salvage after a done comment as non-blocking.
  • Add focused tests around the misclassification.
  • Document the manual proof state for coilyco-flight-deck/ward#1605.
  • Avoid changing the legitimate salvage behavior for real unmerged residual work.

Context

This was surfaced during the autonomous Ward burndown after #1605 diagnosed release run #2501. The issue itself should be considered completed; this ticket is for the reaper classification bug.

## Problem A completed headless run for coilyco-flight-deck/ward#1605 pushed to main and posted WARD-WORKFLOW: done, with both follow-up workflows green, but the reaper then posted WARD-WORKFLOW: blocked and reopened the issue because it believed no same-repo closing reference reached main. Observed from the read-only burndown surface on 2026-07-28: ```text Issue #1605 final engineer log: Implemented and landed. Pushed main at 626969b2 with commit a7cef736 carrying closes #1605. Forgejo promote #2507 success. Forgejo release #2508 success. Issue thread after that: WARD-WORKFLOW: done ✅ WARD-WORKFLOW: blocked 🛑 Salvage branch: ward-salvage/ward-86b72dcf Pull request: not opened - salvage branch has no diff against main Reason: missing same-repo closing reference ``` The result is a completed issue left open and marked blocked, even though there was no salvage diff and the release pipeline was green. ## Desired outcome Make reaper/salvage classification trust or re-check the already-pushed main state before reopening a completed run as blocked. ## Acceptance - Reproduce or explain how a run with a posted done comment and green pushed main can be reopened as blocked for missing same-repo closing reference. - Prefer a fix that re-checks origin/main for the closing reference before posting blocked/reopening, or treats no-diff salvage after a done comment as non-blocking. - Add focused tests around the misclassification. - Document the manual proof state for coilyco-flight-deck/ward#1605. - Avoid changing the legitimate salvage behavior for real unmerged residual work. ## Context This was surfaced during the autonomous Ward burndown after #1605 diagnosed release run #2501. The issue itself should be considered completed; this ticket is for the reaper classification bug.
Author
Member

WARD-WORKFLOW: done

details

workflow: merge-remote-main; review summary: skipped - in-container review gate intentionally skipped because the temporary ward default is pending brokered QA.

Implemented and landed 42c7b93f on main, closing #1606. ward exec test, ward exec vet, ward exec lint, commit hooks, Forgejo promote #2512, and Forgejo release #2513 passed.

Felt: narrow once the clean-tree reaper gate was found; the tricky part was preserving the close-less salvage guard while trusting already-pushed main in the completed/no-diff case.

Confidence: high.

Surprises: the prescribed aosguard verification path could not resolve its SSM token here, so I verified the same Forgejo Actions state through the public API.

Follow-ups: none.

WARD-WORKFLOW: done ✅ <details><summary>details</summary> workflow: merge-remote-main; review summary: skipped - in-container review gate intentionally skipped because the temporary ward default is pending brokered QA. Implemented and landed `42c7b93f` on `main`, closing #1606. `ward exec test`, `ward exec vet`, `ward exec lint`, commit hooks, Forgejo promote #2512, and Forgejo release #2513 passed. Felt: narrow once the clean-tree reaper gate was found; the tricky part was preserving the close-less salvage guard while trusting already-pushed main in the completed/no-diff case. Confidence: high. Surprises: the prescribed aosguard verification path could not resolve its SSM token here, so I verified the same Forgejo Actions state through the public API. Follow-ups: none. </details>
Author
Member

WARD-WORKFLOW: blocked 🛑

salvage details

An ephemeral ward container (codex mode) dispatched for this issue finished but its work was not merged to main, so cleanup preserved it on a branch before teardown and reopened the issue (a closing reference for #1606 never reached main). Recover from the salvage branch below.

  • Repo: coilyco-flight-deck/ward
  • Salvage branch: ward-salvage/ward-85c795b2
  • Pull request: not opened - salvage branch has no diff against main
  • Reason: missing same-repo closing reference
  • Container uptime at reap: 13m (age of the baked Forgejo PAT snapshot; a long-lived container is likelier to carry a rotated token)

Cleanup diagnostics

--- reap diagnostics ---
ward version:      v0.823.0
version source:    pinned via WARD_VERSION/--ward-version (v0.823.0)
HEAD:              42c7b93f3a6a
origin/main:       d73e496a2460
ancestry:          HEAD is ALREADY on origin/main - a salvage here is a FALSE salvage (ward#504 signature)
decision gate:     missing same-repo closing reference on already-landed merge-remote-main run
reason:            missing same-repo closing reference
provenance:        present
run-owned landed:  no
working tree:      clean
container uptime:  13m (baked Forgejo PAT age proxy)
--- end reap diagnostics ---

Recover

git fetch https://forgejo.coilysiren.me/coilyco-flight-deck/ward.git ward-salvage/ward-85c795b2
git checkout -b ward-salvage/ward-85c795b2 FETCH_HEAD

This salvage was blocked by a missing closing reference. To recover, amend or cherry-pick the salvaged work so the landing commit message includes closes #1606, or add a small empty trailer commit with closes #1606, then land the branch.

— Codex, via ward agent

WARD-WORKFLOW: blocked 🛑 <details><summary>salvage details</summary> An ephemeral `ward container` (codex mode) dispatched for this issue finished but its work was **not merged to `main`**, so cleanup preserved it on a branch before teardown and reopened the issue (a closing reference for #1606 never reached `main`). Recover from the salvage branch below. - **Repo:** `coilyco-flight-deck/ward` - **Salvage branch:** `ward-salvage/ward-85c795b2` - **Pull request:** not opened - salvage branch has no diff against main - **Reason:** missing same-repo closing reference - **Container uptime at reap:** 13m (age of the baked Forgejo PAT snapshot; a long-lived container is likelier to carry a rotated token) ## Cleanup diagnostics ``` --- reap diagnostics --- ward version: v0.823.0 version source: pinned via WARD_VERSION/--ward-version (v0.823.0) HEAD: 42c7b93f3a6a origin/main: d73e496a2460 ancestry: HEAD is ALREADY on origin/main - a salvage here is a FALSE salvage (ward#504 signature) decision gate: missing same-repo closing reference on already-landed merge-remote-main run reason: missing same-repo closing reference provenance: present run-owned landed: no working tree: clean container uptime: 13m (baked Forgejo PAT age proxy) --- end reap diagnostics --- ``` ## Recover ```bash git fetch https://forgejo.coilysiren.me/coilyco-flight-deck/ward.git ward-salvage/ward-85c795b2 git checkout -b ward-salvage/ward-85c795b2 FETCH_HEAD ``` This salvage was blocked by a missing closing reference. To recover, amend or cherry-pick the salvaged work so the landing commit message includes `closes #1606`, or add a small empty trailer commit with `closes #1606`, then land the branch. </details> <!-- ward-agent-signature --> — Codex, via `ward agent`
Author
Member

WARD-WORKFLOW: reservation-released

release details

Run finished with WARD-WORKFLOW: blocked 🛑.

ward container reap released container engineer-codex-ward-1606 (--harness codex): the terminal outcome supersedes the reservation, so a later redispatch no longer needs --override-reservation.

— Codex, via ward agent

<!-- ward-agent-reservation-released --> WARD-WORKFLOW: reservation-released <details><summary>release details</summary> Run finished with `WARD-WORKFLOW: blocked 🛑`. `ward container reap` released container `engineer-codex-ward-1606` (`--harness codex`): the terminal outcome supersedes the reservation, so a later redispatch no longer needs `--override-reservation`. </details> <!-- ward-agent-signature --> — Codex, via `ward agent`
Author
Member

Director cleanup: closing this manually because the run completed and this issue fixed the false-salvage path, but its own container still reaped under old pinned Ward v0.823. Proof: posted WARD-WORKFLOW: done; landed commit 42c7b93f on main; Forgejo promote #2512 and release #2513 succeeded; salvage branch had no diff against main.

Director cleanup: closing this manually because the run completed and this issue fixed the false-salvage path, but its own container still reaped under old pinned Ward v0.823. Proof: posted WARD-WORKFLOW: done; landed commit 42c7b93f on main; Forgejo promote #2512 and release #2513 succeeded; salvage branch had no diff against main.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/ward#1606
No description provided.