Engine v0.2: flow graph, datapoint states, gates, modes, overrides, deviations (RBT-WP-0007)
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 4s
Work Records / validate (push) Successful in 12s

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: sonnet
Assistant-Process: 295952@bnt-lap001
Assistant-Session: e93f64ad-516c-46eb-9666-aad8d300c477
This commit is contained in:
tegwick 2026-09-29 11:34:07 +02:00
parent 3fc279a6ed
commit 60d983769f
13 changed files with 1017 additions and 22 deletions

View file

@ -105,7 +105,7 @@ state_hub_task_id: "6740457f-81a7-5761-a768-b9b0faee7552"
scratch logbook under /tmp/rtut-*). `pack.yaml` (v0.1) runs today and is the test bed for
UI refinement. `pack.v0.2.yaml` expresses the same story in the proposed v0.2 model
(stages, parallel steps, alternatives, gates, actors, datapoints, artefacts, irreversible
confirmation). It now validates against the v0.2 schema and semantic checks. It cannot be run until RBT-WP-0007 lands.
confirmation). It validates against the v0.2 schema and semantic checks and can be run by the v0.2 engine (`rtut/run2.py`); a UI for it is RBT-WP-0004.
## Acceptance Criteria

View file

@ -91,12 +91,12 @@ step instead of the top of the page.
```task
id: RBT-WP-0004-T06
status: wait
status: todo
priority: high
state_hub_task_id: "261bf74f-f5cd-55bb-9a96-12767418c980"
```
Depends on RBT-WP-0007. The serial guided flow is the main interface: stages with
Unblocked: RBT-WP-0007 (engine) is finished. The serial guided flow is the main interface: stages with
progress, the recommended next action, other ready actions, framing shown at the
start of each stage, and gates shown at stage exit.
@ -104,12 +104,12 @@ start of each stage, and gates shown at stage exit.
```task
id: RBT-WP-0004-T07
status: wait
status: todo
priority: high
state_hub_task_id: "16db09c7-7707-5d17-aab3-5d8eab2c1fce"
```
Depends on RBT-WP-0007. A random-access table of datapoints (with `nil/set/err/ok`
Unblocked: RBT-WP-0007 (engine) is finished. A random-access table of datapoints (with `nil/set/err/ok`
state) grouped or filtered by dimension (actor, role, privilege, subsystem, kind),
editable independently of the flow, plus the artefacts view.
@ -117,12 +117,12 @@ editable independently of the flow, plus the artefacts view.
```task
id: RBT-WP-0004-T08
status: wait
status: todo
priority: high
state_hub_task_id: "23d3f5cc-e844-5077-9a4a-0435c189d98b"
```
Depends on RBT-WP-0007. State transparency at a glance: stage progress, gate states
Unblocked: RBT-WP-0007 (engine) is finished. State transparency at a glance: stage progress, gate states
and waivers, datapoint completeness by dimension.
## Visual design
@ -154,12 +154,12 @@ Confirm button for reversible steps, typed phrase for irreversible ones, per the
```task
id: RBT-WP-0004-T11
status: wait
status: todo
priority: high
state_hub_task_id: "99320417-8261-556b-8932-4947cfd8ce11"
```
Depends on RBT-WP-0007 T06-T07. Choose manual or autopilot per run (with timeout and
Unblocked: RBT-WP-0007 T06-T07 are finished. Choose manual or autopilot per run (with timeout and
push-through controls). In manual mode, an override dialog lists unmet preconditions and
the downstream risk before continuing; deviations show in the overview.

View file

@ -23,7 +23,7 @@ a dimension view and an overview from the same run data.
```task
id: RBT-WP-0007-T01
status: todo
status: done
priority: high
state_hub_task_id: "55dd86f9-5f89-59a2-8a0a-85fbedd95483"
```
@ -35,7 +35,7 @@ canonical order; explain what a blocked item waits for.
```task
id: RBT-WP-0007-T02
status: todo
status: done
priority: high
state_hub_task_id: "571e8685-6eeb-54ce-bb1a-4616ea951f81"
```
@ -47,7 +47,7 @@ how `ok` is reached (check or recorded manual confirmation).
```task
id: RBT-WP-0007-T03
status: todo
status: done
priority: high
state_hub_task_id: "707cca55-24a1-5355-8722-10740c5a2862"
```
@ -59,7 +59,7 @@ exit, record waivers with who, when and why.
```task
id: RBT-WP-0007-T04
status: todo
status: done
priority: medium
state_hub_task_id: "73307bb9-2739-563b-92c7-a034a360b444"
```
@ -70,7 +70,7 @@ state_hub_task_id: "73307bb9-2739-563b-92c7-a034a360b444"
```task
id: RBT-WP-0007-T05
status: todo
status: done
priority: medium
state_hub_task_id: "0933ff4a-8478-50d9-aa99-991948bc2379"
```
@ -82,7 +82,7 @@ engine so no renderer can skip it.
```task
id: RBT-WP-0007-T06
status: todo
status: done
priority: high
state_hub_task_id: "1656597c-3748-5480-b136-e2872436bab4"
```
@ -96,7 +96,7 @@ are never auto-confirmed without a recorded pre-authorization.
```task
id: RBT-WP-0007-T07
status: todo
status: done
priority: high
state_hub_task_id: "0ef958ef-88b6-565b-8797-df730cf11ad3"
```
@ -107,6 +107,15 @@ deviation. Waivers only where a gate declares `waivable`. Autopilot timeouts
(`stop` or `push-through`) record a deviation and, for push-through, move on. A run with
any deviation is flagged and can never exercise a pack.
## Delivered 2026-09-29
`rtut/flow.py` and `rtut/run2.py`, documented in `docs/run-spec.md` (run record v0.2) and covered by
`tests/test_run2.py` (25 tests: readiness and recommendation, parallel items, alternatives, datapoint
states, gates, overrides, waivers, confirmation phrase, autopilot confirm / stop / push-through,
manual-only and pre-authorization, read-only finished runs). Two spec corrections came out of it:
a gate cannot require a datapoint it is itself `confirmed_by` (validator rule), and `run.finalize`
also requires gates passed or waived. Not done here: any UI or CLI for v0.2 runs (RBT-WP-0004).
## Acceptance Criteria
- The old console's stages, gates and datapoints can be expressed and computed