- 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
2.2 KiB
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.tsNEW —openDraftPR({monorepoRoot, worktreePath, branch, convoySlug, briefId, convoyId, workspaceId, forge})→ pushgit push origin HEAD(uses stored credentials /GITHUB_TOKENenv pattern) →forge.createPullRequest({base: main, head: branch, title, body, draft:true}). Body includesConvoy: ${slug} Brief: ${briefId} echodo-convoy: ${convoyId}.apps/worker/src/handle-job.ts:40— aftersession.runsuccess and before teardown, ifroleId==='role-implementer'andworktreePathpresent, callopenDraftPR; on doc harnessneedsWorktree:falseskip push but still logpublishedartifact.packages/database/src/schema/convoy_events.ts— already hasmetadata jsonb, storeprUrl.apps/web/server/lib/convoy/convoy-service.ts— exposeprUrlfrom latestmetadata.prUrl.apps/web/components/mission-control/convoy-detail-panel.tsx— showPRlink whenmetadata.prUrl.
Acceptance
- Implementer job on test repo
stwl-labs/ubiquitous-invention(or any connected) produces draft PR URL; non-implementerrole-architectjob 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 testpass.
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.