Parts #

URLs: /parts (list), /parts/new, /parts/{id}, /parts/{id}/edit, /parts/{id}/stations (compatible / partial / incompatible stations for the part, with Launch buttons)

A part is a hardware part number — its revision, characteristics (named measurements with limits and units), and pin map. UUTs of this part are tested against it. The Parts entity pages are the browser surface for the project's parts/ directory.

List — /parts #

A table with one row per part that is either configured in the project (a YAML file exists) or has been observed in run history (no YAML file, only referenced by past runs). Columns:

ColumnWhat it shows
StatusConfigured chip (grey) — a YAML file exists. Observed chip (amber) — appears in run history but has no YAML file.
IDPart identifier
NameHuman-readable name
RevRevision string (when set)
CharsCount of characteristics defined on the part; for Observed rows
RunsTotal runs that have tested this part
PassedRun count with outcome passed
FailedRun count with outcome failed
Last RunMost recent run start timestamp, browser-local time

Above the table, a filter card with All / Configured / Observed buttons narrows the view. The active filter is mirrored into the URL so the view is bookmarkable.

A New Part button at the top right jumps to /parts/new. Clicking a Configured row jumps to the detail view at /parts/{id}. Observed rows are not clickable — no YAML exists to display.

When no parts are configured or observed, the table is replaced with an empty-state card explaining the entity and offering a New Part button.

Detail — /parts/{id} #

A header bar (Back + Edit buttons, with a Rev <x> badge when set), one Part Information card (ID, name, description), then a tab strip with three tabs:

TabContent
PinsThe part's pin map (one row per pin: Name, Net, Description)
CharacteristicsOne row per characteristic: name, function, direction, units, limit shape
StationsCompatible stations + the required capabilities the matcher resolved against. Each entry is a card with a View button that opens the matching station detail page.

When the URL points at a missing part, the page shows a "Part not found." card.

Edit — /parts/{id}/edit #

A header bar with the part name + a "Changes auto-saved" hint (no Save button), then a tab strip with three tabs:

TabContent
InfoName / Description / Revision (Part ID is read-only)
PinsPer-pin rows — add, remove, or edit Name / Net / Description
CharacteristicsExisting characteristics show Function / Direction / Units as a read-only summary; the Add Characteristic dialog is where you set those fields on new entries.

New — /parts/new #

Different shape from Edit — a single non-tabbed form with just Part ID, Name, and Description fields. After creation, the page redirects to /parts/{id}/edit so you can add pins and characteristics in their dedicated tabs.

Underlying data #

Parts are stored as YAML — either flat (parts/<id>.yaml) or as a per-part folder (parts/<id>/spec.yaml, with an optional manifest.yaml); both layouts are supported.

For the YAML schema, see Configuration reference → Parts. For the concept, see Concepts → Parts.

Common tasks #

  • Add a characteristic — open /parts/{id}/edit, switch to the Characteristics tab, click Add. The dialog captures name, function, direction, and units. Limits and tolerance bands are set in the part YAML, not in this UI — edit the part YAML (parts/<id>.yaml or parts/<id>/spec.yaml) and the Detail page picks them up on next load.
  • Check which stations can run this part — pre-fill the Launch Test page with ?part=<id> and read the Station hint.

See also #