# Mosaic system-type profile — SCHEMA REFERENCE
# ---------------------------------------------------------------------------
# A profile is a DECLARATIVE mapping from a "system type" to a persona roster
# plus its org topology. Profiles are DATA: drop a new <id>.yaml here and the
# loader/CLI pick it up with no code change (North Star NS-9 / AC-NS-6).
#
# Every persona referenced below (lead, floor[], roster[].class, roster[].reports_to)
# MUST resolve to a real persona in the library. The loader validates this against
# the role contracts in ../roles/*.md (see LIBRARY.md for the grouped index).
#
# Schema (this file documents every key; other profiles omit the comments):
#
#   id:           kebab-case system-type id — MUST equal the filename stem.
#   title:        human-readable name.
#   description:  one paragraph — what this system does.
#   lead:         persona class that coordinates the roster (the orchestrating seat).
#   floor:        persistent minimum roster that must stay staffed (list of classes).
#   roster:       the full default roster. Each entry:
#                   - class:        persona class (MUST resolve to a role file).
#                     reports_to:   optional — the class this seat reports to
#                                   (encodes org topology). Omit for the lead.
#                                   MUST resolve to a class present in this roster.
#                     multiplicity: optional int (default 1) — e.g. 2 coders.
#   notes:        optional free text.
# ---------------------------------------------------------------------------
id: software-delivery
title: Software Delivery
description: >-
  The engineering fleet that turns ratified objectives into shipped, reviewed,
  merged code. The lead (orchestrator) runs the supervisor loop and dispatches
  ready work; it hands goal-decomposition to the planner, which plans phased FRs
  into a depends_on DAG, decomposition splits them into one-PR-each cards, coders
  execute to green CI, and review / security-review / site-tester / merge-gate
  guard the merge. This mirrors today's coding fleet.
# NOTE: the lead seat is the dedicated "orchestrator" — the always-on coordinator
# that runs the supervisor tick, dispatches ready work, and routes PRs to the
# merge-gate while holding only lean coordination state. The planner is now a
# distinct seat (heavy goal-decomposition context) that reports to the
# orchestrator. The two-agent floor is orchestrator + enhancer.
lead: orchestrator
floor:
  - orchestrator
  - enhancer
roster:
  - class: orchestrator
  - class: board
    reports_to: orchestrator
  - class: planner
    reports_to: orchestrator
  - class: decomposition
    reports_to: planner
  - class: code
    reports_to: decomposition
    multiplicity: 2
  - class: review
    reports_to: orchestrator
  - class: security-review
    reports_to: review
  - class: site-tester
    reports_to: review
  - class: documentation
    reports_to: orchestrator
  - class: merge-gate
    reports_to: orchestrator
  - class: rebase
    reports_to: merge-gate
  - class: operator
    reports_to: orchestrator
  - class: session-review
    reports_to: orchestrator
  - class: enhancer
    reports_to: orchestrator
notes: >-
  Two-agent floor (orchestrator + enhancer) is always staffed; every other seat is
  added on demand.
