Stop requiring manual WARD_CONFIG_REF overrides for warded surfaces #422

Closed
opened 2026-07-10 09:35:11 +00:00 by coilyco-ops · 5 comments
Member

Problem

Director surface sessions currently need a manual prefix like:

WARD_CONFIG_REF="forgejo.coilysiren.me/coilyco-flight-deck/agentic-os@$(git rev-parse HEAD)//.ward" warded ...

Without that prefix, warded can use a stale or missing config ref, so normal surface commands such as warded list --json, warded director merge --dry-run, and warded engineer coilyco-flight-deck/<repo>#N are unreliable. This is easy to forget and keeps leaking into director runbooks.

The intended contract is already documented in docs/ward-specs.md: ward selects the coilyco bundle at launch through WARD_CONFIG_REF, and aos is the source of truth for the .ward/ bundle.

Scope

  • Find where read-only director/surface sessions lose or stale WARD_CONFIG_REF.
  • Make the surface session and child warded invocations inherit the current commit-addressed aos .ward bundle automatically.
  • Preserve the existing dev-base behavior that bakes WARD_CONFIG_REF from WARD_CONFIG_REF_COMMIT.
  • Keep shell/common.sh behavior coherent for host shells.

Acceptance criteria

  • In a read-only director surface, WARD_CONFIG_REF points at the current aos commit without a manual prefix.
  • warded list --json works from the surface without setting WARD_CONFIG_REF inline.
  • warded engineer coilyco-flight-deck/<repo>#N --harness codex --details ... uses the intended config without setting WARD_CONFIG_REF inline.
  • Tests or documented smoke coverage prove the environment propagation path.
  • Docs/runbooks stop teaching the manual override except as an emergency diagnostic.
## Problem Director surface sessions currently need a manual prefix like: ```bash WARD_CONFIG_REF="forgejo.coilysiren.me/coilyco-flight-deck/agentic-os@$(git rev-parse HEAD)//.ward" warded ... ``` Without that prefix, `warded` can use a stale or missing config ref, so normal surface commands such as `warded list --json`, `warded director merge --dry-run`, and `warded engineer coilyco-flight-deck/<repo>#N` are unreliable. This is easy to forget and keeps leaking into director runbooks. The intended contract is already documented in `docs/ward-specs.md`: ward selects the coilyco bundle at launch through `WARD_CONFIG_REF`, and aos is the source of truth for the `.ward/` bundle. ## Scope * Find where read-only director/surface sessions lose or stale `WARD_CONFIG_REF`. * Make the surface session and child `warded` invocations inherit the current commit-addressed aos `.ward` bundle automatically. * Preserve the existing dev-base behavior that bakes `WARD_CONFIG_REF` from `WARD_CONFIG_REF_COMMIT`. * Keep `shell/common.sh` behavior coherent for host shells. ## Acceptance criteria * In a read-only director surface, `WARD_CONFIG_REF` points at the current aos commit without a manual prefix. * `warded list --json` works from the surface without setting `WARD_CONFIG_REF` inline. * `warded engineer coilyco-flight-deck/<repo>#N --harness codex --details ...` uses the intended config without setting `WARD_CONFIG_REF` inline. * Tests or documented smoke coverage prove the environment propagation path. * Docs/runbooks stop teaching the manual override except as an emergency diagnostic.
Author
Member

WARD-RESERVATION: held 🔒

reservation details

Holder: container engineer-codex-agentic-os-422 on host kais-macbook-pro-2.local.

Reserved by ward agent --harness codex (reserved 2026-07-10T09:35:23Z). 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/agentic-os#422 · branch issue-422 · harness codex · workflow pull-requests-and-merge
  • Run: engineer-codex-agentic-os-422 · ward v0.569.0 · dispatched 2026-07-10T09:35:23Z
  • 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.569.0).

— Codex, via ward agent

<!-- ward-agent-reservation --> WARD-RESERVATION: held 🔒 <details><summary>reservation details</summary> Holder: container `engineer-codex-agentic-os-422` on host `kais-macbook-pro-2.local`. Reserved by `ward agent --harness codex` (reserved 2026-07-10T09:35:23Z). 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/agentic-os#422` · branch `issue-422` · harness `codex` · workflow `pull-requests-and-merge` - **Run:** `engineer-codex-agentic-os-422` · ward `v0.569.0` · dispatched `2026-07-10T09:35:23Z` - **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.569.0). </details> </details> <!-- ward-agent-signature --> — Codex, via `ward agent`
Author
Member

WARD-OUTCOME: merge-ready

details

workflow: pull-requests-and-merge; review summary: review gate skipped by ~/.ward/config.yaml default

review summary: review gate skipped by ~/.ward/config.yaml default
felt: tight and mechanical, with one doc split needed after the bootstrap change.
confidence: high.
surprise: the shell feature doc hit its size cap once the propagation note landed.
follow-ups: director can merge PR #426, then close #422.

WARD-OUTCOME: merge-ready <details><summary>details</summary> workflow: pull-requests-and-merge; review summary: review gate skipped by ~/.ward/config.yaml default review summary: review gate skipped by ~/.ward/config.yaml default felt: tight and mechanical, with one doc split needed after the bootstrap change. confidence: high. surprise: the shell feature doc hit its size cap once the propagation note landed. follow-ups: director can merge PR #426, then close #422. </details>
Author
Member

2026-07-10 follow-up: PR #430 merged at 10:14:53 UTC. This issue stays open for now because the current read-only director surface still fails warded list --json without an inline WARD_CONFIG_REF, reporting the baked neutral default. That may be expected for this already-running surface, but closure needs a fresh-surface smoke proving the merged propagation path.

2026-07-10 follow-up: PR #430 merged at 10:14:53 UTC. This issue stays open for now because the current read-only director surface still fails `warded list --json` without an inline `WARD_CONFIG_REF`, reporting the baked neutral default. That may be expected for this already-running surface, but closure needs a fresh-surface smoke proving the merged propagation path.
Author
Member

WARD-RESERVATION: held 🔒

reservation details

Holder: container engineer-codex-agentic-os-422 on host kais-macbook-pro-2.local.

Reserved by ward agent --harness codex (reserved 2026-07-10T10:55:45Z). 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/agentic-os#422 · branch issue-422 · harness codex · workflow pull-requests-and-merge
  • Run: engineer-codex-agentic-os-422 · ward v0.580.0 · dispatched 2026-07-10T10:55:45Z
  • Comment thread: 2 included in the pre-flight read, 1 stripped (ward's own automated comments).

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

— Codex, via ward agent

<!-- ward-agent-reservation --> WARD-RESERVATION: held 🔒 <details><summary>reservation details</summary> Holder: container `engineer-codex-agentic-os-422` on host `kais-macbook-pro-2.local`. Reserved by `ward agent --harness codex` (reserved 2026-07-10T10:55:45Z). 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/agentic-os#422` · branch `issue-422` · harness `codex` · workflow `pull-requests-and-merge` - **Run:** `engineer-codex-agentic-os-422` · ward `v0.580.0` · dispatched `2026-07-10T10:55:45Z` - **Comment thread:** 2 included in the pre-flight read, 1 stripped (ward's own automated comments). - included: @coilyco-ops (2026-07-10T09:47:06Z), @coilyco-ops (2026-07-10T10:17:14Z) - stripped: @coilyco-ops (2026-07-10T09:35:24Z) Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.580.0). </details> </details> <!-- ward-agent-signature --> — Codex, via `ward agent`
Author
Member

WARD-OUTCOME: merge-ready

details

workflow: pull-requests-and-merge; review summary: review gate skipped by ~/.ward/config.yaml default
felt: mechanical.
confidence: high.
surprise: bare sourced shells now set the current commit-addressed WARD_CONFIG_REF automatically.
evidence: \ exported ; \ resolved the issue ref without an inline override; \ passed.
follow-ups: none.

WARD-OUTCOME: merge-ready <details><summary>details</summary> workflow: pull-requests-and-merge; review summary: review gate skipped by ~/.ward/config.yaml default felt: mechanical. confidence: high. surprise: bare sourced shells now set the current commit-addressed WARD_CONFIG_REF automatically. evidence: \ exported \; \ resolved the issue ref without an inline override; \ passed. follow-ups: none. </details> <!-- ward-agent-signature -->
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/agentic-os#422
No description provided.