Ingest ward reap skill-use telemetry for dashboard graphs #39

Closed
opened 2026-07-09 22:04:40 +00:00 by coilyco-ops · 2 comments
Member

Follow-up from the ChatGPT dashboard skill-use graph observation.

Goal:

Agent-proxy should ingest skill-use telemetry produced by ward reaped agent runs and expose it for dashboard graphs.

Producer dependency:

  • coilyco-flight-deck/ward#873 should add a stable skill-use artifact to ward reaped run archives.
  • Agent-proxy should consume that artifact rather than scraping freeform console logs.

Proposed first slice:

  • Add an ingestion path for ward skill-use summaries from the agent log archive location or the configured collector input.
  • Normalize dimensions that match agent-proxy traces/logs: run id, request/correlation id when present, harness, repo, issue ref, workflow, ward version, skill name, count, first_seen, last_seen.
  • Export a dashboard-friendly metric or log/trace attribute set that can power a skill-use graph.
  • Avoid high-cardinality labels where the existing agent-proxy telemetry model would reject them; run ids belong in logs/traces, not Prometheus labels.
  • Add fixtures for the ward#873 artifact shape.

Acceptance:

  • Agent-proxy can ingest a ward skill-use artifact and expose aggregate skill-use counts by skill and harness.
  • The ingest path handles missing/empty skill-use artifacts without errors.
  • Run id/correlation data remains queryable without becoming a high-cardinality metric label.
  • Tests cover the fixture shape produced by ward#873.
Follow-up from the ChatGPT dashboard skill-use graph observation. Goal: Agent-proxy should ingest skill-use telemetry produced by ward reaped agent runs and expose it for dashboard graphs. Producer dependency: - coilyco-flight-deck/ward#873 should add a stable skill-use artifact to ward reaped run archives. - Agent-proxy should consume that artifact rather than scraping freeform console logs. Proposed first slice: - Add an ingestion path for ward skill-use summaries from the agent log archive location or the configured collector input. - Normalize dimensions that match agent-proxy traces/logs: run id, request/correlation id when present, harness, repo, issue ref, workflow, ward version, skill name, count, first_seen, last_seen. - Export a dashboard-friendly metric or log/trace attribute set that can power a skill-use graph. - Avoid high-cardinality labels where the existing agent-proxy telemetry model would reject them; run ids belong in logs/traces, not Prometheus labels. - Add fixtures for the ward#873 artifact shape. Acceptance: - Agent-proxy can ingest a ward skill-use artifact and expose aggregate skill-use counts by skill and harness. - The ingest path handles missing/empty skill-use artifacts without errors. - Run id/correlation data remains queryable without becoming a high-cardinality metric label. - Tests cover the fixture shape produced by ward#873.
Author
Member

WARD-RESERVATION: held 🔒

reservation details

Holder: container engineer-codex-agent-proxy-39 on host kais-macbook-pro-2.local.

Reserved by ward agent --harness codex (reserved 2026-07-09T22:05:19Z). 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/agent-proxy#39 · branch issue-39 · harness codex · workflow direct-to-main
  • Run: engineer-codex-agent-proxy-39 · ward v0.522.0 · dispatched 2026-07-09T22:05:19Z
  • 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.522.0).

— Codex, via ward agent

<!-- ward-agent-reservation --> WARD-RESERVATION: held 🔒 <details><summary>reservation details</summary> Holder: container `engineer-codex-agent-proxy-39` on host `kais-macbook-pro-2.local`. Reserved by `ward agent --harness codex` (reserved 2026-07-09T22:05:19Z). 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/agent-proxy#39` · branch `issue-39` · harness `codex` · workflow `direct-to-main` - **Run:** `engineer-codex-agent-proxy-39` · ward `v0.522.0` · dispatched `2026-07-09T22:05:19Z` - **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.522.0). </details> </details> <!-- ward-agent-signature --> — Codex, via `ward agent`
Author
Member

WARD-OUTCOME: done

details

workflow: direct-to-main; review summary: skipped because review gate skipped by ~/.ward/config.yaml default
retrospective: The ingest path stayed small and testable. The only surprise was the container disk pressure, which I worked around with a smaller install set and TMPDIR=/dev/shm for tests.
confidence: high
surprises: tmp_path wanted /scratch, but /scratch was full. I pointed pytest temp usage at /dev/shm.
follow-ups: None.

WARD-OUTCOME: done <details><summary>details</summary> workflow: direct-to-main; review summary: skipped because review gate skipped by ~/.ward/config.yaml default retrospective: The ingest path stayed small and testable. The only surprise was the container disk pressure, which I worked around with a smaller install set and TMPDIR=/dev/shm for tests. confidence: high surprises: tmp_path wanted /scratch, but /scratch was full. I pointed pytest temp usage at /dev/shm. follow-ups: None. </details>
Sign in to join this conversation.
No description provided.