Skip to content

Commit 5dc453a

Browse files
committed
fwmanager: Pin the orchestrator seams in the docs
Three facts reviewers keep having to reconstruct: checkpoint timeouts are table data the walk consumes — the clockless state machine never sees a duration, a component's boot timeout is just its walk over the windows; the device table is the authority the chain is built from; and Complete maps to ComponentReady or Booted by component kind, in the shell. Assisted-by: Claude:claude-fable-5 Signed-off-by: Christina Quast <christina.quast@9elements.com>
1 parent e550a20 commit 5dc453a

3 files changed

Lines changed: 13 additions & 4 deletions

File tree

services/fwmanager/api/src/boot_watch.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,10 @@ pub enum WalkVerdict {
3939
/// When the awaited checkpoint's window expires.
4040
deadline_millis: u64,
4141
},
42-
/// Every checkpoint passed — the device is up.
42+
/// Every checkpoint passed — the device is up. Which state-machine
43+
/// event this becomes is the shell's mapping, by component kind:
44+
/// `ComponentReady` for an iRoT-backed device, `Booted` for a
45+
/// symbiont.
4346
Complete,
4447
/// This boot attempt failed at `checkpoint`; the walk is over.
4548
/// Whether to try again, recover, or give up is the orchestrator's

services/fwmanager/api/src/config.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,13 @@ pub struct BootCheckpoint<G> {
2626
/// function, so the table stays pure data — the type-level docs say
2727
/// why.
2828
pub signal: G,
29-
/// Window for one attempt at this checkpoint. Expiry is the
30-
/// orchestrator's own judgment; hung devices report nothing.
29+
/// Window for one attempt at this checkpoint. Expiry is the boot
30+
/// walk's own judgment; hung devices report nothing.
31+
///
32+
/// The orchestrator state machine never sees this value — it is
33+
/// clockless. The walk consumes the windows and reports expiry as a
34+
/// failed attempt; a component's whole boot timeout is nothing more
35+
/// than its walk over these windows, in order.
3136
pub timeout: core::time::Duration,
3237
}
3338

target/mock/devices.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ pub enum MockSignal {
2525
}
2626

2727
/// Declaration order is the boot order: the orchestrator releases devices
28-
/// top to bottom, one at a time.
28+
/// top to bottom, one at a time. This table is the authority — the
29+
/// orchestrator's chain of trust is built from it, never beside it.
2930
///
3031
/// The mock board's reset controller addresses reset lines by plain index,
3132
/// so the reset id type is `u8`.

0 commit comments

Comments
 (0)