Steward orders: README states the one-job rule; pin the end-to-end argv

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-11-02 22:42:52 +01:00
commit fb1e7b5dd9
2 changed files with 18 additions and 19 deletions

View file

@ -73,24 +73,23 @@ idunn order show <id> # status and outp
idunn order list idunn order list
``` ```
A unit order may act on any unit except Idunn's own (`idunn-*`) and the minds' A unit order acts on exactly the unit it names: every verb runs
own (`mind-self@*`, `mind-persona@*`). That set is compiled into the binary and `systemctl <verb> --job-mode=ignore-requirements -- <unit>`, so systemd builds a
read from no configuration. An order is refused, recorded and posted when its transaction of one job. It does not start what the unit requires or restart what
name, an alias it resolves from, or the transaction systemd would build for it is part of it: order the dependency first, and order `postgresql@16-main.service`
reaches one of them: a start pulls in what the unit requires or wants (a rather than the `postgresql.service` wrapper. Targets are not orderable. A unit
refused unit that is already running is left alone) and stops what conflicts order may act on any unit except Idunn's own (`idunn-*`) and the minds' own
with it, a stop takes down what depends on it, and a restart does both. The (`mind-self@*`, `mind-persona@*`), and the units that end or take the host
transaction is read from `systemctl show`, so `start poweroff.target` is refused (`systemd-suspend`, `systemd-hibernate`, `systemd-hybrid-sleep`,
because every refused unit conflicts with `shutdown.target`, not because `systemd-suspend-then-hibernate`, `rescue`, `emergency`). That set is compiled
targets are banned. The units a start or stop ends or times out are followed too: into the binary and read from no configuration. An order is refused, recorded
the target each of `SuccessAction=`, `FailureAction=`, `StartLimitAction=` and and posted when the ordered unit, or an alias it resolves from, is one of them;
`JobTimeoutAction=` runs (`reboot`, `poweroff`, `halt`, `kexec`, `soft-reboot`, when it has an emergency action (`SuccessAction=`, `FailureAction=`,
`exit`, with `-force` and `-immediate`), and the units `OnFailure=` and `StartLimitAction=`, `JobTimeoutAction=`) other than `none` or an `OnFailure=`
`OnSuccess=` name, with what each pulls in; an action it does not know fails the or `OnSuccess=` unit (not for a reload); or, for a stop or restart, when another
order. A start refuses a stopped `DefaultDependencies=no` unit (boot and recovery unit is `BoundBy=` it, because systemd stops that unit with it whatever the job
machinery, such as `rescue.service`, which ends by isolating the default mode. A unit `systemctl show` cannot resolve fails the order. Slices, scopes,
target), whatever pulls it in. A unit `systemctl show` cannot resolve fails the order. targets and globs are not units an order can name.
Slices, scopes and globs are not units an order can name.
A package order installs the packages it names and nothing else: apt runs with A package order installs the packages it names and nothing else: apt runs with
`--no-remove`, each name is passed as an exact-name pattern so `.` and `+` `--no-remove`, each name is passed as an exact-name pattern so `.` and `+`

View file

@ -3742,7 +3742,7 @@ mod tests {
let run_log = std::fs::read_to_string(root.join("run.log")).unwrap(); let run_log = std::fs::read_to_string(root.join("run.log")).unwrap();
assert!( assert!(
run_log.contains(&format!( run_log.contains(&format!(
"--unit idunn-order-{} --wait --pipe --collect -p RuntimeMaxSec=15min -- systemctl restart -- nginx.service", "--unit idunn-order-{} --wait --pipe --collect -p RuntimeMaxSec=15min -- systemctl restart --job-mode=ignore-requirements -- nginx.service",
order_uuid(&first) order_uuid(&first)
)), )),
"{run_log}" "{run_log}"