Stellar ControlMission control · by Stellar Systems v0.1.0

Operations

Evidence and Reports

The run log as evidence, and the HTML test reports rendered from it for AIT and IVV.

Every run keeps the evidence of what it did and why each step passed or failed: the inputs it was given, the acknowledgement chain of every telecommand, the samples that decided every condition, and every confirmation with the identity of who gave it. The test report of the run is rendered from that log alone, so AIT and IVV test reports come for free, and the same log always gives the same report.

Evidence in the log#

The run log is the evidence. For each step and each attempt, it holds:

EvidenceEvent
The inputs of the run, resolved (quantities in the unit of their input), the targets, the requester, the resolved run (ir)started
The resolved inputs of each stepstep_started
The identifier of each telecommand, logged before it leaves, and the telecommand of the first attempt it retries (retry_of)telecommand_sent
The acknowledgement chain of each telecommand: every event from PENDING to its final state, with its time and detailtelecommand_finished (acks)
Each expect, check and wait until: the condition as written, its outcome, why it failed, and the samples it was judged on (target, component, instance, measure, value, sample time, ground reception time)checked
Each question, and the role awaited for a hazardous confirmationasked
Each answer, with the identity, the role and the time, or its automatic acknowledgementanswered
Each answer not taken, with who and whyanswer_refused
Decisions, suspensions, resumptions, takeoversdecision_required, answered, suspended, continued, taken_over
The outcome of each attempt, of each procedure, of the runstep_finished, procedure_finished, finished

The log lives in the JetStream stream RUNS, as long as its retention keeps it. An output connector with the run_events data keeps it longer, in a database of your choice: see Output Connectors.

The test report#

Shell
stellar report <run> -o report.html      # to a file
stellar report <run> > report.html       # to the standard output

GET /v1/runs/{id}/report returns the report as HTML: the report archived at the end of the run, or, for a run still going, the report rendered from its log so far.

The report shows:

  • a header: run identifier, procedure, library and version, environment, requester, start time, hash of the resolved run, the target of each role and the value of each input;
  • one section per procedure and sub-procedure, with its outcome;
  • one block per attempt of each step: its start, its inputs, each telecommand sent (identifier, target, retry of), its final state and failure detail, each condition judged with the samples used, each question and answer (who, as which role, when, or acknowledged automatically), each answer not taken, decisions, suspensions and resumptions, and the outcome of the attempt;
  • the result of the run, with its reason when it failed, and its end time.

Archiving#

At the end of a run, the executor renders the report from the complete log and stores it in the object store stellar_reports, under the identifier of the run. Since the report depends on the log only, a report rendered again from the log is identical to the archived one.

What the report is not#

The report covers one run. Telemetry, telecommands and alarms outside runs, and history beyond the retention of JetStream, are the business of the systems fed by output connectors (a time series database with Grafana dashboards, for instance). The API never queries them.

Stellar Control · v0.1.0

↑↓ to moveEnter to open