Expand description
The pull channel’s signed forms (5.4, G1-pull): monetize never calls INTO an
estate; every estate calls monetize (Fleet.Report, Fleet.Orders, Fleet.Ask) and
monetize answers with SignedOrders the box verifies under monetize_pubkey.
Two forms, each a fixed binary layout (not JSON) so the estate’s verifier
(gunnar_repair::order) and this crate agree byte for byte with no canonical-JSON
rule to share:
order_message: what monetize signs for ONE order to ONE box (role).fleet_call_message: what a box signs with its own Ed25519 appliance key for each call it makes to monetize.
An order is only “please run verb V with these arguments”: the estate runs it through the
SAME function its local admin button and its boot check call, and says how it went in the
next Report (OrderAck).
Modules§
- ask
- The
Fleet.Askkinds that are not a remedy: answered at once, no case opened. - call
- The calls a box makes (
FleetCall::call). - kind
- The order kinds. The body is JSON; unknown fields are ignored. The relay products’ guardian
kinds (
kind::GUARDIAN, gunnar-repair’s verbs) are defined here; the core’s kinds aremonetize_product::pull’s one list (A28 M25), re-exported here under their old names.
Structs§
- Ask
Fleet.Askbody: a request from the estate (new_twin,new_server,recharge, …).- Fleet
Call - One call from a box to monetize, signed by the box’s own appliance key.
- Front
Ask - The body of a front’s ask (
ask::FRONT): the fields the oldSoldEstaterequest carried, less the company and the signature — theFleetSignedcall names the estate (instance) and the box (role = front) and is signed by the front’s key.roleis the box the ask is about (main|twin; forupdate_report, the box whose step it is);carriesis the update report’s<outcome>\n<words>. - Grow
GoAhead - Body of a
kind::GROW_GO_AHEADorder. - Grow
SetAsk Fleet.Askbody ofask::GROW_SET: the box’s own data disks togiba disk. Nomembers= every laid data disk of the calling box;gib0 = what its role is paid to.- Order
Ack - What a box says ran (or did not) — sent back in its next
Report. - Orders
After Fleet.Ordersbody: orders afterafter, held up towait_ms(≤LONG_POLL_MAX_MS).- Report
- The box’s heartbeat (
Fleet.Reportbody). Its arrival time is the liveness signal. - Sign
InAgain - Body of a
kind::SIGN_IN_AGAINorder. Never a secret. - Signed
Order - One order to one box, signed by the product’s monetize key.
Enums§
- Call
Refusal - Why monetize refuses a box’s call.
- Order
Refusal - Why a box refuses an order.
Constants§
- CALL_
DOMAIN - The domain tag every box’s call signature starts with.
- CALL_
FRESH_ MS - How far a box’s call time may be from monetize’s clock.
- FUTURE_
SKEW_ MS - How far ahead of the box’s clock an order may be dated (the shared pump’s and Gunnar’s five minutes).
- KEEP_
BOOT_ WITHIN - How long a front waits on the shop’s
SoldEstate.Upgrade: the shop’s whole keep boot, 2 h, the ONE constant the shop holds its call by (monetize_product::KEEP_BOOT_WITHIN; lane G9, A7 row 9, Gunnar b74ca801). A front that gave up first would count a slow keep boot as lost and ask for a Recharge while the shop still works. How long a whole keep boot may take (audit 7, 2026-10-18; lane G9, A7 row 9): the keep medium imported and cloned, the box stopped, the medium’s run (the provider’s own budget, 45 min at UpCloud), the clone given back and the box started. The shop holds its Upgrade call this long (monetize_cloud::lay::KEEP_BOOT_WITHIN), and every product’s front waits on it exactly as long (monetize_embed::fleet::KEEP_BOOT_WITHIN, Gunnar b74ca801): a front that gave up first would report a failure while the shop still works. ONE constant, here, because the shop’s cloud crate and the fronts’ embed crate both stand on this one. - LONG_
POLL_ MAX_ MS - How long
Fleet.Ordersis held open at most before it answers empty. - ORDER_
DOMAIN - The domain tag every order signature starts with.
Functions§
- fleet_
call_ message - The bytes a box’s call signature covers:
CALL_DOMAIN‖ at (u64 BE) ‖ then product, instance, role, call, body, each as u32 BE length ‖ bytes. - order_
message - The bytes an order’s signature covers:
ORDER_DOMAIN‖ seq ‖ issued ‖ not_after (u64 BE) ‖ then product, instance, role, kind, body, each as u32 BE length ‖ bytes. - verify_
fleet_ call - Verify a box’s call under its appliance
key, fresh atnow_unix_ms. - verify_
order - The box’s check, as strict as the shared pump’s (
monetize_estate_side::pump::check): signed underkeywith STRICT Ed25519 (no small-order key orR), checked first, so a forged order is alwaysOrderRefusal::Signatureand never moves the box’s sequence; then for(product, instance, role), newer thanlast_seq, inside its window atnow_unix_ms(not_after0 = none), and dated no more thanFUTURE_SKEW_MSahead of the box’s clock.