Docs menu

Docs / Run plan

Run plan

A run plan is a small file on the OmaBoot? stick. It answers the run's questions ahead: which Mac this is, how to connect, which tests to run and what to do with the report. A plan with no hands-on tests runs the whole test with nobody at the keyboard.

The file

Nameomaboot-plan.yaml
WhereThe root of the stick's OMABOOT partition. Plug the stick into any computer and it shows up as a drive named OMABOOT.
FormatYAML, version: 1.
ReadOnce, when OmaBoot? Live starts, before Hello.
Without itThe run asks you, as always.

The OMABOOT partition is where OmaBoot? Live keeps its reports. It's made the first time a run saves something: a report, a bug report or the sound setting (M). On a freshly written stick, run it once and save a copy of the report; then the drive is there for the plan.

The smallest plan names one Mac and answers one question. Everything it doesn't answer is asked as usual.

omaboot-plan.yaml · the smallest plan

version: 1
macs:
  - match: MacBookAir5,2
    network: ethernet

How a run uses it

  1. Hello says a plan was found, which section it uses and what it will do, then counts down 10 seconds. Press any key in that time to ignore the plan for this boot. With start: console it doesn't count down: it waits until you type plan run in the console.
  2. Which Mac takes the plan's configuration when several fit. A copy of a run whose Mac didn't come back (a sleep that never woke) is picked up, so its fail stays on record.
  3. Network connects the plan's way.
  4. Quick pass runs as always. With nobody at the Mac, the graphics notice goes on at once.
  5. Hands-on tests open by themselves. A skipped test is recorded without opening; a setup test goes on 3 seconds after its result; a hands-on test waits for you.
  6. Finish sends and/or saves the report, then waits, powers off or restarts.

A run is unattended when the Mac's section has no hands-on test. Otherwise it's attended: the plan answers what it can, and the run waits for you at the hands-on tests and at any question the plan couldn't answer.

A plan with a mistake isn't used at all. Hello shows each problem with its line and what to write instead, and the run asks you as usual.

Hello, with a plan

Run plan omaboot-plan.yaml: iMac18,3's section, unattended.
  tests: 2 setup, the rest skipped
  network: ethernet · report saved, then the screen waits
  Starting in 4 s. Press any key to ignore the plan.

Hello, with a mistake

Run plan omaboot-plan.yaml found, not used:
  line 6: macs[1] (iMac18,3): tests: power.lid can't be setup
    (only network.ethernet, network.wifi, ports.sd-card,
    storage.optical can); make it hands-on or skip

Top level

KeyValueWhat it does
version1Required. The plan's format.
defaultsa sectionOptional. Applies to every Mac, under its own section.
macsa list of sectionsRequired, at least one. Each starts with match.

A Mac uses the first section whose match is its model identifier (iMac18,3) or its configuration ID (imac18-3-5k-2017-a), ignoring case. A Mac with no section ignores the plan, and Hello says so. One stick can carry a plan for a whole bench of Macs.

A section's keys replace the same keys in defaults. Its tests are merged with the defaults' tests, its own entries winning.

Find a Mac's identifier and configuration ID on DoesItOmarchy.com's Identify page, or on Which Mac.

omaboot-plan.yaml · defaults and two Macs

version: 1
defaults:
  network: ethernet
  results: save
  tests: {default: skip}
macs:
  - match: iMac18,3
    tests: {network.ethernet: setup}
  - match: MacBookAir5,2
    network: offline
    tests: {ports.sd-card: setup}

Section keys

KeyValuesDefaultWhat it does
matchidentifier or configuration IDrequired in macsWhich Mac the section is for. Not allowed in defaults.
configurationa configuration IDthe matchAnswers Which Mac when several configurations fit. When the Mac matches one exactly and it's another, the match is used and the report says so.
networksee Networkwhatever comes upHow the run connects.
resultssend · save · bothsaveSend the report to DoesItOmarchy.com, save a copy to the stick, or both. A report that can't be sent is saved instead. With send or both nobody sees the Send screen, so writing the plan is agreeing to DoesItOmarchy.com's consent notice for each report it sends; the report records that a run plan sent it.
testera handlenoneThe name the report credits, as on Finish: letters, digits, . _ -, at most 39.
finishwait · power-off · rebootwaitWhat happens after the report. Power-off and reboot come 5 seconds later. After a sleep that hung in this run, the screen waits instead.
startauto · consoleautoHow the plan starts: auto counts down on Hello; console waits for plan run, so you can plug in a setup test's cable or card after the Mac has started.
bugreportsee Bug reports[on-problem]When to save a bug report to the stick.
testssee Testsall hands-onHow each hands-on test runs.

A report is sent only from an image with a report key, over a network, and never from a run changed in the console (the report's notes say why). The report's notes record that a plan ran, as in the example.

the report's notes

Run plan (omaboot-plan.yaml, version 1, section iMac18,3):
unattended; tests: 2 setup, 15 skipped.

Network

ValueWhat it does
ethernetWaits up to 30 seconds for the cable's connection.
phoneWaits up to 30 seconds for a phone sharing its connection over USB.
offlineTests offline. A report set to send is saved instead.
{wifi: {ssid: …, password: …}}Joins that Wi-Fi network: waits for the scan, scans once more if it isn't there, and gives the join 60 seconds. Leave out password for an open network; a WPA password is 8 to 63 characters.
not setWhatever comes up by itself in 30 seconds. Nothing: offline when nobody's there, your choice when you are.

When the plan's network doesn't come up, an unattended run goes on with what it has (offline if nothing), and the report says why. An attended run hands the Network screen to you.

The password sits in plain text on the stick, and a stick travels. OmaBoot? Live never puts it in a report, a bug report or the logs, and the console's plan shows it masked. In bug reports the network's name reads (the plan's network). Prefer Ethernet where you can, and don't leave a plan with a password on a stick you lend.

network: Wi-Fi

network:
  wifi:
    ssid: Studio
    password: "correct horse battery staple"

network: an open Wi-Fi network

network: {wifi: {ssid: Library}}

Tests

tests maps hands-on tests to a mode. default sets the mode of every test the plan doesn't name. The quick pass's checks always run and aren't listed.

ModeWhat happensFor
hands-onAs without a plan: the test waits for you.every test
skipNot opened. Not tested, “skipped by the run plan”.every test
setupIts equipment is in place before power-on and the test decides alone. One that hasn't decided after twice its usual time (at least 60 seconds) goes in as not tested, with that reason.the four below
Setup testHave in place
network.ethernetA cable to a network with internet.
ports.sd-cardA card in the slot. With OmaBoot?'s test file on it, the file is read and checked.
storage.opticalA disc in the drive. It's read, then ejected.
network.wifiThe plan's network set to a Wi-Fi network: joined on the Network step.

The sleep test needs you to type the code it shows after waking, so it's hands-on or skip. Tests that need a plug-in during the test (USB, FireWire, Thunderbolt) are hands-on or skip for now.

tests: setup, with a person for two

tests:
  default: skip
  network.ethernet: setup
  ports.sd-card: setup
  ports.usb-c: hands-on
  power.sleep-wake: hands-on

Test IDs

IDTest
input.keyboardKeyboard
input.trackpadTrackpad
input.force-touchForce Touch
display.native-resolutionNative resolution
display.brightnessDisplay brightness
input.keyboard-backlightKeyboard backlight
input.keyboard-backlight.keysKey-light keys
input.ambient-light-sensorAmbient light sensor
audio.speakersSpeakers
audio.microphoneMicrophone
camera.builtinCamera
network.bluetoothBluetooth
network.wifiWi-Fi
network.ethernetEthernet
power.chargingCharging
graphics.external-displayExternal display
audio.display-outMonitor speakers
audio.headphoneHeadphones
ports.usb-aUSB-A ports
ports.usb-cUSB-C ports
ports.sd-cardSD card reader
ports.thunderboltThunderbolt
ports.firewireFireWire
storage.opticalOptical drive
power.lidLid
power.sleep-wakeSleep and wake

A Mac runs only the tests that apply to it; a plan may name the others, and they're left out there. The full log (L) shows each result's ID.

Bug reports

A bug report is the run's logs, the report and the screen, saved to the stick's results/ as one file. bugreport takes a list of moments, or none. To send them to OmaBoot? as well, scrubbed (what happens to them), write {when: [moments], send: true}.

MomentSaved
on-problemWhen something goes wrong, as it happens: a test fails, a setup test runs out of time, the network falls back, or Which Mac has to guess. One for each kind of problem. The default.
after-quickOnce the quick pass is done, before the hands-on tests: a record of the Mac before anything is plugged in or put to sleep.
at-finishAfter the report, with the whole run's logs.

The report's notes list the bug reports saved before it.

bugreport

bugreport: [after-quick, on-problem, at-finish]
bugreport: {when: [on-problem, at-finish], send: true}
bugreport: none

Console and serial port

The console's plan command: plan shows the plan in use, its password masked, and plan check reads the file on the stick again and checks it, with the line and the fix for each problem.

plan run starts the plan from the screen the run is on: a plan with start: console, one ignored at Hello, or one you stopped. It reads the file again first and won't start one with problems. Steps already behind you stay as they are: tests that have a result keep it, and a configuration or network you set by hand stays, noted in the report. plan stop hands the run back to you on the screen it's on. The report's notes say where the plan started and stopped.

For a bench watched over a serial console, the run's last line also goes to the first serial port: what became of the report and the results' tally.

serial port

OMABOOT-PLAN: saved results/iMac18,3-20261019T230547Z.json;
need Omarchy installed 2, not tested 15, passed 6

Sample plans

A bench, unattended. Each Mac has a cable in and a card in the slot before power-on. The report goes to DoesItOmarchy.com and the stick, and the Mac powers off.

Attended. The plan answers the screens and skips what you don't have gear for; you sit in for the tests that need hands.

Every key. The whole format in one file, with each value spelled out.

omaboot-plan.yaml · a bench, unattended

version: 1
defaults:
  network: ethernet
  results: both
  tester: tester-1
  finish: power-off
  bugreport: [on-problem]
  tests:
    default: skip
    network.ethernet: setup
    ports.sd-card: setup
macs:
  - match: iMac18,3
    configuration: imac18-3-5k-2017-a
  - match: iMac18,1
  - match: Macmini4,1
    tests: {storage.optical: setup}

omaboot-plan.yaml · attended

version: 1
macs:
  - match: MacBookAir5,2
    network:
      wifi:
        ssid: Studio
        password: "correct horse battery staple"
    results: save
    tests:
      default: hands-on
      audio.display-out: skip
      graphics.external-display: skip
      ports.firewire: skip

omaboot-plan.yaml · every key

version: 1                  # required
defaults:                   # optional: every Mac, under its own section
  network: ethernet         # ethernet · phone · offline · {wifi: {ssid: …, password: …}}
  results: save             # send · save · both
  tester: tester-1              # letters, digits, . _ - (at most 39)
  finish: wait              # wait · power-off · reboot
  start: auto               # auto (Hello counts down) · console (waits for plan run)
  bugreport: [on-problem]   # after-quick · at-finish · on-problem, or none; {when: […], send: true} sends them
  tests:
    default: hands-on       # hands-on · skip
    network.ethernet: setup # setup: ethernet, sd-card, optical, wifi only
macs:                       # required: at least one section
  - match: iMac18,3         # a model identifier or a configuration ID
    configuration: imac18-3-5k-2017-a
    tests:
      power.sleep-wake: skip