Workflow — UX Blueprint¶
Generated from the architecture model
This page is rendered from model/**/*.yaml by tools/docs_model during mkdocs build. Edit the YAML, not this page; hand-written design lives on the linked service, platform and plane pages.
| Workflow id | ux-blueprint · version 1 · Draft (Draft → InReview → Published → Deprecated, BC-04) |
| Coordinator | ux-blueprint-coordinator · family Planning, Intent Routing & Product Vision |
| Owner service | WorkflowEngineService (BC-38) under Run Control (BC-03) |
| Starts on | readiness bundle ux-input-bundle-v1 → RunAccepted from RunControlService when payload.workflowId == 'ux-blueprint' (event) |
| Steps | 8 · gated 0 · agents 1 |
| Budget per run | 600000 tokens · cap 60.0 USD · 240 min |
| Descriptor | workflow-definition-v1 · schema |
| Status | target |
Final UX pass on the typed, aligned input bundle: journeys and screens bound to the Service Blueprint's operations, the UX Blueprint version validated with a receipt, the coverage matrix against the agreed stories and the Claude Design handoff pack.
Authored design, Draft (D54, D57)
These definitions were authored from the coordinator cards as design assumptions. None is published, evaluated or has run; agents are named by id as design bindings, not as tested integrations.
Activation (readiness bundle)¶
The Workflow Engine's readiness correlation (BC-38, ADR-0026) joins the signals below per project and bundle fingerprint and submits one run through Run Control's SubmitRun; the run then starts on RunAccepted like every other definition. Nothing starts on a raw event.
| Slot | Kind | Descriptor | Required | Satisfied by | Predicate |
|---|---|---|---|---|---|
vision-blueprint |
blueprint (Vision) | blueprint-vision-v1 |
yes | BlueprintService.BlueprintValidated |
payload.kind == 'Vision' and payload.passed == true |
service-blueprint |
blueprint (Service) | blueprint-service-v1 |
yes | BlueprintService.BlueprintValidated |
payload.kind == 'Service' and payload.passed == true |
alignment-memo |
approval | alignment-memo-v1 |
yes | RunControlService.ApprovalDecided |
payload.state == 'Approved' and payload.proposalKind == 'artifact' and payload.proposalDescriptor == 'alignment-memo-v1' |
requirements |
artifact | requirements-v1 |
yes | ArtifactService.ArtifactStored |
payload.descriptor == 'requirements-v1' |
backlog |
artifact | backlog-v1 |
yes | ArtifactService.ArtifactStored |
payload.descriptor == 'backlog-v1' |
personas |
artifact | personas-v1 |
yes | ArtifactService.ArtifactStored |
payload.descriptor == 'personas-v1' |
journey-seeds |
artifact | journey-seeds-v1 |
no | ArtifactService.ArtifactStored |
payload.descriptor == 'journey-seeds-v1' |
research-insights |
artifact | research-insights-v1 |
no | ArtifactService.ArtifactStored |
payload.descriptor == 'research-insights-v1' |
- Consistency: alignment-memo.agreedVersions must equal the member references of vision-blueprint, requirements, backlog and personas (id, version, hash); the memo is approved only after discovery produced the personas (D63); a mismatch supersedes the correlation instead of submitting
- Fingerprint: sha256 over the sorted list of slot
version:hash of every satisfied required and optional member
- Idempotency key:
{scope}:{operation}:{workflowReleaseId}:{bundleFingerprint} - Deduplication: the same key returns the existing run (SubmitRun: same Idempotency-Key, same input hash); a new member version yields a new fingerprint and a new correlation, and the Open one is Superseded; a different input under the same key is a 409 and the correlation is Superseded with reason conflict
- Submit: workflow
ux-blueprint(release aliaslatest), model profilereasoning-high, inputux-input-bundle-v1, client referencecorrelationId.
Definition¶
flowchart TD
start(("RunAccepted"))
map_journeys["Map journeys and screens"]
draft_ux_blueprint["Draft the UX Blueprint"]
submit_version[["tool: Submit the Draft version"]]
validate[["tool: Validate the blueprint"]]
check_valid{"Validation passed?"}
coverage_matrix["Coverage matrix"]
check_coverage{"Coverage complete?"}
handoff_pack["Handoff pack"]
start --> map_journeys
map_journeys --> draft_ux_blueprint
draft_ux_blueprint --> submit_version
submit_version --> validate
validate --> check_valid
check_valid --> coverage_matrix
coverage_matrix --> check_coverage
check_coverage --> handoff_pack
done(("WorkflowRunCompleted"))
handoff_pack --> done
check_valid -. "retry up to 2" .-> draft_ux_blueprint
check_coverage -. "retry up to 1" .-> map_journeys
classDef gated stroke:#B45309,stroke-width:2px
Shapes: rectangle = agent attempt · double rectangle = tool call · stadium = human decision · diamond = condition evaluated by the engine over recorded outputs · parallelogram = fan-out or join · circle = timer · cylinder = sub-workflow · flag = compensation. A thick amber border marks a gated step; a dashed edge is a bounded on_false loop.
Steps¶
| # | Step | Kind | Runs | Gate | Class | Depends on | Retry | Timeout | Compensation | What it does |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Map journeys and screensmap-journeys |
agent | ux-designerskill ux-designer-journeys-and-screens-with-states |
none | read | — | exponential ×3 (30s) | PT30M | — | Orders journeys as screen steps with decision points and adverse branches from the personas, journey seeds, backlog stories and the Service Blueprint's operations. |
| 2 | Draft the UX Blueprintdraft-ux-blueprint |
agent | ux-designerskill ux-designer-state-families-and-status-palette |
none | sandbox | map-journeys | exponential ×3 (30s) | PT45M | — | Writes the UX Blueprint document: personas projection, journeys, screens with read models and commands, state families, design system, accessibility and locales; metadata.dependsOn names the bundle's Vision and Service versions (UX-005). |
| 3 | Submit the Draft versionsubmit-version |
tool | blueprint-submit-version |
none | shared-write | draft-ux-blueprint | fixed ×2 (10s) | PT2M | — | Stores the document as a project-scope Draft BlueprintVersion of its kind (idempotent on document hash); a shared write that the project policy may gate; Draft versions are autonomous by default (D64). |
| 4 | Validate the blueprintvalidate |
tool | blueprint-validate |
none | sandbox | submit-version | fixed ×2 (10s) | PT5M | — | BlueprintService validates the version against blueprint-ux-v1 and rules UX-001 to UX-005 and its rule set and returns a receipt; BlueprintValidated is emitted with passed true or false. |
| 5 | Validation passed?check-valid |
condition | engine | none | read | validate | none | PT1M | — | Engine condition over the recorded receipt; findings go back to the draft step up to twice, then the run fails with the report. Condition: steps.validate.validation-receipt.passed == true. On false: back to draft-ux-blueprint up to 2 time(s) with steps.validate.validation-receipt. |
| 6 | Coverage matrixcoverage-matrix |
agent | ux-designer |
none | sandbox | check-valid | exponential ×3 (30s) | PT30M | — | Maps every backlog story and requirement of the bundle to the personas, journeys, screens and operations of the validated blueprint; names the gaps. |
| 7 | Coverage complete?check-coverage |
condition | engine | none | read | coverage-matrix | none | PT1M | — | Engine condition over the recorded coverage matrix: unresolved gaps (gaps minus accepted deferrals naming their authority) must be zero; otherwise the journeys are reworked once more (UX-006). Condition: steps.coverage-matrix.coverage-matrix.summary.unresolvedGaps == 0. On false: back to map-journeys up to 1 time(s) with steps.coverage-matrix.coverage-matrix. |
| 8 | Handoff packhandoff-pack |
agent | ux-designerskill ux-designer-handoff-pack-master-brief-packs-fixtures-accepta |
none | sandbox | check-coverage | exponential ×3 (30s) | PT30M | — | Master brief, per-work-area packs, fixtures and acceptance for Claude Design, bound to the validated blueprint version and its coverage matrix. |
Step contracts¶
| Step | Inputs (name ← source) | Outputs (name: descriptor) |
|---|---|---|
map-journeys |
vision-blueprint ← input.vision-blueprintservice-blueprint ← input.service-blueprintpersonas ← input.personasrequirements ← input.requirementsbacklog ← input.backlogalignment-memo ← input.alignment-memojourney-seeds ← input.journey-seedsresearch-insights ← input.research-insights |
journeys-draft: artifact-v1 |
draft-ux-blueprint |
vision-blueprint ← input.vision-blueprintservice-blueprint ← input.service-blueprintpersonas ← input.personasrequirements ← input.requirementsbacklog ← input.backlogalignment-memo ← input.alignment-memojourney-seeds ← input.journey-seedsresearch-insights ← input.research-insightsjourneys-draft ← steps.map-journeys.journeys-draft |
ux-blueprint-draft: blueprint-ux-v1 |
submit-version |
document ← steps.draft-ux-blueprint.ux-blueprint-draft |
version-ref: blueprint-version-ref-v1 |
validate |
version-ref ← steps.submit-version.version-ref |
validation-receipt: blueprint-validation-receipt-v1 |
coverage-matrix |
vision-blueprint ← input.vision-blueprintservice-blueprint ← input.service-blueprintpersonas ← input.personasrequirements ← input.requirementsbacklog ← input.backlogalignment-memo ← input.alignment-memojourney-seeds ← input.journey-seedsresearch-insights ← input.research-insightsux-blueprint ← steps.draft-ux-blueprint.ux-blueprint-draft |
coverage-matrix: ux-coverage-matrix-v1 |
handoff-pack |
vision-blueprint ← input.vision-blueprintservice-blueprint ← input.service-blueprintpersonas ← input.personasrequirements ← input.requirementsbacklog ← input.backlogalignment-memo ← input.alignment-memojourney-seeds ← input.journey-seedsresearch-insights ← input.research-insightsux-blueprint ← steps.draft-ux-blueprint.ux-blueprint-draftcoverage-matrix ← steps.coverage-matrix.coverage-matrixvalidation-receipt ← steps.validate.validation-receipt |
handoff-pack: ux-handoff-pack-v1 |
Every mapping names its source (input.* a workflow input, steps.* an ancestor's recorded output, bundle.* a readiness member) and the validator checks that every required input of the step's agent is mapped and that descriptors agree. |
Gates and approvals¶
- shared-write: creating a Draft blueprint version in project scope is autonomous unless the project policy (BC-20) gates blueprint drafts, in which case an approval bound to the document hash is requested (D64) Compensation steps run in reverse order of the succeeded steps on failure after the last checkpoint; a step without a compensation leaves its sandbox output in place and the run ends Failed with the evidence (ADR-0014, recovery not replay).
Inputs, outputs and events¶
| Direction | Name | Descriptor | Required |
|---|---|---|---|
| in | vision-blueprint | blueprint-vision-v1 |
yes |
| in | service-blueprint | blueprint-service-v1 |
yes |
| in | alignment-memo | alignment-memo-v1 |
yes |
| in | requirements | requirements-v1 |
yes |
| in | backlog | backlog-v1 |
yes |
| in | personas | personas-v1 |
yes |
| in | journey-seeds | journey-seeds-v1 |
no |
| in | research-insights | research-insights-v1 |
no |
| out | ux-blueprint | blueprint-ux-v1 |
yes |
| out | coverage-matrix | ux-coverage-matrix-v1 |
yes |
| out | handoff-pack | ux-handoff-pack-v1 |
yes |
| out | validation-receipt | blueprint-validation-receipt-v1 |
yes |
Starts on RunAccepted from RunControlService when payload.workflowId == 'ux-blueprint'; emits BlueprintValidated, ArtifactStored, plus the engine's WorkflowRunStarted, StepReady, StepRunStateChanged and WorkflowRunCompleted / WorkflowRunFailed and Run Control's run and attempt events (ADR-0014).
Decisions and traceability¶
FR: FR-06 Exact-version approvals · FR-07 Authorized context assembly with provenance · FR-08 Validated artifacts with lineageFUX: FUX-11 Software Factory journey · FUX-12 Documented viewsXL: XL-08 Evaluate before promotionADRs: ADR-0014, ADR-0024, ADR-0026 · ADR index
The final UX pass of the requirements-to-UX handoff (ADR-0026, D59, D60): activated by the Workflow Engine's readiness correlation, never by a raw event; replaces ux-personas together with ux-discovery.