Carry cross-forge three-party attribution through the Ward bundle #616

Closed
opened 2026-07-22 08:12:18 +00:00 by coilyco-ops · 1 comment
Owner

Problem

AOS owns the coilyco Ward deployment bundle. Its current .ward/agents.kdl attribution sets coilyco-ops <coilyco-ops@coilysiren.me>. Ward projects that single identity into system user.name and user.email, so ordinary ward agent commits make the bot both author and committer. Kai is absent, and the active harness appears only when Ward creates a residual-work reaper commit. The Forgejo-specific email also does not provide the GitHub App identity needed for linked attribution on both forges.

Infrastructure #576 established the desired native result: the cross-forge bot is primary author, Kai is committer and a coauthor, and Codex or Claude is the other coauthor. The AOS-provided Ward path must converge on the same contract.

Ownership split

  • AOS owns the coilyco deployment values, schema usage, documentation, and release-bundle publication.
  • Ward owns generic runtime enforcement of Git author, committer, and trailer behavior. File and link a paired Ward issue for any missing product support instead of implementing Ward logic here.
  • Infrastructure owns fleet rollout and local secret resolution.

Required behavior

  • Every ordinary agent-issued commit launched through the AOS Ward bundle uses the cross-forge Coilyco bot as primary author.
  • Kai remains the Git committer and receives a Co-authored-by trailer derived from the effective repository Git identity.
  • The active harness receives its own Co-authored-by trailer. Cover Claude, Codex, and Goose without inventing a GitHub user for a harness that has none.
  • Human commits and non-commit Git operations remain unchanged.
  • Ward residual-work commits follow the same ordering instead of using a separate attribution policy.
  • Incomplete attribution fails closed. An agent commit must not silently omit the bot, Kai, or harness identity.

Cross-forge constraint

The GitHub App noreply address contains an opaque numeric identifier and must not be tracked in this public repository. AOS should declare a logical identity or secret reference. The host-side launch path should resolve the existing SSM-backed identity before the container starts. The shipped tool must not fetch deployment secrets downward, and the container must not gain AWS credentials for this feature.

Acceptance

  • The AOS Ward bundle expresses the cross-forge attribution contract without embedding an opaque identifier.
  • Ward receives the resolved bot identity plus Kai and harness context through an explicit, documented interface.
  • Focused tests prove author, committer, and both trailers for ordinary and residual commits.
  • A real verification commit resolves to coilyco-ops on Forgejo and the GitHub App bot on GitHub while showing Kai and the active harness in the commit metadata.
  • docs/ward-specs.md and the feature inventory describe the resulting boundary.
  • Existing history is not rewritten.

References

## Problem AOS owns the coilyco Ward deployment bundle. Its current `.ward/agents.kdl` attribution sets `coilyco-ops <coilyco-ops@coilysiren.me>`. Ward projects that single identity into system `user.name` and `user.email`, so ordinary `ward agent` commits make the bot both author and committer. Kai is absent, and the active harness appears only when Ward creates a residual-work reaper commit. The Forgejo-specific email also does not provide the GitHub App identity needed for linked attribution on both forges. Infrastructure #576 established the desired native result: the cross-forge bot is primary author, Kai is committer and a coauthor, and Codex or Claude is the other coauthor. The AOS-provided Ward path must converge on the same contract. ## Ownership split * AOS owns the coilyco deployment values, schema usage, documentation, and release-bundle publication. * Ward owns generic runtime enforcement of Git author, committer, and trailer behavior. File and link a paired Ward issue for any missing product support instead of implementing Ward logic here. * Infrastructure owns fleet rollout and local secret resolution. ## Required behavior * Every ordinary agent-issued commit launched through the AOS Ward bundle uses the cross-forge Coilyco bot as primary author. * Kai remains the Git committer and receives a `Co-authored-by` trailer derived from the effective repository Git identity. * The active harness receives its own `Co-authored-by` trailer. Cover Claude, Codex, and Goose without inventing a GitHub user for a harness that has none. * Human commits and non-commit Git operations remain unchanged. * Ward residual-work commits follow the same ordering instead of using a separate attribution policy. * Incomplete attribution fails closed. An agent commit must not silently omit the bot, Kai, or harness identity. ## Cross-forge constraint The GitHub App noreply address contains an opaque numeric identifier and must not be tracked in this public repository. AOS should declare a logical identity or secret reference. The host-side launch path should resolve the existing SSM-backed identity before the container starts. The shipped tool must not fetch deployment secrets downward, and the container must not gain AWS credentials for this feature. ## Acceptance * The AOS Ward bundle expresses the cross-forge attribution contract without embedding an opaque identifier. * Ward receives the resolved bot identity plus Kai and harness context through an explicit, documented interface. * Focused tests prove author, committer, and both trailers for ordinary and residual commits. * A real verification commit resolves to `coilyco-ops` on Forgejo and the GitHub App bot on GitHub while showing Kai and the active harness in the commit metadata. * `docs/ward-specs.md` and the feature inventory describe the resulting boundary. * Existing history is not rewritten. ## References * coilyco-flight-deck/infrastructure#576 * `.ward/agents.kdl` * `docs/ward-specs.md` * Ward `docs/agent-attribution.md`
Author
Owner

WARD-WORKFLOW: reservation-released

release details

Run never started. ward container reap released container agentic-os (--harness codex): it exited at the codex-probe pre-launch gate without launching the agent (ward#222/#264/#595/#609), so it did no work and the launch intent it took is retracted. Nothing is running on this issue. It needs re-dispatch. A ward agent director re-queues it automatically. A manual ward agent retry no longer needs --override-reservation.

Gate: codex launch probe

Recovery: Inspect the codex config/auth path in the container log, correct it, then re-dispatch.

Error from the gate

codex launch probe failed (exit -1): 2026-07-28T07:32:42.333087Z ERROR codex_models_manager::manager: failed to refresh available models: timeout waiting for child process to exit 2026-07-28T07:32:42.356075Z ERROR codex_models_manager::manager: failed to refresh available models: timeout waiting for child process to exit OpenAI Codex v0.144.1 -------- workdir: /workspace model: gpt-5.5 provider: openai approval: never sandbox: danger-full-access reasoning effort: none reasoning summaries: none session id: 019fa7a3-def4-7193-ab6c-76f5d4035af2 -------- user Reply with exactly ok.

— Codex, via ward agent

<!-- ward-agent-reservation-released --> <!-- ward-needs-redispatch --> WARD-WORKFLOW: reservation-released <details><summary>release details</summary> Run never started. `ward container reap` released container `agentic-os` (`--harness codex`): it exited at the **codex-probe** pre-launch gate without launching the agent (ward#222/#264/#595/#609), so it did no work and the launch intent it took is retracted. Nothing is running on this issue. It needs re-dispatch. A `ward agent director` re-queues it automatically. A manual `ward agent` retry no longer needs `--override-reservation`. **Gate:** codex launch probe **Recovery:** Inspect the codex config/auth path in the container log, correct it, then re-dispatch. ## Error from the gate ``` codex launch probe failed (exit -1): 2026-07-28T07:32:42.333087Z ERROR codex_models_manager::manager: failed to refresh available models: timeout waiting for child process to exit 2026-07-28T07:32:42.356075Z ERROR codex_models_manager::manager: failed to refresh available models: timeout waiting for child process to exit OpenAI Codex v0.144.1 -------- workdir: /workspace model: gpt-5.5 provider: openai approval: never sandbox: danger-full-access reasoning effort: none reasoning summaries: none session id: 019fa7a3-def4-7193-ab6c-76f5d4035af2 -------- user Reply with exactly ok. ``` </details> <!-- ward-agent-signature --> — Codex, via `ward agent`
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#616
No description provided.