Files
stack/docs/fleet/proposals/mosaic-platform-prd/PRD-backlog-providers.md
Jason Woltje 6b8c3c5d3a
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
docs(fleet): refine Mosaic Platform PRD per Jason's review (R1–R7)
Post-review refinements to the DRAFT PRD set (decisions D1–D12 unchanged):

- R1: PRD-permission-relay is now self-contained — its cited design source
  (guard-rails-capability-permissions.md) is absent from origin/main, so the
  essential model (prepare-freely/execute-with-approval, permission levels,
  resource:action grants) is folded in as the authoritative spec.
- R2: Phase-1 conversation channel is tmux/CLI via the f4 Phase-1 tmux
  connector (operator issues /remote-control); Matrix room (J5/K1) is Phase 2.
- R3: Jarvis is a Level-0 orchestrator (delegation + subagents, never executes
  coding/infra); AC-NS-8 latency isolation is a separate-model-capacity
  guarantee, not just a separate process (NS-10, AC-NS-8, ASM-5).
- R4: jarvis-brain reframed as the P0 (prototype) Mosaic Stack; tenant-1
  migration targets the proper stack storage layer (vector DB + enhanced
  memory + flat-file backends). Agent memory/runbooks migrate live into the
  memory subsystem and are NOT frozen; repo retires read-only only after both
  PA data and agent memory are verified migrated (X2/X-R7).
- R5: homelab→USC promotion is an explicit owner sign-off gate, not an
  automated metric (X deployment-scope).
- R6: verified K1 is covered by f4-matrix-connector.md Phase 2 (no new doc).
- R7: clarified always-available Opus ≠ standing cost (idle = no bill) (J-R2).
- Also normalized PRD-backlog-providers.md and PRD-webui-fleet-control.md with
  prettier (whitespace-only) — they were non-conformant as originally pushed
  and would have re-broken repo-wide format:check on merge.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RMoEx7hfdFGjUiCHuN1RRi
2026-07-09 14:50:54 -05:00

3.9 KiB
Raw Blame History

PRD — Backlog Provider Sync Adapters · Workstream Q

Status: DRAFT for ratification · Goals: Q1Q3 · Doctrine: NS-12 (ratified D3)

Mission

Users choose where they see and touch work — Gitea, GitHub, a local kanban — while the Mosaic Backlog on native Postgres stays the sole record and dispatch engine (upholds ASM-1; NS-3/NS-4/NS-5 guarantees never depend on an external provider). Providers attach as bidirectional sync adapters.

Requirements

Adapter interface + Gitea (Q1)

ID Requirement
Q-R1 A BacklogProviderAdapter interface: map card ⇄ external item (create/update/close/comment/label), with stable external-id linkage stored on the card.
Q-R2 Sync is bidirectional and conflict-safe: native record wins on divergence; external edits arrive as proposed mutations (applied if non-conflicting, else surfaced).
Q-R3 Claims, TTLs, depends_on DAG, and dispatch state live only in the native record; adapters project them (e.g. as labels/comments) but never own them.
Q-R4 Gitea adapter first (webhook + API), configured per workspace: repo mapping, label conventions, direction (mirror-out / mirror-in / full).
Q-R5 Adapter enable/disable is workspace configuration; zero adapters is a fully supported mode.

GitHub (Q2)

ID Requirement
Q-R6 Same interface, GitHub Issues backend. Existing packages/cli-tools platform detection informs but does not implement this (that is dev tooling, not product runtime).

Local kanban (Q3)

ID Requirement
Q-R7 A webUI kanban board over the native backlog (no external provider needed) — the "local kanban" choice. Builds on W3's card views and/or the existing KanbanBoard component upgraded from demo-grade to live data.

Acceptance criteria

  1. A card created by Jarvis (J3) appears as a Gitea issue within one sync interval; closing the issue in Gitea marks the card for review, not silent closure; dispatch/claims never round-trip through Gitea.
  2. Killing the adapter mid-mission: dispatch continues unaffected (record is native); on restart, sync converges without duplicates.
  3. The same mission can be mirrored to Gitea and viewed on the local kanban simultaneously without state divergence.

Non-goals

  • External provider AS the backlog (vetoed — "truly swappable backends" option declined 2026-07-09).
  • Two-way sync of claims/TTL semantics (external systems can't express them; projection only).

Assumptions

  • ASSUMPTION: the delivery fleet's engineering PR/issue flow on the stack repo itself continues to use cli-tools/Gitea directly — workstream Q is the product feature for user workspaces, not a replacement for the dev workflow.