Make Ward director evaluation prove the #520 chain, not generic ward exec smoke tests #529

Closed
opened 2026-07-10 09:36:21 +00:00 by coilyco-ops · 3 comments
Member

Problem

The active infrastructure#524 Goose run was meant to reject simulated Ward director evaluation runs. Its current log shows it is drifting into generic infrastructure smoke tests instead of the #520 acceptance chain.

Observed in engineer-goose-infrastructure-524 on 2026-07-10 UTC:

  • It created or was drafting a WardDirectorEvaluationTest Python unittest.
  • The tests check generic ward exec help, cert-manager, aws-secrets, observability, ansible-sync, and k3s-list-dns availability.
  • The workflow test is a mock dictionary for make cert-manager.
  • None of that creates the evaluation issue in coilysiren/inbox, launches the disposable k3s Job, runs Goose bootstrap, runs a Goose director decision, dispatches a Goose engineer, verifies a commit, or proves issue closure.

Generic ward exec or cluster-command smoke tests do not satisfy infrastructure#520 and can produce false confidence while bypassing the actual first-run flow.

This issue exists because infrastructure#524 is reserved and will not re-read comments.

Do

  • Replace generic ward exec smoke tests with tests and scripts that are explicitly about the infrastructure#520 chain.
  • The launcher must create a real coilysiren/inbox evaluation issue with a unique ward-eval:<run-id> title.
  • The launcher must apply a real k3s Job and wait for the real Job status.
  • The Job must run the outer Goose bootstrap, install Ward cold, run the issue-scoped Goose director, and let Ward dispatch the Goose engineer.
  • The verifier must check the actual evidence listed in infrastructure#520: Goose director call, parsed dispatch decision, engineer container, Docker events, Ward audit, WARD-OUTCOME: done, issue closure, commit content, timestamp, attribution, no other issue touched, no Claude/Codex, and no token leakage.
  • Any mock-only, ward exec availability-only, or unrelated infrastructure command test must fail the evaluation rather than pass it.

Acceptance

  • Grepping the committed evaluation code shows the core subject is ward-eval, coilysiren/inbox, k3s Job creation, Goose bootstrap, director dispatch, and evidence verification, not generic cert-manager or ansible-sync command availability.
  • A missing cluster, missing kubectl, missing Goose director decision, or missing engineer commit produces a precise FAIL.
  • A PASS is possible only after a real #520-style run with evidence from the Job pod and Forgejo.
  • The implementation does not use mock dictionaries or generic smoke tests as proof of the first-run flow.
  • ward exec test or the repo-appropriate validation passes, or the issue comment names the exact failing check.

Related: coilyco-flight-deck/infrastructure#520 and coilyco-flight-deck/infrastructure#524.

## Problem The active infrastructure#524 Goose run was meant to reject simulated Ward director evaluation runs. Its current log shows it is drifting into generic infrastructure smoke tests instead of the #520 acceptance chain. Observed in `engineer-goose-infrastructure-524` on 2026-07-10 UTC: * It created or was drafting a `WardDirectorEvaluationTest` Python unittest. * The tests check generic `ward exec help`, `cert-manager`, `aws-secrets`, `observability`, `ansible-sync`, and `k3s-list-dns` availability. * The workflow test is a mock dictionary for `make cert-manager`. * None of that creates the evaluation issue in `coilysiren/inbox`, launches the disposable k3s Job, runs Goose bootstrap, runs a Goose director decision, dispatches a Goose engineer, verifies a commit, or proves issue closure. Generic `ward exec` or cluster-command smoke tests do not satisfy infrastructure#520 and can produce false confidence while bypassing the actual first-run flow. This issue exists because infrastructure#524 is reserved and will not re-read comments. ## Do * Replace generic `ward exec` smoke tests with tests and scripts that are explicitly about the infrastructure#520 chain. * The launcher must create a real `coilysiren/inbox` evaluation issue with a unique `ward-eval:<run-id>` title. * The launcher must apply a real k3s Job and wait for the real Job status. * The Job must run the outer Goose bootstrap, install Ward cold, run the issue-scoped Goose director, and let Ward dispatch the Goose engineer. * The verifier must check the actual evidence listed in infrastructure#520: Goose director call, parsed dispatch decision, engineer container, Docker events, Ward audit, `WARD-OUTCOME: done`, issue closure, commit content, timestamp, attribution, no other issue touched, no Claude/Codex, and no token leakage. * Any mock-only, `ward exec` availability-only, or unrelated infrastructure command test must fail the evaluation rather than pass it. ## Acceptance * Grepping the committed evaluation code shows the core subject is `ward-eval`, `coilysiren/inbox`, k3s Job creation, Goose bootstrap, director dispatch, and evidence verification, not generic `cert-manager` or `ansible-sync` command availability. * A missing cluster, missing `kubectl`, missing Goose director decision, or missing engineer commit produces a precise FAIL. * A PASS is possible only after a real #520-style run with evidence from the Job pod and Forgejo. * The implementation does not use mock dictionaries or generic smoke tests as proof of the first-run flow. * `ward exec test` or the repo-appropriate validation passes, or the issue comment names the exact failing check. Related: coilyco-flight-deck/infrastructure#520 and coilyco-flight-deck/infrastructure#524.
Author
Member

WARD-DISPATCH: deferred ⏸

deferred details

This forwarded dispatch was deferred after the issue was already reserved.

Attempted harness: codex
Attempted run: ward agent engineer coilyco-flight-deck/infrastructure#529 --harness codex --ward-version v0.573.0
Container: engineer-codex-infrastructure-529
Container created: no running engineer was observed.
Host log: /Users/kai/.ward/agent-logs/dispatch/20260710T093629Z-director-codex-vg55-coilyco-flight-deck-infrastructure-529.log
Capacity: ward agent engineer --harness codex: global engineer limit is reached: 12 running (limit 12); wait for a run to finish or run ward agent reap for stale engineers

Retry: the issue stays queued and the director will try again when a slot opens.

— Codex, via ward agent

<!-- ward-agent-reservation-released --> <!-- ward-needs-redispatch --> WARD-DISPATCH: deferred ⏸ <details><summary>deferred details</summary> This forwarded dispatch was deferred after the issue was already reserved. Attempted harness: `codex` Attempted run: `ward agent engineer coilyco-flight-deck/infrastructure#529 --harness codex --ward-version v0.573.0` Container: `engineer-codex-infrastructure-529` Container created: no running engineer was observed. Host log: `/Users/kai/.ward/agent-logs/dispatch/20260710T093629Z-director-codex-vg55-coilyco-flight-deck-infrastructure-529.log` Capacity: `ward agent engineer --harness codex: global engineer limit is reached: 12 running (limit 12); wait for a run to finish or run `ward agent reap` for stale engineers` Retry: the issue stays queued and the director will try again when a slot opens. </details> <!-- ward-agent-signature --> — Codex, via `ward agent`
Author
Member

WARD-RESERVATION: held 🔒

reservation details

Holder: container engineer-codex-infrastructure-529 on host kais-macbook-pro-2.local.

Reserved by ward agent --harness codex (reserved 2026-07-10T09:44:03Z). 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/infrastructure#529 · branch issue-529 · harness codex · workflow direct-main
  • Run: engineer-codex-infrastructure-529 · ward v0.573.0 · dispatched 2026-07-10T09:44:03Z
  • Comment thread: 1 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.573.0).

— Codex, via ward agent

<!-- ward-agent-reservation --> WARD-RESERVATION: held 🔒 <details><summary>reservation details</summary> Holder: container `engineer-codex-infrastructure-529` on host `kais-macbook-pro-2.local`. Reserved by `ward agent --harness codex` (reserved 2026-07-10T09:44:03Z). 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/infrastructure#529` · branch `issue-529` · harness `codex` · workflow `direct-main` - **Run:** `engineer-codex-infrastructure-529` · ward `v0.573.0` · dispatched `2026-07-10T09:44:03Z` - **Comment thread:** 1 included in the pre-flight read, 0 stripped (ward's own automated comments). - included: @coilyco-ops (2026-07-10T09:36:31Z) Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.573.0). </details> </details> <!-- ward-agent-signature --> — Codex, via `ward agent`
Author
Member

WARD-OUTCOME: done

details

workflow: direct-main; review summary: review gate skipped by ~/.ward/config.yaml default
retrospective: The implementation settled after the salvage branch showed the right harness shape. The only real surprise was making the repo tests and ward path happy on this container.
confidence: high
surprises: ward required a clean tree plus an upstream, and uv needed a writable cache for local hook runs.
follow-ups: none.

WARD-OUTCOME: done <details><summary>details</summary> workflow: direct-main; review summary: review gate skipped by ~/.ward/config.yaml default retrospective: The implementation settled after the salvage branch showed the right harness shape. The only real surprise was making the repo tests and ward path happy on this container. confidence: high surprises: ward required a clean tree plus an upstream, and uv needed a writable cache for local hook runs. follow-ups: none. </details>
Sign in to join this conversation.
No description provided.