Skip to content

WU Schema

Work Units are defined in YAML files under docs/tasks/wu/ by default. This path is configurable via software_delivery.directories.wuDir in workspace.yaml.

  • LumenFlow tooling parses and serializes WU YAML using the yaml library.
  • Unquoted YYYY-MM-DD values are treated as strings (no Date coercion).
id: WU-001
title: Add email validation
lane: Framework: Core
type: feature
status: ready
priority: P2
created: 2026-01-21
assigned_to: engineer@example.com

description: |
  Context: Login accepts invalid emails.
  Problem: Users submit bad addresses and fail later.
  Solution: Add client-side validation with tests.

acceptance:
  - Invalid format shows error on blur
  - Valid email allows submission
  - Unit test covers validation

spec_refs:
  - docs/plans/WU-001-plan.md

code_paths:
  - packages/@lumenflow/core/src/validation/email.ts

tests:
  unit:
    - packages/@lumenflow/core/__tests__/email-validation.test.ts
  manual: []
  e2e: []
  integration: []

exposure: backend-only

artifacts:
  - .lumenflow/stamps/WU-001.done
id: WU-001
title: Add email validation
lane: Framework: Core
type: feature
status: ready
priority: P2
created: 2026-01-21
assigned_to: engineer@example.com

description: |
  Context: ...
  Problem: ...
  Solution: ...

acceptance:
  - Criterion 1
  - Criterion 2

spec_refs:
  - docs/plans/WU-001-plan.md

code_paths:
  - packages/@lumenflow/core/src/example.ts

tests:
  manual:
    - Manual test: Verify behavior
  unit:
    - packages/@lumenflow/core/__tests__/example.test.ts
  e2e: []
  integration: []

exposure: backend-only # ui | api | backend-only | documentation
user_journey: |
  Optional user flow for ui/api exposure.
ui_pairing_wus:
  - WU-1234
navigation_path: /settings

artifacts:
  - .lumenflow/stamps/WU-001.done

dependencies: []
risks:
  - Risk 1
notes: ''
requires_review: false

# Optional lifecycle fields (auto-managed)
claimed_mode: worktree
worktree_path: worktrees/framework-core-wu-001
claimed_at: 2026-01-21T12:00:00Z
completed_at: 2026-01-22T09:00:00Z
FieldTypeDescription
idstringUnique identifier (e.g., WU-001)
titlestringShort description
lanestringParent: Sublane (e.g., Framework: CLI)
typeenumfeature, bug, documentation, process, tooling, chore, refactor
statusenumready, in_progress, blocked, done, cancelled
priorityenumP0, P1, P2, P3
createddateYYYY-MM-DD
assigned_tostringAssignee email
descriptionstringContext/Problem/Solution
acceptancestring[]Testable criteria
code_pathsstring[]Required for non-doc WUs
testsobjectAt least one test path for non-doc WUs
exposureenumui, api, backend-only, documentation
spec_refslistRequired for feature WUs
artifactslistUsually includes stamp path

WU specs are validated on:

  • wu:create – creation requires a complete spec (no placeholders)
  • wu:claim – blocks incomplete specs
  • wu:done – enforces completeness and code path validity

Validation checks include:

  • Required fields present
  • No [PLACEHOLDER] markers
  • Code paths and tests for non-doc WUs
  • Exposure and spec_refs (feature)
  • Schema conformity
ready → in_progress → done

         blocked → in_progress → done
StatusMeaning
readyApproved, awaiting claim
in_progressClaimed, being worked on
blockedWaiting on dependency
doneAcceptance met, stamped
cancelledDropped/obsolete

These fields are set automatically by CLI tooling during the WU lifecycle. Do not set them manually.

FieldTypeSet ByDescription
lockedbooleanwu:claimWhether the WU is locked to a worktree
claimed_modestringwu:claimClaim mode (worktree or branch)
worktree_pathstringwu:claimPath to the worktree directory
baseline_main_shastringwu:claimGit SHA of main at time of claim
session_idstringwu:claimAgent session identifier
approved_bystring[]wu:doneApprovers list
approved_atdatetimewu:doneApproval timestamp
requires_human_escalationbooleanwu:createWhether human approval is required
requires_cso_approvalbooleanwu:createCSO approval required
requires_cto_approvalbooleanwu:createCTO approval required
requires_design_approvalbooleanwu:createDesign approval required
escalation_triggersstring[]wu:createConditions that trigger escalation