WU Prep Workflow
As of WU-1223, completing a Work Unit is a two-step process. This guide explains the new workflow.
Why Two Steps?
Section titled “Why Two Steps?”The previous single-step wu:done ran gates on main, which could cause issues with worktree isolation. The new workflow:
wu:prepruns gates in the worktree (where your changes are)wu:donedoes merge and cleanup from main
This ensures gates validate your actual changes, not stale main code.
The Workflow
Section titled “The Workflow”-
Work in your worktree
Complete your implementation, write tests, commit changes.
-
Run wu:prep from worktree
This command:
- Validates you’re in a worktree
- Runs quality gates
- Prints a copy-paste instruction for the next step
-
Run wu:done from main (copy-paste)
Copy the command printed by
wu:prep:This command:
- Validates you’re in main checkout
- Fast-forward merges your changes
- Creates completion stamp
- Removes the worktree
Command Reference
Section titled “Command Reference”wu:prep
Section titled “wu:prep”Prepares a WU for completion by running gates in the worktree.
| Flag | Description |
|---|---|
--id | WU ID (required) |
--docs-only | Run docs-only gates (format, spec-linter) |
--full-tests | Disable tests.unit scoping and run the default incremental/full test gate behavior |
When the active preset supports path-scoped execution, wu:prep uses the current WU’s
tests.unit entries to scope the test gate.
For presets that do not support path-scoped execution, such as dotnet, wu:prep falls back to
the configured default test gate flow instead of trying a JavaScript-specific scoped runner.
When software_delivery.gates.delivery_review.enabled: true, wu:prep can also run the native
delivery_review gate. Auto-run is controlled per client at
software_delivery.agents.clients.<client>.features.delivery_review.auto_run.
Must be run from worktree - errors if run from main.
Native Delivery Review During wu:prep
Section titled “Native Delivery Review During wu:prep”delivery_review is a Software Delivery pack feature, not a vendor overlay. It uses the same
canonical config that briefing and prompt surfaces consume.
wu:prep auto-runs delivery_review only when:
software_delivery.gates.delivery_review.enabledistrue- the active runtime client has
features.delivery_review.enabled: true - the active runtime client has
features.delivery_review.auto_run: true
Direct gate execution with pnpm gates uses the same config, but does not require auto_run: true.
The review writes a stable artifact at .lumenflow/artifacts/delivery-review/<WU-ID>.json with a
portable verdict contract:
PASSpasses gatesPARTIALlogs a warning and continuesFAILblockswu:prep
The result is designed for any host or product to consume later. It does not require
lumenflow-cloud, does not assume a specific agent vendor, and does not rename or overload
wu:verify.
wu:done
Section titled “wu:done”Completes a WU by merging and cleaning up.
| Flag | Description |
|---|---|
--id | WU ID (required) |
--skip-gates | Skip gates (emergency only, requires —reason) |
Must be run from main - errors if run from worktree.
Error Messages
Section titled “Error Messages”Migration Notes
Section titled “Migration Notes”Before WU-1223
Section titled “Before WU-1223”After WU-1223
Section titled “After WU-1223”Escalation Resolution
Section titled “Escalation Resolution”If a WU has escalation_triggers (e.g., sensitive_data, security_p0), wu:done blocks until the escalation is resolved. Use wu:escalate to check status or resolve:
| Flag | Description |
|---|---|
--id | WU ID (required) |
--resolve | Resolve the escalation |
--resolver | Override resolver email (defaults to git config) |
After resolving, wu:done will succeed for escalation-triggered WUs.
Can I skip wu:prep?
Section titled “Can I skip wu:prep?”No. If you run wu:done from main without running wu:prep first, gates won’t have run in the worktree where your changes are. The previous behavior of running gates on main has been removed.
What if gates fail in wu:prep?
Section titled “What if gates fail in wu:prep?”Fix the issues in your worktree, then run wu:prep again. The workflow prevents partial completions.
Do I still need --full-tests for .NET repos?
Section titled “Do I still need --full-tests for .NET repos?”Usually no. For presets such as dotnet, wu:prep already falls back to the configured default
test flow when path-scoped execution is unsupported. Use --full-tests when you want to force the
default incremental/full flow even for presets that support scoped execution.
Does this change skip-gates?
Section titled “Does this change skip-gates?”If you need to use --skip-gates, run wu:done directly from main with the --reason flag. This is for emergency use only when pre-existing failures block completion.
What if gates fail on code I didn’t change?
Section titled “What if gates fail on code I didn’t change?”As of v3.19.0 (WU-2357), wu:prep detects test failures that already exist on main. When all blockers are pre-existing, it prints a ready-to-copy command:
New failures introduced by your changes remain blocking and must be fixed first. See Troubleshooting: Pre-existing gate failures for the full verification workflow.