1# @ajax/mesh-jobs-out
23What the job node asks of the world (`mj_out`):
45- send a frame to a member;
6- push, fetch or let go of a payload blob (blobd);
7- persist a log record;
8- run or cut a lease (the local driver);
9- answer a change by its token;
10- write a log line.
1112`mj_durable` puts the outputs in their durable order. Every persist is appended, and the log is
13synced before the first send or answer after it, so no acknowledgement, delta or answer ever leaves
14before what it promises is on disk. The first append or sync that fails stops everything after it
15(fail-stop, review finding 4). Where the log goes is an `mj_disk`: jobd's store, or a test's faulty
16disk.
1718## Ported from
1920[alpha-rust-mesh](https://github.com/rsafier/alpha-rust-mesh) (Richard Safier, MIT):
21`crates/mesh-host/src/jobs.rs`: `Out`, `Disk`, `durable`.
2223## Tests
2425`tests/out.c`: the order of appends and syncs around sends and answers, a failing append, and a
26failing sync. The node half of the Rust's `nothing_leaves_without_its_persist` is in
27`@ajax/mesh-jobs-node`.
2829## Licence
3031MIT. See the repository's LICENSE.