Submatter/.convoys/second-brain-os-v01/brief-4-plans-tree.md
Randall Stillwell 6ccb060bea feat(second-brain): open self-hosted Obsidian for crews — harness-agnostic v0.1
- MCP create-backlog-item for natural language Plan/Epic/Task authoring
- Worker non-code: optional worktree + per-harness allowlist + doc_review→published
- Harness registry: harness_providers/role_harness_routes, WorkerAdapter (minimal|crewai|langgraph|remote-ag-ui), AG-UI POST /api/ag-ui, Settings → Harnesses with Test
- Plans tree: backlog.listTree + createPlan/Epic/Task + Start→Convoy, web CRUD without CLI
- Fleet: /fleet rollup across workspaces + SSE /api/fleet/events

Decision: docs/decisions/2026-08-25-second-brain-os-pivot.md
Convoy: .convoys/second-brain-os-v01

Co-authored-by: orchestrator
2026-08-25 16:20:53 -05:00

2.4 KiB

brief convoy role title status priority slice_dependencies recommended_model model_tier
4 second-brain-os-v01 role-implementer Plans tree — web CRUD for plans/ without CLI, Start→Convoy ready P0
1
3
qwen-coder local

Brief 4 — Plans tree (1w) — Epic 10

Goal

Web Plans is Obsidian-like tree — read/write plans/Plan-*/Epic-*/Task-*.md without pnpm import:markdown-backlog CLI; click Start → Convoy.

Files

  • apps/web/server/routers/backlog.ts:29 — add listTree (returns hierarchical Plan → Epic → Task with status/priority/repoPath), createPlan/createEpic/createTask (slug/title/bodyMarkdown/agent_prompt → writes .md via join(repoRoot, repoPath) atomically .tmp→rename, then direct DB upsert or syncMarkdownBacklogScan), updateTaskBody, getBacklogItem already exists. Enforce slug ^[a-z0-9-]+$, workspace_id fence, updated_at bump.
  • apps/web/app/(app)/[workspaceSlug]/plans/page.tsx NEW — tree component (collapsible Radix Collapsible + ScrollArea), status chips, search, New Plan/Epic/Task dialogs, Start button → calls convoys.create apps/web/server/routers/convoys.ts:173 with planSlug/epicSlug.
  • Reuse resolveWorkflowPrompt preview in task detail drawer.
  • docs/Glossary.md:50 hierarchy respected; config/CursorSync.md:33 export allow-list preserved (web writes go through same export path).

Acceptance

  • Plans page shows Plan-clarity → Epic-ai-tags → Task-local-tag-prompt [ready] from DB without CLI after DB seed.
  • New Task dialog title: Research prompt slug: research-prompt creates plans/Plan-clarity/Epic-ai-tags/Task-research-prompt.md on disk + row in markdown_backlog_items visible after refresh without manual import.
  • Start on a ready task creates convoy clarity-research-prompt at draft and links briefFiles: [repoPath].
  • MCP create-backlog-item brief 1 and web create produce same file format (round-trip parse test).
  • pnpm lint && pnpm type-check pass.

Prompt

You are role-implementer brief 4. Read plans/README.md, packages/database/src/markdown-backlog/parse.ts, apps/web/server/routers/backlog.ts, docs/decisions/2026-08-25-second-brain-os-pivot.md. Follow existing tRPC patterns ai-models.ts. Keep UI to components/ui/* + Tailwind.

Depends

Briefs 1,3 — needs MCP tool shape + harness registry for Start.

Out of scope

Full Notion drag-n-drop, breadcrumb perf — keep tree simple.