# coordination-model-v0.2.md ## 1. Document Status **Document:** coordination-model-v0.2.md **Project:** coordination-engine **Version:** 0.2 **Status:** Addendum to v0.1 (COORDINATION-WP-0005) **Scope:** Project-repository workplans as coordination drivers **Extends:** `spec/coordination-model-v0.1.md` **Related:** `spec/cross-owner-wait-mode-v0.1.md`, `spec/worker-coordination-service-v0.1.md`, `the-custodian/canon/architecture/adr-005-cross-repo-workplans-project-repos.md`, `the-custodian/canon/standards/project-repository-flavor_v0.1.md` v0.1 remains the ontology. This addendum maps **estate work records** onto that ontology. It does not replace actors, goals, commitments, or observation loops. ## 2. Purpose Cross-repository work in this estate is supposed to live in a **project repository** (`prj-`, `repo_flavor: project`, ADR-005). Agents were instead minting stranded `wait` notes on product workplans. The engine must treat a `prj-` workplan as the **driver** of a `CoordinationCase`, and product-repo workplans as **implementers**. ## 3. Out of scope - The engine **does not author workplans**. Files remain source of truth (ADR-001). State Hub remains the work-record read model. - The engine **does not replace State Hub**, Fabric, or product implementation in participating repos. - The engine **does not vend credentials**. `ops-warden` issues SSH certificates only. - This addendum **does not enable live worker injection**. Wake/lease remains the v0.1 worker-coordination service, off until an operator starts it. ## 4. Driver and implementer | Role | Binding | Authority | | --- | --- | --- | | **Driver** | Workplan whose repo is `prj-*` / `category: project` / `repo_flavor: project` | Sequences the effort, names participating repos, holds `depends_on` and related child ids. Does not implement production code. | | **Implementer** | Workplan in a participating product/tooling repo | Owns code, tests, deployables, and local tasks. | Participant roles on the case (v0.1 `Participant.roles[]`): - `driver` — the project-repository actor (system: State Hub record + project repo) - `implementer` — each participating product repo (system) - `observer` — State Hub / Fabric (read-only) - `agent` — a worker only when the v0.1 service has selected that gita repo as a wake target A workplan with `flavor: residual` is **not** a driver and is **not** actionable demand unless promoted (STATE-WP-0092). Unspecified flavor is relevant. ## 5. Mapping onto v0.1 ```text prj- workplan → CoordinationCase goal ← GOAL.md outcome + workplan title driver ← the prj- workplan (commitment: sequence the effort) implementers ← child workplans in other repos (related / depends_on) commitments ← depends_on edges (kind: response | completion) observations ← State Hub task/workplan status, receipts ``` `depends_on` is a **commitment**, not prose. The obligor is the implementer (or upstream driver) named by the target id. The beneficiary is the waiting plan. Satisfaction is the target reaching a terminal satisfactory status (`done` / `finished` / `archived`), matching the v0.1 worker-coordination dependency rule. `related:` without `depends_on` is context, not a commitment. ## 6. Case identity ```yaml CoordinationCase: id: "case:prj:{repo_slug}:{workplan_id}" # derived, not authored scenario_type: project_driver driver_workplan_id: string # hub UUID or canonical id driver_repo: prj-* implementers: - repo: string workplan_id: string? role: implementer commitments: # from depends_on - kind: completion obligor_workplan_id: string beneficiary_workplan_id: string flavor: planning | implementation | ... # driver's flavor ``` The engine derives this object from hub JSON. It does not POST a workplan. ## 7. Worked example — `prj-helixforge-factory` / `HFACT-WP-0001` Repo `prj-helixforge-factory` is `repo_flavor: project`. Workplan `HFACT-WP-0001` (“Establish the internal HelixForge software factory on Railiance”) is the driver. It states that it owns integration acceptance and handoff and **neither replaces nor copies child implementation plans**. Implementers named in `related:` include `GLAS-WP-0012`, `SAND-WP-0015`, `REINAH-WP-0003`, `ACTIVITY-WP-0032`, `KEY-WP-0013`, `INFD-WP-0001`, `APPROVAL-WP-0002`, `SECRETS-WP-0009`, `AUDIT-WP-0009`, `RPF-WP-0038`. Those remain implementer workplans in their owning repos. A wait on `KEY-WP-0013` from the factory driver is a **commitment** on the key-cape implementer, not a stranded `wait` on the driver with no observer. Cross-owner handling is `spec/cross-owner-wait-mode-v0.1.md`. ## 8. Compatibility v0.1 cases that are not `scenario_type: project_driver` are unchanged. The worker-coordination service continues to poll ready/active implementer tasks. This addendum tells it (and agents) which workplan is the driver when one exists.