5.9 KiB
5.9 KiB
Workflow Delivery Checklist
Parallel execution ownership and stage gates are defined in docs/workflows/WORKERS.md.
Phase Checklist
Phase 1
- Canonical workflow schema finalized
- Frontend and backend workflow types aligned
- Preset workflow migration helpers added
- Tests added for legacy preset conversion
- Legacy dispatch remains default
Phase 2
- Node registry implemented
- Node definitions API available
- All required nodes have settings schemas
- Editor consumes node definitions from backend
Phase 3
- Missing legacy steps extracted into reusable executors
- Extracted node behavior matches legacy services
- Node-level tests cover success and failure paths
- Progress: Phase 3 parity nodes are extracted, covered by targeted runtime tests, and exercised through the workflow executor with legacy-safe bridge dispatch.
Phase 4
- Workflow context introduced
- Node outputs are persisted and reusable
- Graph runtime supports legacy fallback
legacy,graph, andshadowmodes 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, workflow runs persist their execution mode,notifyhandoff is armed only for authoritative graph renders, andoutput_saveis now graph-authoritative for still renders, turntable/video renders, and.blendexports while shadow runs remain observer-only.
Phase 5
- Editor saves nodes and edges
- Editor roundtrip preserves workflow configs
- 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
- 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
- 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 shadownow 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
Quality Gates
QG-1: Model Gate
- New workflow saves only use canonical schema.
- Backend rejects malformed configs with clear errors.
- Existing preset workflows can be migrated without data loss.
QG-2: Node Gate
- Every editor-visible node has:
- backend node definition
- validated settings schema
- default params
- family and module contract metadata
- executor coverage or explicit disabled status
QG-3: Legacy Safety Gate
- Legacy render dispatch remains callable and unchanged in behavior.
- Existing output types still render without workflow migration.
- Graph failures do not block legacy renders.
QG-4: Parity Gate
- Golden cases match on:
- render status
- generated output file
- media asset creation
- notifications
- core render log fields
- For graph still renders with downstream
output_save, no duplicate self-publishedMediaAssetis created before the authoritative graph save step completes. - For graph turntable/video renders with downstream
output_save, no duplicate self-publishedMediaAssetis created before the authoritative graph save step completes. - For graph
.blendexports with downstreamoutput_save, no duplicate self-publishedMediaAssetis 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_linegraph 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 legacypython scripts/test_render_pipeline.py --workflow-still-smoke --execution-mode graphpython scripts/test_render_pipeline.py --workflow-still-smoke --execution-mode shadow
- Rollout approval rule for the canonical still workflow:
shadowmust finish with a successful order line and a comparison verdict ofpasswarnorfailmeans legacy remains authoritativegraphmay only be enabled on real output types after the shadow command passes cleanly
Definition of Done
/workflowsis 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.