# Labels and reports

> The Report and Labels dossiers of a run: every registration and artifact with its delivery attempts, the queue picker, Open PDF, Resend report, Print and Reprint, and the two ways to record a new document.

The record keeps the documents produced from the run in two dossiers, **Report** and
**Labels**, between the judged criteria and the occurrences. Both are evidence first and a
command surface second: every artifact lists every delivery attempt with the queue it went
to and its durable status, and neither ever calls a queued document "printed". Both carry
the same pair of gestures, told apart only by the medium: recording a **new** document from
the run's frozen evidence, and **reissuing** a recorded one without composing anything
again. Viewing follows View histories; the verbs name their own gates below.

A permission the role does not carry and a moment that refuses are two different things, and
the dossiers answer them differently. A role without one of the permissions below is drawn
none of the controls it covers: the send row, its queue picker and the block that records a
new document are simply absent, a banner at the head of the dossier says why ("Label actions
unavailable", "Report actions unavailable"), and every artifact, resolved value and delivery
attempt stays readable, which is what that role came for. A control that only the moment
refuses stays where it is, greyed, saying on itself what is missing.

Both dossiers offer a queue picker per artifact to the roles that may send one, seeded with
the queue in force on the run's unit for that document's kind and boundary
([Printers](process-printers)) when that queue is installed, otherwise "Choose an installed
queue". With no queue installed a line says so, and the picker and the verb stand greyed on
"No Windows printer queue is installed on this station."

## Statuses {#statuses}

| Status | Meaning |
| --- | --- |
| Not sent | The artifact or registration exists and no attempt was ever recorded. |
| Sent to queue | Windows accepted the document. It does not confirm that paper came out. |
| Failed | The queue refused; the error is shown beside the attempt. |
| Send uncertain | The app stopped after recording the attempt and before recording the queue's answer. It is never retried automatically, because the printer may already have produced the document. |
| Generation failed | A label whose commands could not be generated; the reason is shown and there is nothing to print. |

Each attempt shows its status, its queue, its window ("started → completed", or "started →
no durable response") and its error.

## Report {#report}

The dossier counts the reports registered on the run: one per report command that opted
into printing automatically or into keeping a copy, and nothing for a command that asked
for neither, since a plain generation is an export. With none it reads "No report is
registered on this run. The end-of-run PDF is recorded here when the procedure keeps a copy
of it in the run or prints it automatically", and closes with "; a new one can always be
rendered below." only for a role that is drawn the block that renders one.

Each registration is a disclosure headed by the group's name, the layout's name, the
instant and the status. Inside: the published file name, what the run holds of it ("copy
kept in the run · 312.4 KB" or "reference only", with a hint saying what a resend will
submit), the artifact identifier, then:

| Control | What it does | Greyed when | Needs |
| --- | --- | --- | --- |
| Open PDF (on the station) or Download PDF (in a browser) | Opens the published PDF from the reports folder in the system viewer, or streams it to the browser. A registration whose stored name is not a report published on this station, which is what a run imported from another installation carries, is refused before anything is read: "This registration does not name a report stored on this station. Regenerate it from Histories." A name that is a published report whose file is no longer stored says "The report PDF is no longer stored on this station. Regenerate it from Histories." | A generation, a resend or another open is in flight. | Export/import histories |
| Queue attempts | The list of attempts, newest first. | | |
| Resend report | Submits a document to the picked queue and appends one attempt to this registration, never a new registration. A registration with a copy kept in the run submits that copy byte for byte; one with a reference only submits the published PDF as it stands, so a later render is what goes out, and a vanished PDF is refused ("The report PDF is no longer stored under the reports directory. Regenerate it before resending."). | No queue picked, another verb in flight, the station read-only. | View histories, Run procedures |

The two halves are gated apart, and each is absent for a role without its permission: one
without Export/import histories is drawn no file row at all, one without View histories or
Run procedures no queue picker and no resend, and a role with neither reads the
registrations and their attempts only. What the moment refuses is said on the greyed control
itself: "A report is still opening.", "A report is still being sent.", "A report is still
being rendered.", "The station is read-only.", "No Windows printer queue is installed on
this station.", "Pick the printer queue this report goes to."

**New PDF with a current report**, the disclosure under the list, is the other half of the
pair: a **Report** picker ("(procedure's report)" or any layout of the library) and
**Generate report**, which renders the run's PDF again from its own file, republishes it in
the reports folder under the run's plain name, registers nothing and reaches no queue. The
whole disclosure is drawn only for a role with Export/import histories, and while the run is
still recording it carries the notice "A report renders once the run has finished and its
final evidence is frozen." over a picker and a verb greyed on "This run is still recording,
so it has no frozen snapshot yet."; the same render is the strip's Generate PDF, which also
opens the result ([Exporting a run](histories-export#pdf)). A layout deleted while the
dossier is open drops out of the picker, which falls back to the procedure's own.

## Labels {#labels}

The dossier counts the artifacts stored in the run, newest first: the labels the procedure
emitted at Start and at Completion, and every label recorded afterwards, which names
itself `<group> · Generated from Histories`. With none it reads "No label artifacts are
stored in this run. Automatic actions and every label emitted for it later appear here."

Each artifact is a disclosure headed by the group's name, the template's name, the boundary
(Start or Completion), the instant and the status. Inside: the generation error when there
is one; the RAW strip (the frozen byte count or "NO PAYLOAD", the template's source file, the
SHA-256 of the template version used, the artifact identifier); **Resolved values**, one
row per marker with the value substituted and the source it came from ("No markers in this
fixed command file." for a fixed label); **Queue attempts**; and, for an artifact with
commands, the send row:

| Control | What it does | Greyed when | Needs |
| --- | --- | --- | --- |
| Print (Reprint once an attempt exists) | Submits the exact frozen bytes to the picked queue and appends one attempt. No marker is resolved again and the template is never read, so the queue receives this artifact byte for byte, whatever has changed since. | No queue picked, another send in flight, the station read-only. | View histories, Run procedures |

A role without both permissions is drawn no send row at all, and no compose block either: it
reads the artifacts, their resolved values and their attempts, and the dossier offers it
nothing to press. What the moment refuses is said on the greyed control itself: "A label is
still being sent.", "The station is read-only.", "No Windows printer queue is installed on
this station.", "Pick the printer queue this artifact goes to."

A new label for the run is recorded two ways, and neither sends it: print it from its own
entry afterwards.

- **New label**, on the strip above the record, renders one of the labels the run's
  procedure configures, which already pairs a template with its confirmed marker mappings,
  so no form is needed. Its picker defaults to "(procedure's label)", the first completion
  label in emission order (the first start label for a procedure that emits none at
  Completion), and lists every label command of the procedure named by its group (with "·
  at Start" or "· at Completion" when a group holds several). A choice whose template left
  the library reads "· no template", one whose template holds no commands "· no commands";
  both stay listed and cannot be generated. The verdict filter of the command is ignored:
  you asked for this label. A run whose procedure is gone, and an imported run, configure
  no label ("This run's procedure configures no label."). Only a finished run generates.
- **New label with a current template**, the disclosure under the artifacts, takes any
  template of the library that holds commands and maps every marker by hand from evidence
  already frozen in this run. For each marker: a **source** picker listing the frozen
  values with their preview ("Run identity · Model name: Climatic chamber", "Metadata ·
  Serial: A12", "Criterion · Overshoot · cycle 1 · Result: OK"), a format for a date source
  (Station date and time, Station date, Station time, ISO 8601) or a number of decimal
  places for a numeric one ("As recorded", 0 to 9), and a **Confirm mapping** box. The line
  under the rows counts "n of m markers explicitly confirmed" and **Generate label** stays
  greyed on "Confirm every marker against a frozen source first." until every marker is
  confirmed with a real source; a template with no markers generates fixed commands, and one
  with no commands is refused ("This template has no printer commands yet."). The values
  offered are the frozen ones only: nothing live is read, and a run still recording has no
  terminal snapshot to generate from ("Terminal snapshot not available", the verb greyed on
  "This run is still recording, so it has no frozen snapshot yet.").

Both ways take View histories and Run procedures, without which neither is drawn, and a
station that accepts writes, which only greys them ("The station is read-only."); the
artifact they record is immutable, and the outcome lands in the action feed ("New label
recorded · template").

## What the dossiers do not do {#what-the-dossiers-do-not-do}

They never re-render a recorded label or report to reissue it: a reprint sends frozen
bytes and a resend sends the registered document. They never change an older artifact.
They do not print a template's test page (that is the template's own page under
[Templates](process-labels#test-send)), and they do not decide which queue a procedure
prints through: the picker here is per artifact and per send.
