Metadata

The catalogue of fields a run captures at Start (text, number or a composed sequential identifier), the counter behind a sequential field, and each unit's code and counter states.

View as Markdown

Metadata is the model's catalogue of the fields a run captures at Start: a serial number, a lot, an operator name, a composed identifier. A field is defined once on the model so it means the same thing on every unit, and history filters and reports stay consistent; each procedure selects the subset it prompts, and the values are frozen into the run file. The Metadata screen (Process > model > Definition > Metadata) carries the catalogue on top, the units under it, and beside them the settings of the picked field or the picked unit. The header reads "The catalogue of fields captured at run start, and what each unit stamps with them." and counts the fields and the units.

Reading needs Look at models; every edit needs Manage process and an unlocked station. The screen wears the shape every Definition screen shares (see Definition).

Model definition: the catalogue

The head reads "The catalogue. It holds for every unit: a field added or removed here changes every unit's table." and carries Field, which appends a row named after the first free "Field N" (greyed while the station is locked; not drawn without Manage process).

Column What it is Values / default Effect
Name "Every run records its value under this name." Also the staging point Process.<Model>.<Unit>.Next.<Name> the next Start consumes. Free text; "Field N" at creation. A safe rename: the preview line says how many locations read the address, and the commit rewrites them and carries any value already staged on a unit over to the new name. Refused for a name whose segment another field maps to ("Metadata field name 'X' maps to address segment 'Y', already used by 'Z'.") and for the reserved name of the staged procedure's point ("Metadata field name 'Procedure' maps to reserved address segment 'Procedure'.").
Kind "Where a run's value for this field comes from." Text ("The operator types it at run start."), Number ("The operator types a number at run start."), Sequential ("The app composes it and reserves the value when the run is accepted."); Text. Switching to Sequential adds the mandatory Counter part to the composition.
Required Whether every procedure prompts the field ("Prompted by every procedure on this model, locked into their metadata checklist. Not just required if a procedure asks for it."). on / off; off. On: "Every procedure of this model prompts for it, and no run starts without it." Off: "Only the procedures that ask for it prompt for it."
Counter scope Sequential only: what the counter is counted per. Whole Model, Per Unit, Per Procedure, Per Procedure + Unit; Whole Model. Changing it asks first: "Change 'Serial' to one counter per Unit? One or more counters have already emitted values. Current Last/Next states are not converted or distributed. New states start from the configured initial value and must be reviewed before the next run."
Next identifier Sequential only: the identifier the composition would emit next, with sample date and codes. Read-only. See the preview below.
Move field up and Move field down (row) Move the field one place in the catalogue. Greyed at the ends of the list. A station that refuses the write puts the row back where it was.
Remove (row, danger ink) Removes the field and its selection from every procedure. Confirms "Delete 'X'? This removes the field and its use in every procedure of this model. This cannot be undone."

Fields are listed, and prompted at Start, in the order the catalogue holds them, which is the order they were added until the row commands change it.

The settings column for a field

Picking a row opens it in full ("Metadata · Serial number"): Name, Kind and Required, each over the line saying what it decides and what the value in force produces. A Sequential field adds its composition and its counter under them.

Preview

The PREVIEW block shows the identifier the field would emit next, from the counter's current Next value, the first unit code and procedure code found on the model (or UNIT and PROC while none is set) and today's date: "Sample date and codes. The value is reserved when the run is accepted." A configuration the field refuses reads "Preview unavailable", and the reason stands as a note under the preview ("Sequential metadata 'X' must contain exactly one counter part.", "… needs between 1 and 18 counter digits.", "… has an initial value outside 0–999999.", "… has a Year part that must use two or four digits.").

The counter

Field What it is Values / default Effect
Counter scope The sharing boundary of the counter state: one state for the whole model, one per unit, one per procedure, or one per procedure and unit pair. The four scopes; Whole Model. A scope change creates fresh states from the initial value and never converts or redistributes old ones (the confirmation above).
Initial value Where every newly created state starts, and where the counter wraps to after its maximum. 0 up to the digit maximum; 1. Editing it never resets an existing state.
Counter digits The printed width, and therefore the upper bound: six digits count to 999999. 1 to 18; 6. Reducing it below a state's current Next is refused at save: "Counter digits for 'Serial' cannot represent its current next value 1200000. Adjust Next before reducing the digit count."
Pad counter with leading zeros Whether the counter part is left-padded to the digit count. on / off; on. 000042 against 42.

Composition

The identifier is an ordered list of parts, culture-independent. The Composition head carries a kind picker and Part, which appends a part of that kind.

Part Emits Settings
Fixed text Literal text, separators included. A text field (placeholder "separator or fixed text"; a new part starts as -).
Year The local calendar year. 2 digits or 4 digits (4 for a new part).
Month "Two-digit local month".
Day "Two-digit local day".
Counter "The field's reserved counter". Exactly one, added automatically when the field becomes Sequential; it cannot be removed and its kind cannot be changed.
Unit code "Code configured on the Unit".
Procedure code "Code configured on the Procedure".

Each part row carries its index, its kind (a combo for every kind but Counter), its setting, and Move part up, Move part down and Remove part. Where a composition uses a Unit or Procedure code, a Start on a unit or procedure whose code is blank is refused ("Sequential metadata 'X' needs a Unit code. Configure it in Unit → Metadata.").

The shared Model counter

For a field counted per Whole Model the column ends with a Shared Model counter row, "All Units and Procedures": LAST EMITTED (the last value actually reserved, or a gap before the first Start) and Next (the value the next accepted Start reserves). Next is editable, including backwards; the row warns "May repeat an identifier" while Next is not above Last, and the head repeats "Lowering Next may repeat an identifier already emitted." A value outside 0 to the maximum is refused: "Next value for 'Serial' must be between 0 and 999999." Next is disabled while the station is locked and until the state exists (states are created when the model is saved).

Counters counted per Procedure stand on the procedure's own page; counters per Unit and per Procedure + Unit stand under the unit, below.

Per unit: the units list

The bottom area lists the units, with Manage units at the far end of its head.

Column What it shows
Unit The unit's name.
Code The unit's code, "No code" while blank, or "No code yet" in the caution ink while a sequential field of the model composes the Unit code.
Counters "No counters", "1 counter" or "N counters": one per field counted per Unit (a required field, or one some procedure selects), plus one per applicable procedure for each field counted per Procedure + Unit.

The settings column for a unit

Picking a unit opens what that bench stamps ("Units · Unit 1"):

Field What it is Effect
Unit code "Shared by every sequential field that composes “Unit code”. Renaming the unit never changes it." Placeholder "optional until used". The same code as the Units table on the model's page; trimmed, blank means none.
Counter state rows One row per counter state the unit holds: the field's name with the context "This unit" (Per Unit) or the procedure's name (Per Procedure + Unit); LAST EMITTED and an editable Next, as above. "Last is never rewritten. Lowering Next or wrapping after the maximum may repeat an identifier." With none: "No sequential field of this model counts per unit, so this bench holds no counter state."

How a sequential value is reserved

At an accepted Start, after every other validation passed (manual fields, required codes, bindings, unit availability, source locks), every sequential field of the run reserves its number in one immediate transaction; concurrent Starts can never observe the same Next. The formatted text, leading zeros included, is frozen into the run: later edits to the field, the codes or the counters never rewrite it. A crash inside that small window may leave a gap, but a number is never reused automatically. Snapshots and standalone evaluations prompt no metadata and reserve nothing. On a unit's surfaces a sequential field reads as a prediction of its next value and is not typed.

What this screen does not do

  • It picks no subset: which fields a run prompts is chosen on each procedure; only Required forces a field on every procedure.
  • It types no value: values are entered at Start on the unit's panel or a dashboard, or supplied by Automation.
  • It does not convert counter states across a scope change.
  • It rewrites no frozen value: a run keeps what it stamped.