- Forge webhook POST /api/webhooks/forge HMAC sha256 verify, marker echodo-convoy → pr_review→merged as automation - Completion artifacts table 0017, deterministic summary template, gallery /artifacts - Ops copilot tRPC copilot + context tools (fleet, convoy, backlog) + panel + Draft Task → backlog.createTask - Doc-writer SOPs: webhook rotation, copilot prompt, published flow examples - Allow pr_review→merged as automation for webhook Convoy: .convoys/owner-cockpit-v02 Co-authored-by: orchestrator
52 lines
3.2 KiB
Markdown
52 lines
3.2 KiB
Markdown
# 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.
|
|
8. (Epic 8 — forge webhook) Merge PR triggers `POST /api/webhooks/forge` with `X-Hub-Signature-256`/`X-Forgejo-Signature` HMAC `FORGE_WEBHOOK_SECRET` → convoy `pr_review→merged` (`automation`, `convoy_events` `status_change`) and Mission Control shows `merged` within 5s; invalid signature returns 401, missing marker returns 200 no-op.
|
|
|
|
## 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
|
|
|
|
## Docs
|
|
|
|
- Webhook rotation: [`docs/operations/webhook-secret-rotation.md`](./webhook-secret-rotation.md)
|
|
- Copilot prompts (gate + ops): [`docs/copilot-prompt.md`](../copilot-prompt.md)
|
|
- SOP published flow: [`docs/examples/sop-published-flow.md`](../examples/sop-published-flow.md)
|
|
|
|
## Links
|
|
|
|
- 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.
|