feat(o11y): re-home tool-failure producers into ward's embedded agent fleet #871

Closed
opened 2026-07-09 21:37:28 +00:00 by coilyco-ops · 1 comment
Member

Follow-up from coilyco-flight-deck/agentic-os#326.

Why this belongs in ward

The old tool-failure producers were removed from agentic-os on 2026-06-26 by commit 03d1525 as part of retiring the old execed-agent surfaces. Reintroducing them there would recreate a surface that repo intentionally deleted.

ward is now the natural owner of live producer logic because it owns:

  • the embedded agent fleet
  • Claude/Codex/Goose launch surfaces
  • host-side agent-run observability and transcript draining
  • existing GlitchTip/Sentry DSN plumbing for ward itself

Goal

Restore production of schema-v1 tool-failure records so the already-landed shared shipper can emit grouped GlitchTip events again.

  1. Implement the first producer for Claude runs in ward.
  2. Use the existing schema-v1 contract expected by agentic-os's shipper:
    • one JSON object per line
    • buffer path ~/.cache/agentic-os/tool-failures/<repo>.jsonl
    • load-bearing fields include fingerprint, failure_class, harness, repo, optional expected
  3. Prefer a transcript-based capture path for Claude failures, because the deleted agentic-os transcript-drain docs established that hooks do not reliably observe all tool failures while transcript JSONL does.
  4. Scrub failure detail before writing it locally. stderr_excerpt-style fields are useful, but this producer now lives inside ward's observability boundary and should follow the same safety bar.
  5. Leave Goose as a follow-up unless a clean modern seam appears during implementation.

Non-goals

  • Do not move the shipper in the same first step unless a concrete blocker appears.
  • Do not revive old agentic-os exec/triage surfaces just to get the old producer code back.

Dependencies

This issue is the upstream dependency for the downstream agentic-os cleanup/docs issue. Once ward settles the producer shape, agentic-os can update its docs and decide whether the shipper stays put long-term or later migrates.

Done looks like

  • A modern ward path writes schema-v1 tool-failure records again.
  • At least one real harness path, ideally Claude, can produce records without reviving retired agentic-os runtime code.
  • The result is compatible with ward exec ship-tool-failures as it exists today in agentic-os.

Filed by ward agent advisor cross-repo fan-out from coilyco-flight-deck/agentic-os#326 (part 1 of 2, ward#424).

— Codex, via ward agent

Follow-up from `coilyco-flight-deck/agentic-os#326`. ## Why this belongs in `ward` The old tool-failure producers were removed from `agentic-os` on **2026-06-26** by commit `03d1525` as part of retiring the old execed-agent surfaces. Reintroducing them there would recreate a surface that repo intentionally deleted. `ward` is now the natural owner of live producer logic because it owns: - the embedded agent fleet - Claude/Codex/Goose launch surfaces - host-side agent-run observability and transcript draining - existing GlitchTip/Sentry DSN plumbing for `ward` itself ## Goal Restore production of schema-v1 tool-failure records so the already-landed shared shipper can emit grouped GlitchTip events again. ## Recommended scope 1. Implement the **first producer for Claude runs** in `ward`. 2. Use the existing schema-v1 contract expected by `agentic-os`'s shipper: - one JSON object per line - buffer path `~/.cache/agentic-os/tool-failures/<repo>.jsonl` - load-bearing fields include `fingerprint`, `failure_class`, `harness`, `repo`, optional `expected` 3. Prefer a **transcript-based capture path** for Claude failures, because the deleted `agentic-os` transcript-drain docs established that hooks do not reliably observe all tool failures while transcript JSONL does. 4. Scrub failure detail before writing it locally. `stderr_excerpt`-style fields are useful, but this producer now lives inside `ward`'s observability boundary and should follow the same safety bar. 5. Leave Goose as a follow-up unless a clean modern seam appears during implementation. ## Non-goals - Do not move the shipper in the same first step unless a concrete blocker appears. - Do not revive old `agentic-os` exec/triage surfaces just to get the old producer code back. ## Dependencies This issue is the **upstream dependency** for the downstream `agentic-os` cleanup/docs issue. Once `ward` settles the producer shape, `agentic-os` can update its docs and decide whether the shipper stays put long-term or later migrates. ## Done looks like - A modern `ward` path writes schema-v1 tool-failure records again. - At least one real harness path, ideally Claude, can produce records without reviving retired `agentic-os` runtime code. - The result is compatible with `ward exec ship-tool-failures` as it exists today in `agentic-os`. --- Filed by `ward agent advisor` cross-repo fan-out from coilyco-flight-deck/agentic-os#326 (part 1 of 2, ward#424). <!-- ward-agent-signature --> — Codex, via `ward agent`
coilyco-ops added
P4
and removed
P3
labels 2026-07-14 06:50:24 +00:00
Author
Member

WARDED_WORKFLOW: reservation-held

reservation details

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

Accepted by ward agent --harness codex (reserved 2026-07-15T01:09:20Z). 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#871 · branch issue-871 · harness codex · workflow pull-request-and-merge
  • Run: engineer-codex-ward-871 · ward v0.693.0 · dispatched 2026-07-15T01:09:00Z
  • 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.693.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-871` on host `kais-macbook-pro-2.local`. Accepted by `ward agent --harness codex` (reserved 2026-07-15T01:09:20Z). 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#871` · branch `issue-871` · harness `codex` · workflow `pull-request-and-merge` - **Run:** `engineer-codex-ward-871` · ward `v0.693.0` · dispatched `2026-07-15T01:09:00Z` - **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.693.0). </details> </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/ward#871
No description provided.