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
| Name | omaboot-plan.yaml |
|---|---|
| Where | The root of the stick's OMABOOT partition. Plug the stick into any computer and it shows up as a drive named OMABOOT. |
| Format | YAML, version: 1. |
| Read | Once, when OmaBoot? Live starts, before Hello. |
| Without it | The 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
- 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: consoleit doesn't count down: it waits until you typeplan runin the console. - Which Mac takes the plan's
configurationwhen 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. - Network connects the plan's way.
- Quick pass runs as always. With nobody at the Mac, the graphics notice goes on at once.
- 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.
- 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
| Key | Value | What it does |
|---|---|---|
version | 1 | Required. The plan's format. |
defaults | a section | Optional. Applies to every Mac, under its own section. |
macs | a list of sections | Required, 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
| Key | Values | Default | What it does |
|---|---|---|---|
match | identifier or configuration ID | required in macs | Which Mac the section is for. Not allowed in defaults. |
configuration | a configuration ID | the match | Answers 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. |
network | see Network | whatever comes up | How the run connects. |
results | send · save · both | save | Send 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. |
tester | a handle | none | The name the report credits, as on Finish: letters, digits, . _ -, at most 39. |
finish | wait · power-off · reboot | wait | What happens after the report. Power-off and reboot come 5 seconds later. After a sleep that hung in this run, the screen waits instead. |
start | auto · console | auto | How 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. |
bugreport | see Bug reports | [on-problem] | When to save a bug report to the stick. |
tests | see Tests | all hands-on | How 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
| Value | What it does |
|---|---|
ethernet | Waits up to 30 seconds for the cable's connection. |
phone | Waits up to 30 seconds for a phone sharing its connection over USB. |
offline | Tests 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 set | Whatever 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.
| Mode | What happens | For |
|---|---|---|
hands-on | As without a plan: the test waits for you. | every test |
skip | Not opened. Not tested, “skipped by the run plan”. | every test |
setup | Its 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 test | Have in place |
|---|---|
network.ethernet | A cable to a network with internet. |
ports.sd-card | A card in the slot. With OmaBoot?'s test file on it, the file is read and checked. |
storage.optical | A disc in the drive. It's read, then ejected. |
network.wifi | The 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
| ID | Test |
|---|---|
input.keyboard | Keyboard |
input.trackpad | Trackpad |
input.force-touch | Force Touch |
display.native-resolution | Native resolution |
display.brightness | Display brightness |
input.keyboard-backlight | Keyboard backlight |
input.keyboard-backlight.keys | Key-light keys |
input.ambient-light-sensor | Ambient light sensor |
audio.speakers | Speakers |
audio.microphone | Microphone |
camera.builtin | Camera |
network.bluetooth | Bluetooth |
network.wifi | Wi-Fi |
network.ethernet | Ethernet |
power.charging | Charging |
graphics.external-display | External display |
audio.display-out | Monitor speakers |
audio.headphone | Headphones |
ports.usb-a | USB-A ports |
ports.usb-c | USB-C ports |
ports.sd-card | SD card reader |
ports.thunderbolt | Thunderbolt |
ports.firewire | FireWire |
storage.optical | Optical drive |
power.lid | Lid |
power.sleep-wake | Sleep 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}.
| Moment | Saved |
|---|---|
on-problem | When 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-quick | Once 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-finish | After 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