docs(agent-queue): add work hierarchy & composite delegation (roadmap/epic)
New §24 + feature-catalog row: - two delegation modes: atomic (leaf bug/feature/task) vs composite (roadmap/epic) - introduce job kind (leaf|composite); composite routes to a planner/orchestrator that fans out child leaf jobs as a DAG across factories/agents/profiles - parentId hierarchy + rollup semantics (status/budget/verify/phase-gates) + idempotent re-run (skip shipped children) - source-of-truth/sync discipline (one record referenced by many; one-way echo) - HYBRID decision recorded: model kind/parentId/rollup in the fleet layer now, keep shared tracker ITEM_TYPES unchanged (label kind:roadmap), promote to a first-class epic type later via additive migration once proven - phasing: leaf-only P1-P2; manual composite P3; auto-decomposition planner P3->P5
This commit is contained in:
parent
3ad9500623
commit
67d8aa5766
@ -426,6 +426,7 @@ Each phase: **Goal → checklist → Exit criteria**. Don't start a phase until
|
||||
| Rollout / rollback / feature flags | P2→ | §21 |
|
||||
| Capacity planning & RU/cost | P2→ | §22 |
|
||||
| Ownership & RACI / on-call | all | §23 |
|
||||
| Work hierarchy & composite delegation (roadmap/epic) | P3 (manual) → P5 (planner) | §24 |
|
||||
|
||||
---
|
||||
|
||||
@ -554,5 +555,55 @@ Owners are roles, not names — assign before each phase starts (this removes th
|
||||
|
||||
---
|
||||
|
||||
## 24. Work hierarchy & composite delegation (roadmap / epic)
|
||||
|
||||
**Goal:** delegate work at *any* granularity — a single bug/feature/task, **or an entire roadmap** — and let the fleet decompose + orchestrate rather than hand a multi-day roadmap to one agent session (which is long-horizon, low first-pass-success, and high blast-radius under `yolo`).
|
||||
|
||||
### 24.1 Two delegation modes
|
||||
- **Atomic** (today's model): one leaf item (`bug`/`feature`/`task`) → one job → one agent at one station.
|
||||
- **Composite** (new): a `roadmap`/`epic` → a **planner** profile expands it into child jobs → the scheduler runs them as a **DAG across factories/agents/profiles**, honoring `deps` + phase gates. "Delegate the whole roadmap" = hand it to the **orchestrator**, which fans out — never one agent grinding for hours.
|
||||
|
||||
### 24.2 Job `kind` — the one genuinely new concept
|
||||
A new axis, **orthogonal to tracker `type`**:
|
||||
- **`kind: leaf`** — runs an engine at a station (everything Phase 1–2 already does).
|
||||
- **`kind: composite`** — runs the **planner/orchestrator** that emits child `leaf` jobs and a dependency graph; it never itself edits a repo.
|
||||
|
||||
The scheduler (§7) routes by `kind`: `leaf` → station/engine; `composite` → planner. This keeps execution and planning cleanly separated.
|
||||
|
||||
### 24.3 Hierarchy & relationships
|
||||
- [ ] `parentId` links a child job/item to its roadmap/epic; `deps` (§5) expresses ordering within it (DAG, submit-time cycle detection).
|
||||
- [ ] A roadmap is, mechanically, a **named DAG of jobs + a rollup** — it reuses `deps`, profiles (§6), the scheduler (§7), and the lifecycle (§11); the only additions are `kind`, `parentId`, and rollup logic.
|
||||
- [ ] Add a **`planner`/`architect`/`tech-lead` profile** (§6 catalog) for decomposition + orchestration; leaf work still uses `backend-engineer`, `ux-designer`, etc.
|
||||
|
||||
### 24.4 Rollup semantics (composite-level)
|
||||
- [ ] **Status rollup:** roadmap `status` is derived from children — `in_progress` once any child starts; `shipped`/`done` only when **all** children reach `shipped`; surfaces `blocked`/`failed` children for triage.
|
||||
- [ ] **Budget rollup:** roadmap `budget` = Σ child budgets with an explicit **ceiling**; breaching the ceiling pauses fan-out (ties to §12 kill-switch).
|
||||
- [ ] **Verify rollup:** each leaf runs its own `verify`; the roadmap's acceptance gate runs **after** all leaves pass (e.g. an integration/e2e gate).
|
||||
- [ ] **Phase gates:** the roadmap's own phase Exit-criteria become **runtime gates** — fan-out of phase N+1 is blocked until phase N's children ship; human approval between phases is the default for `yolo` safety.
|
||||
- [ ] **Idempotent re-run:** re-running a roadmap **skips already-`shipped` children** (content-hash dedupe, §5); only unfinished/changed children re-queue.
|
||||
|
||||
### 24.5 Source-of-truth & sync (no drift)
|
||||
Composite work obeys the same SoT discipline as the core contract (§4 immutable manifest) and the tracker echo (§10): a roadmap/epic is **one record referenced by many**, never duplicated.
|
||||
- [ ] The **roadmap/epic** is the SoT for *what/why + rollup status*; each **leaf job/run** is the SoT for *its* execution.
|
||||
- [ ] Children reference the parent by `parentId`; the planner writes the child set **once** at decomposition (immutable manifest snapshot). Re-planning creates a new revision, it does not mutate in-flight children.
|
||||
- [ ] Status flows **one way, child → parent → tracker** (the §10 echo); humans never hand-edit rollup state.
|
||||
|
||||
### 24.6 Decision — **Hybrid** (recorded)
|
||||
> Model composite delegation in the **fleet layer now**; defer the shared-platform enum change until proven.
|
||||
|
||||
- **Now (fleet-owned):** add `kind` (`leaf`/`composite`), `parentId`, and rollup to the `fleet_jobs` schema (§13). The fleet owns this schema outright — no cross-product risk.
|
||||
- **Tracker stays `bug`/`feature`/`task`** (the shared `ITEM_TYPES` used by all 9 products is unchanged). A roadmap is represented by a **parent item + label `kind:roadmap`** + `parentId` on children — zero platform migration, no sign-off needed.
|
||||
- **Later (optional, gated on proven value):** promote `kind:roadmap` → a first-class `epic` tracker `type` via an **additive migration** (backfill items where `labels` contains `kind:roadmap` into `type: epic`, keep the label as an alias during transition). Low-risk because the behavior already works fleet-side.
|
||||
- **Rationale:** avoids a speculative 9-product platform change (UI/filters/stats/tests) before the orchestration model is validated; if the model is wrong, only fleet code is refactored, not a platform enum every product depends on.
|
||||
|
||||
### 24.7 Phasing & gates
|
||||
- **P1–P2:** leaf-only (no composite); `kind` defaults to `leaf`.
|
||||
- **P3:** composite scheduling + rollup + DAG view in the control plane, with **manual decomposition** (a human/author defines the child set).
|
||||
- **P3→P5:** the **auto-decomposition planner agent** (itself a `composite` job run by the `planner` profile) — start manual, automate once trustworthy.
|
||||
- **Acceptance:** a roadmap with N child jobs fans out across ≥2 factories, respects `deps` + phase gates, rolls up status/budget correctly, and a re-run skips shipped children; tracker shows the parent moving `in_progress → done` via the one-way echo.
|
||||
- **Verify gate:** composite-orchestration tests — DAG expansion, rollup status/budget, phase-gate blocking, idempotent re-run; control-plane e2e for the roadmap DAG view.
|
||||
|
||||
---
|
||||
|
||||
*This document is the single source of truth for the gigafactory build. Keep the §0 table and per-phase checkboxes updated; a phase ships only when its Exit criteria and the §16 Definition-of-Done rubric are fully green.*
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user