UILITE · The 0.0.1 lite boards: review, stages and Thomas's design requests¶
Running 2026-10-28 · branch autopilot/ui-lite-review · doc review approve 12/14 on 722af76, its items applied
- Findings: UX-292 to UX-304, the re-check UX-305 to UX-314 and the final review UX-315 to UX-324, all applied.
- Thomas: both stages and processes in 0.0.1; four screens with Home; logos; collapsible sections; the complete Spectio logo in the app bar on desktop and phone (a first reading, favicon only, corrected).
![UILITE figure, before and after. Before, at 1abd5dd: the lite run detail of a running nf-core/rnaseq run, header "stage 3 of 4", four stage cards named by hand (Preprocessing, Alignment & QC, Quantification, Reporting) that no endpoint served, since the API had /processes only, above a separate processes table with a Stage column of labels, 6 of 14 processes shown. After: header "3 of 8 stages done · 4 running · 524 / 803 tasks", the eight stages the stage-detection spike found for nf-core/rnaseq 3.27.0, in order, each with a Done, Running or Pending word and icon, a Detected badge, a bar and "n of m", the fourth, Bam markduplicates picard, open to its processes; notes: a process in no stage goes under "Not in a stage", with no stage the run detail shows the flat list, the state words map to run_stages.state (Pending not_started, Running running, Done completed, Failed failed, Not run skipped), processes are keyed by their fully qualified name and shown by their last segment, and /stages returns {items: []} for a run with no stage, P1 Task 27 filling run_stages](../../../assets/diagrams/uilite_stages_dark.png#only-dark)
Left: LiteRunDetail on autopilot/integration at 1abd5dd. Right: this branch. Sources are named under the figure. The stages are the stage-detection spike's output for nf-core/rnaseq 3.27.0 (tests/pipelines/real/stages/expected/, merged with APPLY6); the counts are fixture data.
This step is outside pipeline.yaml: a ux-reviewer pass on the 0.0.1 lite boards, applied with Thomas's answers of 2026-10-28 (review record, decision log).
What changed¶
Part 1, commit 8bba74e: UX-292 to UX-304. The boards of page 0.0.1 lite got the four screens (Home kept), stages with their processes, runs started from a terminal, the head facts of P1 Task 20, live refresh over SSE, the missing states and the phone boards. P1 Task 18 gained the read endpoints the boards need. Details per finding: review record.
Part 2, the second commit: the doc review, the re-check and Thomas's design requests.
- ui-spec §4.4, a dated note, the one owner of the 0.0.1 stage presentation. What the run detail shows, with or without stages; the header "n of m stages done · k running" (UX-306); one state-word rule from the task counts, with Pending including Submitted (UX-305); a word for each api §7
run_stages.state, Stopped for afailedstage on a cancelled run; processes keyed by their fully qualified name and shown by their last segment (UX-307). After APPLY6 merged, the note links ui-spec §5.1 and §5.1.1 for where stages come from and their stored state, and holds no mechanism. - ui-spec §2, a dated note. The 0.0.1 app bar starts with the complete Spectio logo, emblem and wordmark, on desktop and phone; the emblem alone is the favicon. A first version said "favicon only", from a misread request; Thomas corrected it the same day.
- P1.
- Assumption 6, merged with APPLY6's: its mechanism text (declared, detected, none; Task 27), and the link to the §4.4 note for state words, the header line, badges, the "Not in a stage" group, process names and the empty-state line.
- Task 18:
/stagesis a subset ofrun_stages:{id, position, name, source, state, task_counts};/processesitems carrystage_id, andprocessis the fully qualified name;/versiongainsexecutor(UX-311);GET /runsgainssort=-ended_at(UX-312);- new tests
test_stages_ordered,test_stages_empty,test_stages_sourceandtest_runs_sort_ended; - "Snakemake declares none" is marked [to be validated].
- Task 20: the run-detail bullet is split in five; the smoke covers home at
/and both the stage view and the flat list;stateWord.tsimplements the §4.4 rule. - Task 24 and Done when:
spectio-openopens home.
- One clause and a link to the §4.4 note in mvp-0.0.1 §2, dev-env §15.1, the api §5 note (which also names the
/stagessubset andsort=-ended_at; the catalogue gains theended_atsort key), the decision log anddesign/README.md. - mvp-0.0.1 §2 embeds the four lite screenshots.
- Decision log. Thomas's design request quoted; the Changed line extended.
next-phase.md: a dated note on the P1 prompt's "three screens".- Boards.
- The engine and pipeline logos (Nextflow, Snakemake, nf-core).
- A light icon on each section, each section collapsible, in the run detail, home and launch.
- The complete Spectio logo in
LiteTopbarandMLiteTopbar(two rows on the phone). - The examples rebuilt on the stage-detection spike's real output (
tests/pipelines/real/stages/expected/, merged with APPLY6): nf-core/rnaseq 3.27.0 with STAR and Salmon, eight stages, 67 processes, 803 known tasks for 20 samples; mosaicatcher-pipeline v2.5.1, eight stages, 347 jobs for 96 cells. Stage names and membership verbatim; counts are fixture data, the same on every board. - The state rule, and fully qualified names as accessible names.
- Phone wrapping, padding and a "Now" line.
- Served facts only.
- Lists newest first.
- Log times that match the run.
- Legend sections for the stage words and the stage sources.
Part 4, the fourth commit: the final review of 722af76, UX-315 to UX-324, and the doc review's items (review record).
- ui-spec §4.4 note.
- A stage is Done only when every process is.
- One meaning of Stopped: started and not finished when the run ended, by Cancel or after another stage failed (UX-320).
- Duplicate short names told apart by their scope, and "0 tasks yet" (UX-316).
/processesitems andstage_id.- A new item, "Open sections" (UX-318).
- ui-spec §4.3, a dated note on the logo line: pipeline mark next to the name, engine mark in the Engine fact (UX-323).
- P1. Task 17:
workflows:inspectreturnsversionandengine_version(UX-296). Task 18: the/stagesidisrun_stages.stage_id; the same in the api §5 note. - Boards.
- The terminal run shows the eight detected stages (UX-315).
- Every stage matches the detector file, 67 processes (UX-316).
- Titled sections are an
h2with a toggle button; decorative bars hidden (UX-317). - The refused submit drawn in
LiteStatesRun(UX-318). - Home counts and the phone home's six active and five finished runs (UX-319).
- The launch groups from the schema, 11 groups and 114 parameters (UX-321).
- The phone bar title is the
h1, sticky tabs, a 48 px bar on home (UX-322). - No spike branch in user copy (UX-324).
- Doc items: the decision log's Changed line, this page's alt text and banner, the "Now" line in mvp-0.0.1, the figure's sources,
design/README.md.
Why¶
Thomas, 2026-10-28, wants both the stages and the processes in 0.0.1 ("les 2 dans 0.0.1"), a home screen, and asked for the logos, light icons and collapsible sections; his sentence on the Spectio logo was first misread as "favicon only", and he corrected it: the complete logo in the app bar, on desktop and phone. The doc review of 8bba74e found the stage presentation described in seven places, state words with no mapping to the API, a /stages shape that did not match api §7, and no Progress page. The re-check found state words that contradicted their counts, colliding short process names, and facts no endpoint serves.
Evidence¶
-
Docs gate,
python3 tools/docs/check.pyon this branch, after the fourth commit's changes:build: progress hook output checked on 3 pages mermaid: 5 blocks checked diagrams: 29 scripts re-run, 58 SVGs compared media: 142 outputs in the manifest progress: 42 pages checked docs gate: 0 failure(s) -
Strict build:
uvx --with mkdocs-material mkdocs build --strictexits 0. The anchors linked from the plan and the specs exist in the built pages:44-run-detailand2-main-navigation(ui-spec),5-endpoint-catalogue-api-v1(api),2026-10-28-001-has-four-screens-home-kept(decision log). - Frontmatter:
python3 tools/claude/check_frontmatter.pyreports 0 problems. - Boards:
LiteRunDetail,LiteRunDetailSnakemake,LiteRunTasks,LiteHome,LiteLaunch,LiteCancelDialog(1440 × 1180) andMLiteRunDetail,MLiteCancelSheet(390 × 844) rendered withnode tools/canvas/render.jsand looked at; the run detail also at 1440 × 1700, to read its last stages and caption. - Logo correction: every lite board with
LiteTopbar(1440 × 1180) and every phone board (390 × 844) rendered again after the complete logo went back into the app bar, and looked at: the logo and the breadcrumbs on one line on desktop; on the phone the logo and the login node above the back arrow and the title, with nothing hidden under the 104 px header. - One set of numbers: the stage rows, the header, the chips, the Tasks filters, home and the runs list all read 524 succeeded, 64 running, 215 pending, 7 retried, 803 known tasks;
grep -rn "524 / 824\|3 of 5 stages" design docsprints only this line. - Final review: every changed lite board rendered (desktop 1440 × 1180, phone 390 × 844) and looked at, the phone home, run detail and launch also scrolled; the stage rows checked against
rnaseq-3.27.0_star_salmon_detected.json(67 processes) by the generator, and the totals against the fixture: 803 tasks for the launched run, 384 for the terminal run (288 succeeded, 48 running, 48 pending). - No stale wording:
grep -rn "spike, pending" docs designprints only this line. - Before:
git show 1abd5dd:design/ui-canvas/LiteRunDetail.dc.html. After:git diff 1abd5dd -- docs design tools.
Figures and media¶
uilite_stages(above), new:tools/diagrams/uilite_stages.py, entryuilite-stagesindocs/assets/media.yaml. Rendered light and dark; both PNGs opened and checked for overlaps.- Screenshots
lite-run-detail,lite-launch,lite-runsandlite-run-detail-phone, regenerated withpython3 tools/media/shots.py run --shot <id> --theme light(entryui-shots); shown in mvp-0.0.1 §2. tools/canvas/render.jsalso looks for logos indocs/assets/logos/.
Findings and open questions¶
- Spike output used: the boards follow the detector files in
tests/pipelines/real/stages/expected/, merged with APPLY6 (f8fa949); if Task 27 changes a stage name or a merge, the boards follow it. The fully qualified process name is verified by the spike (ui-spec §5.1.1). [to be validated]: whether Snakemake declares a pipeline version. - Open: a stage interrupted by Cancel or by another stage's failure is stored
failedand shown Stopped (UX-320), because neither api §7 nor ui-spec §5.1.1 has a state for an interrupted stage. - [to be validated]: whether an
h2inside<summary>loses its heading role in screen readers (the reason given for UX-317; the boards no longer rely on it). - Doc review item 14 stays as it is, as the coordinator decided.
- Coordination: APPLY6 owns ui-spec §5.1 and §5.1.1, checking-scenarios §12, P1 Task 27, and the Stages rows of dev-env §15.1 and mvp-0.0.1 §2; this branch merged
autopilot/integrationafter APPLY6, kept both sides, and only linked the §4.4 note from those rows.