Fix ward main golangci-lint blockers found by incident PRs #767

Closed
opened 2026-07-09 05:59:03 +00:00 by coilyco-ops · 2 comments
Member

Incident follow-up from 2026-07-09. Multiple PRs (#761, #765, #766) fail or hang in the test workflow at golangci-lint because the same six lint findings are present on current ward main-era code. The lint command itself completes quickly and prints the findings; any long-running job state after that is wrapper/runner fallout, not useful analysis.

Do this narrow code cleanup only:

  • In cmd/ward/agent_director_merge.go, handle the four fmt.Fprintf return values at lines around 76, 80, 88, and 91. Local style already uses _, _ = fmt.Fprintf(...) for best-effort output writes.
  • In cmd/ward/container_reap.go, make reapBoundaryReason handle workflowPullRequests alongside workflowPR.
  • In cmd/ward/container_reap_compute.go, remove or wire reasonWorkflowHold so it is not unused. Prefer the smallest behavior-preserving cleanup.

Validation:

  • HOME=/scratch/home ward exec lint must pass.
  • HOME=/scratch/home ward exec test must pass.

Do not broaden into workflow changes. This is the root lint unblocker for PRs #761, #765, and #766. Use --skip-review for this emergency repair run because the review gate is still part of the incident surface.

Incident follow-up from 2026-07-09. Multiple PRs (#761, #765, #766) fail or hang in the test workflow at `golangci-lint` because the same six lint findings are present on current ward main-era code. The lint command itself completes quickly and prints the findings; any long-running job state after that is wrapper/runner fallout, not useful analysis. Do this narrow code cleanup only: * In `cmd/ward/agent_director_merge.go`, handle the four `fmt.Fprintf` return values at lines around 76, 80, 88, and 91. Local style already uses `_, _ = fmt.Fprintf(...)` for best-effort output writes. * In `cmd/ward/container_reap.go`, make `reapBoundaryReason` handle `workflowPullRequests` alongside `workflowPR`. * In `cmd/ward/container_reap_compute.go`, remove or wire `reasonWorkflowHold` so it is not unused. Prefer the smallest behavior-preserving cleanup. Validation: * `HOME=/scratch/home ward exec lint` must pass. * `HOME=/scratch/home ward exec test` must pass. Do not broaden into workflow changes. This is the root lint unblocker for PRs #761, #765, and #766. Use `--skip-review` for this emergency repair run because the review gate is still part of the incident surface.
Author
Member

🔒 Reserved by ward agent --harness codex — container engineer-codex-ward-767 on host kais-macbook-pro-2.local is carrying this issue (reserved 2026-07-09T05:59:05Z). Concurrent ward agent runs are blocked until it finishes or the reservation goes stale (1h TTL); --force 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#767 · branch issue-767 · harness codex · workflow pr
  • Run: engineer-codex-ward-767 · ward v0.474.0 · dispatched 2026-07-09T05:59:05Z
  • Comment thread: 0 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.474.0).

— Codex, via ward agent

<!-- ward-agent-reservation --> 🔒 Reserved by `ward agent --harness codex` — container `engineer-codex-ward-767` on host `kais-macbook-pro-2.local` is carrying this issue (reserved 2026-07-09T05:59:05Z). Concurrent `ward agent` runs are blocked until it finishes or the reservation goes stale (1h TTL); `--force` 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#767` · branch `issue-767` · harness `codex` · workflow `pr` - **Run:** `engineer-codex-ward-767` · ward `v0.474.0` · dispatched `2026-07-09T05:59:05Z` - **Comment thread:** 0 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.474.0). </details> <!-- ward-agent-signature --> — Codex, via `ward agent`
Author
Member

WARD-OUTCOME: done - fixed the lint blockers in agent_director_merge, container_reap boundary handling, and the dead reap reason.
workflow: pr; review summary: review gate skipped by --skip-review / --no-review-gate.
The change stayed narrow and the repo gates were straightforward once the ignored write results were cleaned up. The only surprise was that the issue scope matched the exact lint output one-for-one, so there was no need to widen into workflow behavior. Confidence is high; the only rough edge is that the PR workflow still depends on the review-gate skip being handled consistently by the surrounding runner.

WARD-OUTCOME: done - fixed the lint blockers in agent_director_merge, container_reap boundary handling, and the dead reap reason. workflow: pr; review summary: review gate skipped by --skip-review / --no-review-gate. The change stayed narrow and the repo gates were straightforward once the ignored write results were cleaned up. The only surprise was that the issue scope matched the exact lint output one-for-one, so there was no need to widen into workflow behavior. Confidence is high; the only rough edge is that the PR workflow still depends on the review-gate skip being handled consistently by the surrounding runner.
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#767
No description provided.