A stage it has not seen is never shown as passed. The page plays a new command every 7 seconds; the buttons send one now. Each command is a row, each stage a column with its own window. The verdict names the furthest stage a report actually passed, in that stage's word: SENT reads SENT, never "executed". A stage whose window closes unanswered reads T/O, which is neither a pass nor a fail, and the next window still opens; an answer after its window is drawn LATE. A stage verified only because a telemetry parameter reached its expected value is hollow and marked TM, and a verdict resting on one says NOT CREDITED (Armitage, Terma/ESA: "can we be completely certain that it changed because of our command?"). A newer command to the same target supersedes the older one's open stages. ACCEPTED is declared ACCEPTED:5:fail: there, and only there, a timeout fails the command, and the head marks it before it happens. The scenes below are snapshots in attributes alone, on the element's default stages; the feed and the buttons act on the theme rows under them.
import 'overscan'
import 'overscan/overscan.css'
<ov-verifier
label="SADA"
timeout="900"
commands="C7 SADA STEP +5 @SADA"
reports="C7 TO-RANGE=pass, C7 FROM-RANGE=pass"
></ov-verifier>import { OvVerifier } from 'overscan/react'
<OvVerifier
label="SADA"
timeout="900"
commands="C7 SADA STEP +5 @SADA"
reports="C7 TO-RANGE=pass, C7 FROM-RANGE=pass"
/>import { OvVerifier } from 'overscan/vue'
<OvVerifier
label="SADA"
timeout="900"
commands="C7 SADA STEP +5 @SADA"
reports="C7 TO-RANGE=pass, C7 FROM-RANGE=pass"
/>import OvVerifier from 'overscan/svelte/OvVerifier.svelte'
<OvVerifier
label="SADA"
timeout="900"
commands="C7 SADA STEP +5 @SADA"
reports="C7 TO-RANGE=pass, C7 FROM-RANGE=pass"
/>import 'overscan'
import 'overscan/overscan.css'
<ov-verifier
label="THERMAL"
commands="C8 HTR-2 ON @HTR2"
></ov-verifier>
const reports = await fetch('./data/verifier-1-reports.json').then(r => r.json())
document.querySelector('ov-verifier').setAttribute('reports', reports)import { OvVerifier } from 'overscan/react'
const reports = await fetch('./data/verifier-1-reports.json').then(r => r.json())
<OvVerifier
label="THERMAL"
commands="C8 HTR-2 ON @HTR2"
reports={reports}
/>import { OvVerifier } from 'overscan/vue'
const reports = await fetch('./data/verifier-1-reports.json').then(r => r.json())
<OvVerifier
label="THERMAL"
commands="C8 HTR-2 ON @HTR2"
:reports="reports"
/>import OvVerifier from 'overscan/svelte/OvVerifier.svelte'
const reports = await fetch('./data/verifier-1-reports.json').then(r => r.json())
<OvVerifier
label="THERMAL"
commands="C8 HTR-2 ON @HTR2"
reports={reports}
/>import 'overscan'
import 'overscan/overscan.css'
<ov-verifier
label="PROPULSION"
commands="C9 PUMP-1 START @PUMP1"
></ov-verifier>
const reports = await fetch('./data/verifier-2-reports.json').then(r => r.json())
document.querySelector('ov-verifier').setAttribute('reports', reports)import { OvVerifier } from 'overscan/react'
const reports = await fetch('./data/verifier-2-reports.json').then(r => r.json())
<OvVerifier
label="PROPULSION"
commands="C9 PUMP-1 START @PUMP1"
reports={reports}
/>import { OvVerifier } from 'overscan/vue'
const reports = await fetch('./data/verifier-2-reports.json').then(r => r.json())
<OvVerifier
label="PROPULSION"
commands="C9 PUMP-1 START @PUMP1"
:reports="reports"
/>import OvVerifier from 'overscan/svelte/OvVerifier.svelte'
const reports = await fetch('./data/verifier-2-reports.json').then(r => r.json())
<OvVerifier
label="PROPULSION"
commands="C9 PUMP-1 START @PUMP1"
reports={reports}
/>import 'overscan'
import 'overscan/overscan.css'
<ov-verifier
label="MECHANISMS"
commands="C10 BOOM DEPLOY @BOOM"
reports="C10 TO-RANGE=pass, C10 FROM-RANGE=pass, C10 RECEIVED=pass, C10 ACCEPTED=fail"
></ov-verifier>import { OvVerifier } from 'overscan/react'
<OvVerifier
label="MECHANISMS"
commands="C10 BOOM DEPLOY @BOOM"
reports="C10 TO-RANGE=pass, C10 FROM-RANGE=pass, C10 RECEIVED=pass, C10 ACCEPTED=fail"
/>import { OvVerifier } from 'overscan/vue'
<OvVerifier
label="MECHANISMS"
commands="C10 BOOM DEPLOY @BOOM"
reports="C10 TO-RANGE=pass, C10 FROM-RANGE=pass, C10 RECEIVED=pass, C10 ACCEPTED=fail"
/>import OvVerifier from 'overscan/svelte/OvVerifier.svelte'
<OvVerifier
label="MECHANISMS"
commands="C10 BOOM DEPLOY @BOOM"
reports="C10 TO-RANGE=pass, C10 FROM-RANGE=pass, C10 RECEIVED=pass, C10 ACCEPTED=fail"
/>