- 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
3.4 KiB
| name | classification | success_metric | skip | status | created | model_policy | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| owner-cockpit-v02 | server-only | Fleet webhooks close PR loop (merged), completion gallery shows summaries+screenshots, ops copilot answers "what needs me?" with links — all from web without dumping plans/ |
|
open | 2026-08-25 |
|
Owner cockpit v02 — forge webhooks + artifacts + copilot (post-v0.1)
Why
v0.1 made second brain publishable (MCP create, harness-agnostic, Plans tree, Fleet). Worker closeout closed Epic 7 with doc_review→published + draft PR + operator notes + doc-writer. Remaining owner vision per plans/Plan-automation-foundation/Plan-automation-foundation.md:222 — "fleet → Plans → Start → Go → PR → gates → completion + copilot" — still misses PR loop close (Epic 8), owner review pack (Epic 11), and ops chat (Epic 12). This convoy finishes the cockpit so a solo can land in Fleet, triage, and ask copilot without grepping.
Decision: docs/decisions/2026-08-25-second-brain-os-pivot.md.
Scope
- Forge webhooks
Epic-forge-webhooks—POST /api/webhooks/forge(GitHub/Forgejo) verifiesX-Hub-Signature/X-Forgejo-SignatureviaFORGE_WEBHOOK_SECRET, findsechodo-convoy: <uuid>marker in PR body, transitionspr_review→merged(human-gate-2automation path) and writesconvoy_events. - PR checks recovery panel
Task-pr-checks-recovery-panel.md— Mission control detail shows PR checks + retry. - Completion artifacts
Epic-owner-completion-artifacts—completion_summaryonpublished/merged→released(markdown summary + optional screenshot placeholder), gallery list, tRPClistArtifacts. - Ops copilot
Epic-ops-copilot—ops-copilot-context-tools(fleet + convoy + backlog queries scoped to workspace) +ops-copilot-uichat panel +draft-workfrom chat (create Task via MCP). - Doc-writer: SOP for webhook secret rotation + copilot prompt.
Out of scope: LiteLLM gateway, SQLite single-tenant, preference learning.
Roles invoked
Conductor → Architect (4 briefs) → Implementer per brief (disjoint: webhooks, artifacts, copilot) → Doc-writer (SOP) → Reviewer.
Todos
- Brief 1 forge webhook receiver
- Brief 2 completion gallery + summaries
- Brief 3 ops copilot (context tools + UI)
- Brief 4 doc-writer SOPs
IA
Skipped (ia skip set — server-only, no new top-level entities beyond completion_artifacts optional table; reuse convoy_events metadata.prUrl + objects content).
UX
Partial — ux not skipped for copilot: chat panel reuses components/ui/*.
Architecture
- Webhooks:
apps/web/app/api/webhooks/forge/route.tsHMAC verify,reconcileviatransitionConvoypackages/shared/src/convoy-lifecycle/state-machine.ts:90pr_review→merged. - Artifacts: optional
completion_artifactstable or reuseobjects content.completionSummary+convoy_events metadata.completionScreenshot. - Copilot:
apps/web/server/routers/copilot.tswithresolveModel(gate-copilot)+ context toolsfleet, convoys.list, backlog.listTreescoped toworkspace_id; UIcomponents/copilot/ops-copilot-panel.tsx.
Dependencies
- v0.1 + worker-closeout (harness, doc_review, prUrl)