generated from coulomb/repo-seed
Normalize workplan IDs and activate parents on task start
This commit is contained in:
@@ -4,7 +4,7 @@ type: workplan
|
||||
title: "Lifecycle Assertions and Renormalization"
|
||||
domain: custodian
|
||||
repo: state-hub
|
||||
status: proposed
|
||||
status: active
|
||||
owner: codex
|
||||
topic_slug: custodian
|
||||
planning_priority: high
|
||||
@@ -32,11 +32,21 @@ state changes themselves do not consistently use a shared transition layer.
|
||||
|
||||
This workplan turns the vocabulary into executable rules and repair scaffolding.
|
||||
|
||||
## Lifecycle Invariants
|
||||
|
||||
| Invariant | Classification | Repair Path |
|
||||
|-----------|----------------|-------------|
|
||||
| A task moving from `todo` to `in_progress` activates a parent workstream in `proposed`, `ready`, or `backlog`. | automatic repair | Set parent workstream status to `active` in the same transaction. |
|
||||
| A `blocked` parent workstream is not automatically unblocked by task start. | hard guard | Keep `blocked`; require explicit unblock transition or dependency/decision repair. |
|
||||
| `finished` and `archived` workstreams should not have open tasks unless explicitly grandfathered. | warning, then repair | Report via consistency tooling; close/cancel stale tasks or reopen parent with intent. |
|
||||
| `needs_review` and `stalled` remain derived health labels. | hard vocabulary guard | Do not write them to workplan frontmatter or `workstreams.status`. |
|
||||
| Archived workplan files must have closed lifecycle states. | hard consistency error | Move file back to active workplans or close the lifecycle state. |
|
||||
|
||||
## T01 - Define Lifecycle Invariants
|
||||
|
||||
```task
|
||||
id: STATE-WP-0047-T01
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "28f28391-646c-4871-ae84-a1c1aae3f5bf"
|
||||
```
|
||||
@@ -50,11 +60,15 @@ derived labels.
|
||||
Done when the invariant table is documented and each rule is classified as
|
||||
hard error, warning, automatic repair, or human-review item.
|
||||
|
||||
Result 2026-05-23: added the initial invariant table above. The first automatic
|
||||
repair implemented in this slice is parent activation when real task work
|
||||
starts.
|
||||
|
||||
## T02 - Implement Shared Transition Helpers
|
||||
|
||||
```task
|
||||
id: STATE-WP-0047-T02
|
||||
status: todo
|
||||
status: in_progress
|
||||
priority: high
|
||||
state_hub_task_id: "56d9b6b9-fba1-4997-bdd5-875187cafa2d"
|
||||
```
|
||||
@@ -66,11 +80,15 @@ entry and exit assertions, and return concise repair/action results.
|
||||
Done when API routes, consistency tooling, and future UI actions can call one
|
||||
shared transition layer for lifecycle changes.
|
||||
|
||||
Progress 2026-05-23: added `api.services.lifecycle` with shared status
|
||||
normalization and parent-activation helpers. The task API now uses the helper;
|
||||
consistency tooling and future UI actions still need to adopt the shared layer.
|
||||
|
||||
## T03 - Auto-Advance Workstream On Task Start
|
||||
|
||||
```task
|
||||
id: STATE-WP-0047-T03
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "b0937fed-bd61-4f27-9586-8cebc6168827"
|
||||
```
|
||||
@@ -82,6 +100,10 @@ guard blocks the transition.
|
||||
Done when starting real task work cannot leave the parent workstream parked in
|
||||
planning states.
|
||||
|
||||
Result 2026-05-23: task creation or update to `in_progress` activates a parent
|
||||
workstream from `proposed`, `ready`, or `backlog`, while leaving `blocked`
|
||||
parents blocked.
|
||||
|
||||
## T04 - Harden Flow Advancement Semantics
|
||||
|
||||
```task
|
||||
@@ -132,7 +154,7 @@ pattern instead of relying on ad hoc fixes.
|
||||
|
||||
```task
|
||||
id: STATE-WP-0047-T07
|
||||
status: todo
|
||||
status: in_progress
|
||||
priority: high
|
||||
state_hub_task_id: "def5ce49-1938-4c45-807d-78ac15c995cb"
|
||||
```
|
||||
@@ -142,6 +164,11 @@ enforcement, and consistency repairs.
|
||||
|
||||
Done when lifecycle drift is hard to reintroduce accidentally.
|
||||
|
||||
Progress 2026-05-23: added router regression tests for task-start activation
|
||||
from `proposed`, `ready`, and `backlog`, plus a guard test proving `blocked`
|
||||
parents stay blocked. Remaining coverage still needs flow assertion hardening
|
||||
and consistency repair tests.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- Starting task work deterministically activates the parent workstream.
|
||||
|
||||
Reference in New Issue
Block a user