--- id: CUST-WP-0010 type: workplan title: Workstream Lifecycle Documentation domain: custodian status: completed owner: custodian topic_slug: the-custodian state_hub_workstream_id: "e73c41f1-45b7-4c92-8b45-3105a1936fff" created: 2026-03-03 updated: 2026-03-03 --- # CUST-WP-0010 — Workstream Lifecycle Documentation ## Purpose The dashboard "Workstreams by Domain" chart exposes seven computed states (active, accepted, finished, blocked, stalled, oldies + time-based modes). These need to be documented so that Bernd and the custodian share a common vocabulary, and so the "accepted" quality-gate pattern is clearly understood as the anchor for custodian review. ## Scope - New dashboard reference page: `docs/workstream-lifecycle.md` - Update `docs/workstreams.md` status table to reflect new state names - Nav entry in `observablehq.config.js` ## Files Changed | File | Change | |------|--------| | `state-hub/dashboard/src/docs/workstream-lifecycle.md` | New reference page | | `state-hub/dashboard/src/docs/workstreams.md` | Update status table | | `state-hub/dashboard/observablehq.config.js` | Add nav entry | ## Tasks ### Step 1: Write lifecycle docs page ```task id: CUST-WP-0010-T1 title: Create docs/workstream-lifecycle.md status: done priority: high state_hub_task_id: "95e5810d-947a-4039-b017-9bee85cf4f48" ``` ### Step 2: Update workstreams reference ```task id: CUST-WP-0010-T2 title: Update docs/workstreams.md status table status: done priority: medium state_hub_task_id: "30d61368-8ede-4d84-9f98-44fe6ff57dda" ``` ### Step 3: Add nav entry ```task id: CUST-WP-0010-T3 title: Add nav entry to observablehq.config.js status: done priority: medium state_hub_task_id: "4cef0841-5324-4fbc-a44b-ad8520f77c9f" ``` ## Design Notes - "accepted" maps to DB `status = "completed"` — the name change reflects intent - The lifecycle is linear: active → finished (task-derived) → accepted (human+custodian gate) - Attention signals (blocked, stalled, oldies) are orthogonal — a workstream can be active AND stalled at the same time - The custodian uses the "finished but not accepted" gap as the trigger to run quality checks and create follow-up tasks before signing off