docs(fleet): tier the north star and declare the tier-0 operator surface (#1337)
ci/woodpecker/push/publish Pipeline was canceled
ci/woodpecker/push/publish Pipeline was canceled
This commit was merged in pull request #1337.
This commit is contained in:
+129
-2
@@ -6,7 +6,7 @@
|
||||
# packages/mosaic/src/commands/fleet.ts (renderNorthStarMarkdown). Edit the YAML,
|
||||
# never the .md.
|
||||
#
|
||||
# Self-contained Mosaic. NO Hermes runtime dependency. The backlog of record is
|
||||
# Self-contained Mosaic. The backlog of record is
|
||||
# the Mosaic Backlog on Mosaic's OWN native Postgres storage service.
|
||||
|
||||
version: 1
|
||||
@@ -24,7 +24,7 @@ substrate:
|
||||
note: >-
|
||||
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.
|
||||
PGlite-embedded by default, full Postgres by config).
|
||||
|
||||
standing_objectives:
|
||||
- id: NS-1
|
||||
@@ -69,32 +69,53 @@ standing_objectives:
|
||||
business/operations) and the orchestrator provisions the matching persona
|
||||
roster and org structure from a cross-domain baseline persona library; the
|
||||
delivery/coding fleet is one profile among many.
|
||||
- id: NS-10
|
||||
text: >-
|
||||
An adoption is not complete until the mechanism it replaces is removed.
|
||||
Two live conventions for one concern is the defect, not a transition
|
||||
state. Measured 2026-08-20: brain-home adopted by 9 modules and not 10;
|
||||
MOSAIC_HOME honored in 4 places, each re-deriving it; backlog cards
|
||||
declared while TASKS.md files stayed authoritative. Every one was decided
|
||||
correctly and left half-applied.
|
||||
|
||||
success_criteria:
|
||||
- id: AC-NS-0
|
||||
tier: 0
|
||||
text: >-
|
||||
The operator launches an agent on any configured harness with one
|
||||
command, observes its state and sends it work without attaching to a
|
||||
terminal multiplexer.
|
||||
- id: AC-NS-1
|
||||
tier: 1
|
||||
text: >-
|
||||
The supervisor keeps a two-agent floor (1 orchestrator + >=1 enhancer)
|
||||
healthy across reboot.
|
||||
- id: AC-NS-2
|
||||
tier: 1
|
||||
text: >-
|
||||
A goal added to this YAML is decomposed to cards and either merged or
|
||||
escalated, with no human in the loop.
|
||||
- id: AC-NS-3
|
||||
tier: 1
|
||||
text: >-
|
||||
No PR merges with failure/error/no-status/timeout CI, and none bypass
|
||||
pr-merge.sh.
|
||||
- id: AC-NS-4
|
||||
tier: 1
|
||||
text: >-
|
||||
TTL is enforced on claims; token caps remain advisory until a real meter
|
||||
exists.
|
||||
- id: AC-NS-5
|
||||
tier: 1
|
||||
text: >-
|
||||
Flipping fleet/run/PAUSED halts dispatch and merges within one tick.
|
||||
- id: AC-NS-6
|
||||
tier: 2
|
||||
text: >-
|
||||
A user can declare a system type and the fleet provisions the matching
|
||||
persona roster + topology from the baseline library, with no code change.
|
||||
- id: AC-NS-7
|
||||
tier: 2
|
||||
text: >-
|
||||
A user-customized persona (edited or added via the orchestrator) survives
|
||||
mosaic update: baseline reseed never clobbers user overrides.
|
||||
@@ -112,80 +133,186 @@ workstreams:
|
||||
title: Meta-loop — session-review + enhancer improvement PRs
|
||||
- id: F
|
||||
title: Safety-rails — TTL claims, advisory spend, PAUSE kill-switch
|
||||
- id: G
|
||||
title: Kill-switch — operator PAUSE honored before dispatch and merge
|
||||
- id: H
|
||||
title: Personas & system profiles — cross-domain library, system-type provisioning, update-surviving customization
|
||||
- id: I
|
||||
title: Operator surface — launcher, fleet visibility, reliable steering (tier 0)
|
||||
- id: J
|
||||
title: Web control plane — browser surface over the gateway (tier 1)
|
||||
- id: K
|
||||
title: Clients — desktop and mobile over the same backend (tier 2)
|
||||
- id: L
|
||||
title: Auth profiles — per-provider accounts, per-session selection (tier 2)
|
||||
|
||||
# NOTE: workstreams C, D, E and F are declared but currently project no goals.
|
||||
# That is planning debt, not an editing error: their goals have not been written
|
||||
# yet. The A5 validator below reports it rather than letting it stay invisible.
|
||||
|
||||
goals:
|
||||
- id: A1
|
||||
title: Machine-readable NORTH_STAR.yaml + Markdown projection
|
||||
phase: 1
|
||||
tier: 1
|
||||
priority: must-have
|
||||
depends_on: []
|
||||
- id: A2
|
||||
title: Mosaic Backlog schema + storage-service card store (drizzle/PGlite)
|
||||
phase: 1
|
||||
tier: 1
|
||||
priority: must-have
|
||||
depends_on: [A1]
|
||||
- id: A3a
|
||||
title: Card lifecycle — create/claim/release with stable ids + depends_on DAG
|
||||
phase: 1
|
||||
tier: 1
|
||||
priority: must-have
|
||||
depends_on: [A2]
|
||||
- id: A3b
|
||||
title: TTL-bounded claim enforcement (wall-clock) on cards
|
||||
phase: 1
|
||||
tier: 1
|
||||
priority: must-have
|
||||
depends_on: [A3a]
|
||||
- id: A4
|
||||
title: Advisory spend projection per card (degrades to TTL, no real meter)
|
||||
phase: 1
|
||||
tier: 1
|
||||
priority: should-have
|
||||
depends_on: [A3a]
|
||||
- id: B1
|
||||
title: Supervisor tick — readiness scan, two-agent-floor health check
|
||||
phase: 2
|
||||
tier: 1
|
||||
priority: must-have
|
||||
depends_on: [A3a]
|
||||
- id: B2
|
||||
title: Native dispatch/claim — assign ready dependency-satisfied work
|
||||
phase: 2
|
||||
tier: 1
|
||||
priority: must-have
|
||||
depends_on: [A3b, B1]
|
||||
- id: B3a
|
||||
title: Planner decompose — goal added to YAML → cards
|
||||
phase: 2
|
||||
tier: 1
|
||||
priority: must-have
|
||||
depends_on: [A2, B1]
|
||||
- id: B3b
|
||||
title: Replan request on empty backlog; escalate on no-decompose
|
||||
phase: 2
|
||||
tier: 1
|
||||
priority: should-have
|
||||
depends_on: [B3a]
|
||||
- id: G1
|
||||
title: PAUSE kill-switch + merge-gate honored before dispatch and merge
|
||||
phase: 2
|
||||
tier: 1
|
||||
priority: must-have
|
||||
depends_on: [B2]
|
||||
- id: H1
|
||||
title: Cross-domain baseline persona library (exec, marketing, ops, research, assistant + engineering roles)
|
||||
phase: 1
|
||||
tier: 2
|
||||
priority: must-have
|
||||
depends_on: [A1]
|
||||
- id: H2
|
||||
title: System-type profiles — declarative mapping of system type to persona roster + topology
|
||||
phase: 2
|
||||
tier: 2
|
||||
priority: must-have
|
||||
depends_on: [H1]
|
||||
- id: H3
|
||||
title: System-type provisioning — user declares type; orchestrator instantiates the matching roster + structure
|
||||
phase: 2
|
||||
tier: 2
|
||||
priority: must-have
|
||||
depends_on: [H2]
|
||||
- id: H4
|
||||
title: Update-surviving persona customization — ad-hoc edits/additions persisted in a PRESERVE-protected override layer (baseline merged with overrides)
|
||||
phase: 2
|
||||
tier: 2
|
||||
priority: must-have
|
||||
depends_on: [H1]
|
||||
- id: A5
|
||||
title: NORTH_STAR schema validator — every goal's workstream declared, every workstream has a goal, every depends_on id exists, every tier has a success criterion; runs in CI beside the Markdown regeneration check
|
||||
phase: 1
|
||||
tier: 0
|
||||
priority: must-have
|
||||
depends_on: [A1]
|
||||
- id: I1
|
||||
title: One home resolver — a single function resolving MOSAIC_HOME with a sane default, adopted by every module. Today brain-home.ts is imported by 9 modules while 10 still use DEFAULT_MOSAIC_HOME, and MOSAIC_HOME is re-derived ad hoc in 4 places. NS-10 applies - finish the adoption and delete the second path
|
||||
phase: 1
|
||||
tier: 0
|
||||
priority: must-have
|
||||
depends_on: []
|
||||
- id: I2
|
||||
title: 'mosaic fleet ps sees the fleet that is actually running. Three measured blockers: the roster declares socket `mosaic-fleet` which does not exist, the 18 live sessions are on the default socket, and nothing writes a roster because seats are launched outside the CLI. Make the socket configurable and the roster written at launch, or make ps read tmux + seat dirs directly'
|
||||
phase: 1
|
||||
tier: 0
|
||||
priority: must-have
|
||||
depends_on: [I1]
|
||||
- id: I3
|
||||
title: Migrate fleet steering onto mosaic agent send --verify (exists, FLEET-OBS-005, spec FR-5) and retire tools/tmux/agent-send.sh, which forges the sender (D33) and returns an uninformative rc (D16, D34). FR-5 predates those defects by a month
|
||||
phase: 1
|
||||
tier: 0
|
||||
priority: must-have
|
||||
depends_on: [I1]
|
||||
- id: I4
|
||||
title: 'mosaic fleet absorbs what launch-seat.sh does and launch-seat.sh is deprecated: compose the prompt file set, force the skill set, wire the style hook, fail closed on any unreadable input, export per-seat git identity, and register the seat in the roster. launch-seat.sh was a manual method; it is the reference implementation, not the destination'
|
||||
phase: 1
|
||||
tier: 0
|
||||
priority: must-have
|
||||
depends_on: [I1, I5]
|
||||
- id: I5
|
||||
title: Harness probe matrix — verify a working prompt-injection path for claude, codex, opencode and pi, and refuse any runtime whose path is unverified. AC-NS-0 clause 1 ("any configured harness") rests on this. The probe work in docs/plans/2026-08-19_launch-seat-multi-runtime.md (brain, untracked) transfers; its launch-seat.sh target does not
|
||||
phase: 1
|
||||
tier: 0
|
||||
priority: must-have
|
||||
depends_on: []
|
||||
- id: I6
|
||||
title: Finish the heartbeat responder (FLEET-OBS-002, the only Phase-2 task still in-progress; spec FR-2). Health must mean "answered a heartbeat", not "pane alive" — pane state measured two seats wrong on 2026-08-20
|
||||
phase: 1
|
||||
tier: 0
|
||||
priority: must-have
|
||||
depends_on: []
|
||||
- id: I7
|
||||
title: Independent review and live-fleet dogfood of the Phase-2 verbs (FLEET-OBS-008), then land them (FLEET-OBS-009). Implementation is done and verification is not; "done" in a task file frozen five weeks is not evidence
|
||||
phase: 1
|
||||
tier: 0
|
||||
priority: must-have
|
||||
depends_on: [I2, I3, I4, I6]
|
||||
- id: I8
|
||||
title: Neutralize misleading documentation — supersede headers on docs that state a stale status, a false blocker or a retired mechanism. Cheap, and it is tier 0 because a stale doc does not merely fail to help an agent, it actively misroutes one. Rebuilding the documentation is a separate and later job
|
||||
phase: 1
|
||||
tier: 0
|
||||
priority: must-have
|
||||
depends_on: []
|
||||
- id: I9
|
||||
title: Study t3code's agent-attach and multi-provider auth methods and record what transfers. Reference only — Mosaic implements its own within the stack, never adopts the code and never takes the dependency. Informs HOW I/J/K/L are built, not whether
|
||||
phase: 1
|
||||
tier: 0
|
||||
priority: should-have
|
||||
depends_on: []
|
||||
- id: J1
|
||||
title: Web control plane over the gateway — fleet visibility and steering in a browser, same data source as I2
|
||||
phase: 3
|
||||
tier: 1
|
||||
priority: must-have
|
||||
depends_on: [I2]
|
||||
- id: K1
|
||||
title: Desktop and mobile clients against the gateway, authenticated
|
||||
phase: 4
|
||||
tier: 2
|
||||
priority: must-have
|
||||
depends_on: [J1]
|
||||
- id: L1
|
||||
title: Per-provider auth profiles with per-session selection
|
||||
phase: 4
|
||||
tier: 2
|
||||
priority: must-have
|
||||
depends_on: [I4]
|
||||
|
||||
assumptions:
|
||||
- id: ASM-1
|
||||
|
||||
Reference in New Issue
Block a user