Submatter/docs/operations/live-e2e-checklist.md
Randall Stillwell 86155455a7 feat(worker): close Epic 7 — draft PR + operator notes + doc-writer
- Draft PR via forge (apps/worker/src/git/pr.ts) push branch + createPullRequest draft with echodo-convoy marker, expose prUrl in Mission Control (convoy-service, convoys router, detail panel)
- Operator notes mid-build: convoy_operator_messages (0016), tRPC post/list, worker poll between tool rounds (queued) and before generateText (direct), detail panel thread for in_progress
- Doc-writer: harness doc-writer examples (docs/examples/research-pipeline.md), SOP template (docs/templates/doc-sop.md), role-doc-writer wiring

Convoy: .convoys/worker-closeout-docwriter

Co-authored-by: orchestrator
2026-08-25 16:56:02 -05:00

2.6 KiB

Live E2E Dogfood Checklist — Task-worker-live-e2e-dogfood.md (A1 verify)

This is the operator checklist for plans/Plan-automation-foundation/Epic-apps-worker-v1/Task-worker-live-e2e-dogfood.md. Mark the Task done only when every box below is true on your deploy (Coolify or local Redis).

Env (document names only, no secrets)

  • ORCHESTRATOR_DRY_RUN=0 on orchestrator service
  • WORKER_DRY_RUN=0 on worker service
  • REDIS_URL set on both (same echodo:orchestrator:jobs queue)
  • DATABASE_URL echodo on both + web (migrations 0015+ applied)
  • Workspace has model_providers alias + role_model_routes role-implementer → qwen-coder and harness_providers alias: minimal (or doc-writer for doc)

Steps

  1. Connected repo reachable from worker: apps/worker can git clone/git push the repo_links URL (or monorepo root when WORKER_REPO_ROOT unset).
  2. Create or reconcile convoy with implementer brief: either Plans → Start → Convoy on a ready Task or create_convoy + create_brief via MCP reconcile_from_files.
  3. Advance to ready (Gate 1 human-gate-1 approve if convoy_review).
  4. Worker logs show dequeuing job → claimed backlog=... run=... → tools=... → complete_task → role_complete convoy_events.metadata.harnessAlias present.
  5. Settings → Runs (/[workspaceSlug]/settings/runs) shows row with model_alias + tokensTotal for that runId.
  6. Mission Control detail apps/web/app/(app)/[workspaceSlug]/mission-control/page.tsx:12 shows role_complete event within 5s (SSE /api/fleet/events or poll fallback).
  7. (Preferred, after Task-worker-draft-pr) Draft PR exists with marker echodo-convoy: <convoyId> consumable by Epic 8 webhook; for doc tasks doc_review → published without PR but published visible.

Record

  • Convoy slug:
  • Run id (agent_runs.id):
  • harnessAlias / modelAlias:
  • PR url (if code):

Dry-run fallback still works

  • With DATABASE_URL missing or REDIS_URL unset, pnpm --filter @tasks/worker dev logs DRY-RUN mode — dequeue loop idle and exits 0; ORCHESTRATOR_DRY_RUN=1 logs dispatch without enqueue.

Not this task

  • Forge webhooks (Epic 8) — verified separately
  • New worker features — use sibling tasks
  • Task: plans/Plan-automation-foundation/Epic-apps-worker-v1/Task-worker-live-e2e-dogfood.md
  • Convoy: .convoys/worker-closeout-docwriter.md
  • Worker closeout context: .convoys/worker-closeout-docwriter/brief-1-draft-pr-forge.md

Fill convoy slug + run id above, then flip Task status ready → done and exportBacklogItemToMarkdown will persist it.