Workflow — UX discovery¶
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-discovery · version 1 · Draft (Draft → InReview → Published → Deprecated, BC-04) |
| Coordinator | persona-extractor · family Planning, Intent Routing & Product Vision |
| Owner service | WorkflowEngineService (BC-38) under Run Control (BC-03) |
| Starts on | readiness bundle readiness-bundle-v1 → RunAccepted from RunControlService when payload.workflowId == 'ux-discovery' (event) |
| Steps | 4 · gated 0 · agents 2 |
| Budget per run | 400000 tokens · cap 40.0 USD · 180 min |
| Descriptor | workflow-definition-v1 · schema |
| Status | target |
Early UX pass on a validated Vision Blueprint: synthesises research, extracts actors, builds personas and seeds journeys and hypotheses as typed artifacts that architecture and the final UX pass read; no blueprint version is produced.
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 |
research |
artifact | research-insights-v1 |
no | ArtifactService.ArtifactStored |
payload.descriptor == 'research-insights-v1' |
- Consistency: members are satisfied only within the trusted tenant and project of the signal; a newer version of any member opens a new correlation and supersedes the open one
- 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 canonical body); a new member version yields a new fingerprint and a new correlation, and the Open one is Superseded; a different body under the same key is a 409 and the correlation is Superseded with reason conflict
- Submit: workflow
ux-discovery(release aliaslatest), model profilereasoning, inputreadiness-bundle-v1, client referencecorrelationId.
Definition¶
flowchart TD
start(("RunAccepted"))
synthesize_research["Synthesise research"]
extract_actors["Extract actors"]
build_personas["Build personas"]
seed_journeys["Seed journeys and hypotheses"]
start --> synthesize_research
synthesize_research --> extract_actors
extract_actors --> build_personas
build_personas --> seed_journeys
done(("WorkflowRunCompleted"))
seed_journeys --> done
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 | Synthesise researchsynthesize-research |
agent | user-researcherskill user-researcher-synthesis-with-evidence |
none | read | — | exponential ×3 (30s) | PT30M | — | Plans and synthesises user research for the vision's audiences: sources with classification, insights with evidence and confidence, observations distinguished from hypotheses. |
| 2 | Extract actorsextract-actors |
agent | persona-builder |
none | read | synthesize-research | exponential ×3 (30s) | PT30M | — | Lists the actors and roles the blueprint implies, with their goals and permissions, each citing the insights that evidence it. |
| 3 | Build personasbuild-personas |
agent | persona-builderskill persona-builder-persona-extraction-and-validation-ux-001 |
none | sandbox | extract-actors | exponential ×3 (30s) | PT30M | — | Writes one persona per actor with goals, pain points, empathy map, accessibility needs and locales; the id, name, role, goals and pain points project into the UX Blueprint's Persona shape (UX-001). |
| 4 | Seed journeys and hypothesesseed-journeys |
agent | persona-builderskill persona-builder-journey-seeds-per-persona |
none | sandbox | build-personas | exponential ×3 (30s) | PT30M | — | Seeds one or more journeys per persona (goal, trigger, steps, adverse branches, screen hints) and records the UX hypotheses with their validation plan. |
Step contracts¶
| Step | Inputs (name ← source) | Outputs (name: descriptor) |
|---|---|---|
synthesize-research |
vision-blueprint ← input.vision-blueprintresearch-plan ← input.researchfeedback ← input.research |
research-insights: research-insights-v1 |
extract-actors |
vision-blueprint ← input.vision-blueprintresearch ← steps.synthesize-research.research-insights |
actors: artifact-v1 |
build-personas |
vision-blueprint ← input.vision-blueprintresearch ← steps.synthesize-research.research-insightsactors ← steps.extract-actors.actors |
personas: personas-v1 |
seed-journeys |
vision-blueprint ← input.vision-blueprintresearch ← steps.synthesize-research.research-insightsactors ← steps.extract-actors.actorspersonas ← steps.build-personas.personas |
journey-seeds: journey-seeds-v1hypotheses: ux-hypotheses-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¶
No approval is required: every step runs in the read or sandbox class; the agents' own tool calls still carry their classes (D21). 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 | research | research-insights-v1 |
no |
| out | research-insights | research-insights-v1 |
yes |
| out | personas | personas-v1 |
yes |
| out | journey-seeds | journey-seeds-v1 |
yes |
| out | hypotheses | ux-hypotheses-v1 |
yes |
Starts on RunAccepted from RunControlService when payload.workflowId == 'ux-discovery'; emits 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-07 Authorized context assembly with provenance · FR-08 Validated artifacts with lineageFUX: FUX-11 Software Factory journey · FUX-12 Documented viewsADRs: ADR-0014, ADR-0024, ADR-0026 · ADR index
Replaces ux-personas as the early UX pass (ADR-0026, D60); the final pass is ux-blueprint. Draft until an evaluation gate (ADR-0021) and a review publish it as a BC-04 asset release.