feat: add canonical still workflow smoke harness
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user