Submatter/.convoys/worker-closeout-docwriter/brief-1-draft-pr-forge.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.2 KiB

brief convoy role title status priority slice_dependencies recommended_model model_tier
1 worker-closeout-docwriter role-implementer Worker draft PR via forge adapter (code + doc) ready P0
qwen-coder local

Brief 1 — Draft PR Task-worker-draft-pr.md

Goal

apps/worker after successful role-implementer session pushes worktree branch if needed, calls createPullRequest(draft:true) on GitHub/Forgejo (from connected_repos / repo_links), persists prUrl/prNumber to convoy_events metadata + objects.content.prUrl, marker echodo-convoy: <convoyId> in body for Epic 8 webhook.

Files

  • apps/worker/src/git/pr.ts NEW — openDraftPR({monorepoRoot, worktreePath, branch, convoySlug, briefId, convoyId, workspaceId, forge}) → push git push origin HEAD (uses stored credentials / GITHUB_TOKEN env pattern) → forge.createPullRequest({base: main, head: branch, title, body, draft:true}). Body includes Convoy: ${slug} Brief: ${briefId} echodo-convoy: ${convoyId}.
  • apps/worker/src/handle-job.ts:40 — after session.run success and before teardown, if roleId==='role-implementer' and worktreePath present, call openDraftPR; on doc harness needsWorktree:false skip push but still log published artifact.
  • packages/database/src/schema/convoy_events.ts — already has metadata jsonb, store prUrl.
  • apps/web/server/lib/convoy/convoy-service.ts — expose prUrl from latest metadata.prUrl.
  • apps/web/components/mission-control/convoy-detail-panel.tsx — show PR link when metadata.prUrl.

Acceptance

  • Implementer job on test repo stwl-labs/ubiquitous-invention (or any connected) produces draft PR URL; non-implementer role-architect job skips PR creation.
  • PR body contains marker consumable by Epic 8.
  • Detail panel shows link when present.
  • pnpm lint && pnpm type-check && pnpm --filter @tasks/worker test pass.

Prompt

You are role-implementer brief 1. Read plans/Plan-automation-foundation/Epic-apps-worker-v1/Task-worker-draft-pr.md, apps/web/server/lib/forge/adapters.ts, apps/worker/src/git/worktree.ts, docs/decisions/2026-08-25-second-brain-os-pivot.md. Keep change small, follow existing adapters.ts interface.

Depends

None.