Skip to content

feat(q1-27): orchestration telemetry — runs table + ingest + admin read endpoint#94

Merged
masonwyatt23 merged 1 commit into
mainfrom
feat/q1-27-orchestrate-telemetry
May 23, 2026
Merged

feat(q1-27): orchestration telemetry — runs table + ingest + admin read endpoint#94
masonwyatt23 merged 1 commit into
mainfrom
feat/q1-27-orchestrate-telemetry

Conversation

@masonwyatt23
Copy link
Copy Markdown
Member

Captures orchestration runs end-to-end. New table + ingest + admin read endpoint + plugin emit hook. Dashboard panel deferred to a follow-up — the read endpoint is shipped + ready to consume.

What ships

  • Migration: orchestration_runs table (11 columns, 2 indexes)
  • POST /v1/orchestration-runs — unauth ingest, matches /v1/events pattern
  • GET /admin/orchestration-runs — bearer-auth read with summary aggregation
  • Plugin emit hook in scripts/orchestrate-run.ts, gated on telemetry consent, fire-and-forget

Tests

  • 30 new tests (6 plugin emit + 24 server ingest/read), all green

Follow-up

  • Dashboard <OrchestrationActivitySection> panel in site/app/admin/wad-d/page.tsx
  • mode='real-llm' value once Track B v2's wiring lands

🤖 Generated with Claude Code

…ad endpoint

Captures Q1 2027 orchestration runs end-to-end so the founder dashboard
can show real activity once /ashlr-orchestrate users start arriving.

Server-side:
- Migration: orchestration_runs table with identity_hash, github_hash,
  graph_id, goal, tier, mode, started_at, finished_at, duration_ms,
  node_count, fail_count, ok, total_tokens_{in,out}, received_at.
  Indexes on (received_at DESC) and (identity_hash, started_at DESC).
- POST /v1/orchestration-runs — unauthenticated ingest matching the
  /v1/events + /v1/session-events precedent. zod-validated. 202 on
  success, 400 on bad payload, never logs raw identity_hash.
- GET /admin/orchestration-runs?days=N&limit=M — bearer-auth via
  ASHLR_ADMIN_TRIGGER_TOKEN (constant-time compare). Returns recent
  runs + summary aggregation (total, ok_count, success_rate, token
  totals, mode breakdown, tier breakdown). 503 when env unset.
- Both routes mounted before the user-token-gated /admin/* middleware.

Plugin-side:
- scripts/orchestrate-emit-telemetry.ts: emitOrchestrationRunTelemetry()
  builds the payload from a RunResult + TaskGraph, gates on
  isTelemetryEnabled(), fire-and-forget POST with 5s timeout, swallows
  network errors so the runner never blocks on telemetry.
- scripts/orchestrate-run.ts: calls the emit at the end of runTaskGraph,
  best-effort. mode='stub' for the MVP runner; the wk 4-6 real-LLM
  wiring will pass mode='real-llm' once it lands.

Tests: 6 plugin (emit) + 24 server (ingest + admin read) = 30 new
tests. All green.

Dashboard panel deferred: a small <OrchestrationActivitySection> in
site/app/admin/wad-d/page.tsx is the natural follow-up; the read
endpoint is shipped + ready to consume.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 23, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ashlr-plugin-site Ready Ready Preview, Comment May 23, 2026 5:22am

Request Review

@masonwyatt23 masonwyatt23 merged commit c8ed9be into main May 23, 2026
7 of 14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant