Restructure the CV Passport demo around workflow stages - #15
Merged
Conversation
The demo is the first thing an unfamiliar reader opens, and its previous layout did not explain the pipeline it demonstrates: there was no workflow position, failures from the experiment and validation calls were reported inside the mapping step, and the origin, transformation, and value-state distinctions the Passport depends on were rendered as unstyled text. All six stages now render from the start with a derived status, so the path from retained bytes to released Package is visible before any action. Stage status, the next action, and every displayed value come only from received API results; the browser still parses nothing, infers nothing, and evaluates no validation rule. Version-conflict reporting now precedes the experiment refresh. A slow or failed refresh previously hid the actionable response and left the passport step stuck in its pending state, which also made the browser acceptance test fail intermittently on unchanged code. No API, schema, provenance, or dependency change.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
The interactive CV Passport demo is rebuilt around an explicit workflow shell. No API, schema, provenance, or dependency change.
frontend/src/workflow/stages.ts) — status and the single next action are computed only from received API results.data_origin,execution_mode, assertion origin, transformation, requirement class, and value state each render as distinct, labelled tokens;supplements_assertion_idis now shown, so a supplemented assertion is legible next to the assertion it supplements. Status is never carried by colour alone.Badge,Callout,KeyValue,Panel,Stage.Why
The demo is the first thing an unfamiliar reader opens. The previous layout gave no workflow position, mis-attributed failures, and left the distinctions the Passport depends on as unstyled text. Several CSS rules no longer matched the API enums they were written for (
origin-source_suppliedagainstsource_file), andbody { min-width: 760px }made the page unusable on a narrow viewport.Backend authority preserved
The browser still parses no scientific value, infers no column semantics or metadata origin, evaluates no validation rule, and converts nothing. Plotted values are passed through unchanged;
line.simplify: falseis now set so Plotly stops dropping collinear points from an evidence view, and hover text repeats the backend's exact decimal strings rather than a float coercion. RHE remains an unvalidated user declaration, and the four evidence concepts stay distinct.Defect fixed
Version-conflict reporting now precedes the experiment refresh. A slow or failed
GET /experiments/{id}previously hid the actionable response and left the passport step stuck in its pending state. This also caused the browser acceptance test to fail intermittently: reproduced on unchangedmainin a scratch worktree at 1 failure in 3 runs, and 4 consecutive passes after the change.Validation
npm run api:checknpm run typechecknpm test -- --runnpm run buildscripts/check_frontend_build.pypytestfrontend adapter, build gate, demo runtime, evidence, OpenAPI contractdocker compose --profile demo up -d --build --waitnpx playwright testlabbridge package verifyChecked at 1440, 1100, 820 and 420 px. Reduced motion verified. Every interactive control has an accessible name, the document has one
h1, and the skip link, railaria-current, table caption and column scopes are in place.Follow-up required, not in this branch
artifacts/cv-passport-demo/built-assets.jsonrecords digests of the previous bundles and no longer describes the shipped frontend;browser-trace.zipandfinal-package.pngin the same artifact depict the old interface. Regenerating them is a separate change, asROADMAP.mdalready notes for other stale artifacts.POST /experimentsand returns HTTP 422experiment_request_invalidwith a raw validation message. Reproduced on unchangedmain.README.mdanddocs/GETTING_STARTED.mddo not mention this.docs/PROJECT_STATUS.mdshould be re-taken against this interface.Known limitations
The JS bundle remains ~1.32 MB, almost entirely Plotly. There is no dark mode. The five-column assertion table scrolls horizontally below roughly 900 px, with an edge-shadow affordance.