feat: add canonical still workflow smoke harness

This commit is contained in:
2026-04-08 22:10:01 +02:00
parent dde04fcaa5
commit 375339eb74
2 changed files with 407 additions and 59 deletions
+32 -1
View File
@@ -1,5 +1,7 @@
# Workflow Delivery Checklist
Parallel execution ownership and stage gates are defined in [`docs/workflows/WORKERS.md`](/home/hartmut/Documents/Copilot/schaefflerautomat/docs/workflows/WORKERS.md).
## Phase Checklist
### Phase 1
@@ -30,7 +32,7 @@
- [x] Node outputs are persisted and reusable
- [x] Graph runtime supports legacy fallback
- [x] `legacy`, `graph`, and `shadow` modes exist
- Progress: Workflow configs now normalize to an explicit execution mode, the editor exposes and persists `legacy`/`graph`/`shadow`, production order-line dispatch can opt into graph mode with hard fallback to legacy on graph failure, and workflow runs now persist their execution mode for safer status tracking and rollout inspection.
- Progress: Workflow configs now normalize to an explicit execution mode, the editor exposes and persists `legacy`/`graph`/`shadow`, production order-line dispatch can opt into graph mode with hard fallback to legacy on graph failure, workflow runs persist their execution mode, `notify` handoff is armed only for authoritative graph renders, and `output_save` is now graph-authoritative for still renders, turntable/video renders, and `.blend` exports while shadow runs remain observer-only.
### Phase 5
@@ -39,11 +41,20 @@
- [ ] All node settings are editable
- [ ] Validate, dry-run, and dispatch are available
- [ ] Runs are visible with node-level status and logs
- [ ] Editor authoring follows family-safe module contracts instead of ad hoc node metadata
### Phase 7
- [x] Output-type create defaults match current backend constraints
- [ ] Output types model workflow invocation profiles
- [ ] Output types validate against workflow family and artifact contract
- [ ] Admin create/edit flow is workflow-first instead of renderer-first
### Phase 6
- [x] Shadow mode parity execution dispatches real graph observer runs alongside authoritative legacy dispatch
- Progress: Workflow runs now expose a comparison endpoint that resolves authoritative legacy outputs and matching shadow artifacts, including file hashes, image dimensions, and mean pixel delta for parity inspection.
- Progress: `scripts/test_render_pipeline.py --workflow-still-smoke --execution-mode shadow` now provisions the canonical still smoke contract, runs preflight, dispatches via the real order/output-type workflow linkage, resolves the resulting workflow run, and prints the shadow comparison verdict.
- [ ] Golden cases pass against legacy outputs
- [ ] Rollout can be enabled per workflow or output type
- [ ] Rollback to legacy is immediate
@@ -62,6 +73,7 @@
- backend node definition
- validated settings schema
- default params
- family and module contract metadata
- executor coverage or explicit disabled status
### QG-3: Legacy Safety Gate
@@ -78,21 +90,40 @@
- media asset creation
- notifications
- core render log fields
- For graph still renders with downstream `output_save`, no duplicate self-published `MediaAsset` is created before the authoritative graph save step completes.
- For graph turntable/video renders with downstream `output_save`, no duplicate self-published `MediaAsset` is created before the authoritative graph save step completes.
- For graph `.blend` exports with downstream `output_save`, no duplicate self-published `MediaAsset` is created before the authoritative graph save step completes.
### QG-5: Editor Gate
- Workflow configs survive save/load roundtrip without loss.
- Invalid graphs are blocked before dispatch.
- All node settings needed for parity are present in the editor.
- Family-specific authoring prevents invalid `cad_file`/`order_line` graph composition.
### QG-7: Invocation Gate
- Output type creation and editing use valid backend defaults.
- Output types bind to workflows through an explicit invocation contract.
- Legacy output types remain renderable during migration.
### QG-6: Rollout Gate
- Shadow mode has been exercised on representative workflows.
- Graph runtime error rate is at or below legacy error rate.
- Rollout and rollback are possible per workflow or output type.
- Canonical still rollout smoke commands:
- `python scripts/test_render_pipeline.py --workflow-still-smoke --execution-mode legacy`
- `python scripts/test_render_pipeline.py --workflow-still-smoke --execution-mode graph`
- `python scripts/test_render_pipeline.py --workflow-still-smoke --execution-mode shadow`
- Rollout approval rule for the canonical still workflow:
- `shadow` must finish with a successful order line and a comparison verdict of `pass`
- `warn` or `fail` means legacy remains authoritative
- `graph` may only be enabled on real output types after the shadow command passes cleanly
## Definition of Done
- `/workflows` is production-capable for authoring and running workflows.
- Legacy functionality is available in graph form with parity coverage.
- Legacy execution still exists as a supported fallback.
- Output types are modeled as workflow invocation profiles, not as loose legacy render presets.