Skip to content

orchestrator: Wire CommitSvnFloor through the platform driver - #437

Open
chrysh wants to merge 1 commit into
OpenPRoT:mainfrom
9elements:wire-svn-commit
Open

orchestrator: Wire CommitSvnFloor through the platform driver#437
chrysh wants to merge 1 commit into
OpenPRoT:mainfrom
9elements:wire-svn-commit

Conversation

@chrysh

@chrysh chrysh commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

This PR can only be merged after we get an answer on Slack about SVN conventions between iRoT and eRoT.

SvnFloor joins BoardCapabilities, one floor per component slot. The SVN to advance to travels in Verdict::Authenticated: verification is the only authenticated read of the manifest, so nothing else may tell the floor where to go. The driver caches it per component, clears it on rejection, and fails closed when asked to commit without it. A None slot marks a component that tracks its own SVN (iRoT, or a PLDM device committing internally); the eRoT keeps no second floor for it and its commit is a no-op.

Part of 9elements#18

@chrysh
chrysh force-pushed the wire-svn-commit branch 5 times, most recently from 13069cf to ac56e28 Compare August 26, 2026 18:58
@chrysh
chrysh marked this pull request as ready for review August 26, 2026 19:04
type Verifier: Verifier;
/// Reset actuation for the managed components.
type BootControl: BootControl;
/// The durable anti-rollback floor of the managed components.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is this durable? what does this imply?

@chrysh chrysh Aug 27, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Durable means it survives power loss and reboot. Fixed in doc comment.

Comment thread services/orchestrator/driver/src/board.rs Outdated
/// `verified_svn[i]` is the manifest SVN of `ComponentId(i)`'s last
/// authenticated image — the only value a floor commit may trust.
/// `None` until a verification passes; cleared again on rejection.
verified_svn: [Option<Svn>; N],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please correct me if I'm wrong, but both the board capabilites as well as the verified_svn track SVNs for the downstream devices, right? So Why does a None in board capabilities resemble a self-managed device, and a None here must imply "empty until verification passes"? This is misleading and kind of breaks the API for me. We should find clearer ways to indicate what we want to say to prohibit future misuse.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch, that's indeed confusing. Fixed.

@leongross leongross linked an issue Aug 27, 2026 that may be closed by this pull request
SvnFloor joins BoardCapabilities, one floor per component slot. The SVN
to advance to travels in Verdict::Authenticated: verification is the
only authenticated read of the manifest, so nothing else may tell the
floor where to go. The driver caches it per component, clears it on
rejection, and fails closed when asked to commit without it.
SvnFloorBinding names the two wirings a board can choose: Erot, where
the eRoT holds the floor, and SelfManaged for a component that tracks
its own SVN (iRoT, or a PLDM device committing internally), whose
commit is a no-op.

Assisted-by: Claude:claude-fable-5
Signed-off-by: Christina Quast <christina.quast@9elements.com>
@chrysh
chrysh requested a review from leongross August 27, 2026 19:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update anti-rollback params

2 participants