Make the reservation folder disposable and safe to clear wholesale #1293

Merged
coilysiren merged 5 commits from issue-1224-rebased into main 2026-07-15 05:58:26 +00:00
Member

This change makes the reservation directory disposable cache instead of fragile per-issue local state. ward agent list now self-heals a missing cache directory, stale rows prune themselves from durable issue-thread evidence and Docker reality, and operators get a first-class ward agent reservations clear command for wholesale cleanup.

closes #1293

ward.workflow: pull-request-and-merge

  • go test ./... passed.
  • Rebased onto current main and resolved the docs merge conflict narrowly.
This change makes the reservation directory disposable cache instead of fragile per-issue local state. `ward agent list` now self-heals a missing cache directory, stale rows prune themselves from durable issue-thread evidence and Docker reality, and operators get a first-class `ward agent reservations clear` command for wholesale cleanup. closes #1293 ward.workflow: pull-request-and-merge - `go test ./...` passed. - Rebased onto current `main` and resolved the docs merge conflict narrowly.
feat: make reservation cache disposable
Some checks failed
test / test (pull_request) Failing after 35s
b0bf98eb3c
Author
Member

WARDED_WORKFLOW: blocked 🛑

details

workflow: pull-request-and-merge; review summary: review gate intentionally skipped by the temporary ward default pending brokered QA

Forgejo Actions run #2052 failed in the repo's test job after go vet and before golangci-lint. The run page exposed step-level failure only, so I could not pull a lower-level log from the API surface here.

Retrospective: the reservation-cache change itself felt straightforward. The blocker is outside the reservation path and looks like the existing go test track, not the new cleanup surface.

Confidence: medium.
Surprises: the Forgejo run view gave me the failing step list but not the raw log body through the available API surface.
Follow-up: resolve the failing go test path or the runner environment, then rerun the PR workflow.

WARDED_WORKFLOW: blocked 🛑 <details><summary>details</summary> workflow: pull-request-and-merge; review summary: review gate intentionally skipped by the temporary ward default pending brokered QA Forgejo Actions run #2052 failed in the repo's `test` job after `go vet` and before `golangci-lint`. The run page exposed step-level failure only, so I could not pull a lower-level log from the API surface here. Retrospective: the reservation-cache change itself felt straightforward. The blocker is outside the reservation path and looks like the existing `go test` track, not the new cleanup surface. Confidence: medium. Surprises: the Forgejo run view gave me the failing step list but not the raw log body through the available API surface. Follow-up: resolve the failing `go test` path or the runner environment, then rerun the PR workflow. </details>
fix: classify reservation cache cleanup as meta
All checks were successful
test / test (pull_request) Successful in 49s
2e1a2e6042
Author
Member

WARDED_WORKFLOW: blocked 🛑

details

workflow: pull-request-and-merge; review summary: review gate intentionally skipped by the temporary ward default pending brokered QA

The branch is green locally and the PR CI passed, but Forgejo's merge endpoint is still returning 405 "Please try again later" after repeated settle attempts.

Retrospective: the reservation-cache work itself is in good shape. The remaining blocker is Forgejo merge-queue pressure, not the code path.
Confidence: medium.
Follow-up: retry the merge once the Forgejo queue clears.

WARDED_WORKFLOW: blocked 🛑 <details><summary>details</summary> workflow: pull-request-and-merge; review summary: review gate intentionally skipped by the temporary ward default pending brokered QA The branch is green locally and the PR CI passed, but Forgejo's merge endpoint is still returning 405 "Please try again later" after repeated settle attempts. Retrospective: the reservation-cache work itself is in good shape. The remaining blocker is Forgejo merge-queue pressure, not the code path. Confidence: medium. Follow-up: retry the merge once the Forgejo queue clears. <!-- ward-agent-signature --> </details>
Author
Member

WARDED_WORKFLOW: reservation-held

reservation details

Holder: launch intent for container engineer-codex-ward-1293 on host kais-macbook-pro-2.local.

Accepted by ward agent --harness codex (reserved 2026-07-15T05:45:58Z). Concurrent ward agent runs are blocked until this intent becomes visible or the intent is released. The stale-intent fallback is still TTL-bounded (3h TTL). --override-reservation overrides.

Do not comment on or edit this issue to steer the run while it is reserved. The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a new issue, dispatched fresh. That is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494).

run seed context — what this run is carrying (ward#609)
  • Resolved: coilyco-flight-deck/ward#1293 · branch issue-1293 · harness codex · workflow pull-request-and-merge
  • Run: engineer-codex-ward-1293 · ward v0.697.0 · dispatched 2026-07-15T05:45:44Z
  • Comment thread: 2 included in the pre-flight read, 0 stripped (ward's own automated comments).

Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.697.0).

— Codex, via ward agent

<!-- ward-agent-reservation --> WARDED_WORKFLOW: reservation-held <details><summary>reservation details</summary> Holder: launch intent for container `engineer-codex-ward-1293` on host `kais-macbook-pro-2.local`. Accepted by `ward agent --harness codex` (reserved 2026-07-15T05:45:58Z). Concurrent `ward agent` runs are blocked until this intent becomes visible or the intent is released. The stale-intent fallback is still TTL-bounded (3h TTL). `--override-reservation` overrides. **Do not comment on or edit this issue to steer the run while it is reserved.** The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a **new issue, dispatched fresh**. That is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494). <details><summary>run seed context — what this run is carrying (ward#609)</summary> - **Resolved:** `coilyco-flight-deck/ward#1293` · branch `issue-1293` · harness `codex` · workflow `pull-request-and-merge` - **Run:** `engineer-codex-ward-1293` · ward `v0.697.0` · dispatched `2026-07-15T05:45:44Z` - **Comment thread:** 2 included in the pre-flight read, 0 stripped (ward's own automated comments). - included: @coilyco-ops (2026-07-14T19:14:16Z), @coilyco-ops (2026-07-15T03:28:48Z) Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.697.0). </details> </details> <!-- ward-agent-signature --> — Codex, via `ward agent`
Author
Member

WARDED_WORKFLOW: #1293

details

workflow: pull-request-and-merge; review summary: review gate intentionally skipped by the temporary ward default pending brokered QA

Rebased the PR branch onto current main, resolved the merge/doc conflicts narrowly, and kept the reservation cache disposable.

Confidence: medium-high.
Surprises: the PR body still pointed at the old issue number.
Follow-up: director merge when ready.

WARDED_WORKFLOW: https://forgejo.coilysiren.me/coilyco-flight-deck/ward/pulls/1293 <details><summary>details</summary> workflow: pull-request-and-merge; review summary: review gate intentionally skipped by the temporary ward default pending brokered QA Rebased the PR branch onto current `main`, resolved the merge/doc conflicts narrowly, and kept the reservation cache disposable. Confidence: medium-high. Surprises: the PR body still pointed at the old issue number. Follow-up: director merge when ready. <!-- ward-agent-signature --> </details>
Sign in to join this conversation.
No description provided.