Files
stack/docs/fleet/NORTH_STAR.md
jason.woltje 61b1bdac2a
All checks were successful
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
feat(fleet): add machine-readable NORTH_STAR.yaml + Markdown projection (#656)
2026-06-24 14:40:09 +00:00

5.0 KiB

Mosaic Fleet — NORTH STAR

Generated file — do not edit by hand. Projected deterministically from NORTH_STAR.yaml by the pure generator in packages/mosaic/src/commands/fleet.ts (renderNorthStarMarkdown). Edit the YAML, then regenerate. Self-contained Mosaic — no Hermes dependency.

Mission

A self-driving Mosaic delivery fleet that 24/7 unattended converts a machine-readable goal set into merged, CI-green, budget-bounded change — looping plan→backlog→assign→execute→verify→merge→reassess — on Mosaic's OWN native backlog/dispatch engine.

Substrate

The Mosaic Backlog is the backlog of record + dispatch engine, built on Mosaic's native Postgres storage service (@mosaicstack/db drizzle; PGlite-embedded by default, full Postgres by config). NOT Hermes.

Standing objectives

  • NS-1 — Single machine-readable source (this file) drives planning; prose docs are projections.
  • NS-2 — Every backlog item is an independently-shippable unit with stable id, priority, depends_on DAG, represented as a Mosaic Backlog card; spend tracked as advisory projection.
  • NS-3 — The supervisor guarantees movement: no idle agent while ready dependency-satisfied work exists; no empty backlog without a replan request; assignment via Mosaic native dispatch/claim.
  • NS-4 — Exactly one merge-gate approver; nothing reaches main except via pr-merge.sh after pr-ci-wait.sh success; Gitea branch protection is the backstop.
  • NS-5 — Every unit bounded by wall-clock TTL on its claim; token caps enforced only where a real meter exists, else advisory.
  • NS-6 — Context cleared between tasks for ephemeral runners (reset_between_tasks); persona+mission re-injected per task.
  • NS-7 — Meta-loop (session-review + enhancer) continuously proposes small fleet-improvement PRs.
  • NS-8 — Single operator-flippable PAUSE kill-switch (fleet/run/PAUSED) honored before every dispatch and every merge.

Success criteria

  • AC-NS-1 — The supervisor keeps a two-agent floor (1 orchestrator + >=1 enhancer) healthy across reboot.
  • AC-NS-2 — A goal added to this YAML is decomposed to cards and either merged or escalated, with no human in the loop.
  • AC-NS-3 — No PR merges with failure/error/no-status/timeout CI, and none bypass pr-merge.sh.
  • AC-NS-4 — TTL is enforced on claims; token caps remain advisory until a real meter exists.
  • AC-NS-5 — Flipping fleet/run/PAUSED halts dispatch and merges within one tick.

Workstreams

id title
A Substrate — Mosaic Backlog on native Postgres storage service
B Supervisor — movement guarantee, two-agent floor, dispatch/claim
C Planner — goal decomposition into independently-shippable cards
D Merge-gate — single approver, pr-merge.sh after CI wait
E Meta-loop — session-review + enhancer improvement PRs
F Safety-rails — TTL claims, advisory spend, PAUSE kill-switch

Goals (backlog projection)

id title phase priority depends_on
A1 Machine-readable NORTH_STAR.yaml + Markdown projection 1 must-have
A2 Mosaic Backlog schema + storage-service card store (drizzle/PGlite) 1 must-have A1
A3a Card lifecycle — create/claim/release with stable ids + depends_on DAG 1 must-have A2
A3b TTL-bounded claim enforcement (wall-clock) on cards 1 must-have A3a
A4 Advisory spend projection per card (degrades to TTL, no real meter) 1 should-have A3a
B1 Supervisor tick — readiness scan, two-agent-floor health check 2 must-have A3a
B2 Native dispatch/claim — assign ready dependency-satisfied work 2 must-have A3b, B1
B3a Planner decompose — goal added to YAML → cards 2 must-have A2, B1
B3b Replan request on empty backlog; escalate on no-decompose 2 should-have B3a
G1 PAUSE kill-switch + merge-gate honored before dispatch and merge 2 must-have B2

Assumptions (vetoable)

  • ASM-1 (vetoable) — The Mosaic Backlog on the native Postgres storage service is the backlog of record.
  • ASM-2 (vetoable) — Claude gate roles have no native busy status, so readiness = pane-idle + heartbeat.
  • ASM-3 (vetoable) — Two-agent floor = 1 orchestrator + >=1 enhancer.

Spend

  • advisory: true
  • No per-task token meter yet; budgets degrade to TTL. Spend is tracked only as an advisory projection alongside each card.