orchestrator: Add the TrialBoot capability trait

Activating an update proposes a boot candidate and never commits it, whether
the eRoT actuates that itself through Updatable::activate or a PLDM firmware
device does it on the eRoT's behalf. Updatable's docs already name TrialBoot
as the gate that resolves the proposal; this is that trait: is_pending,
confirm, revert, no slot ids.

One contract covers both implementors. A passive downstream device is judged
from outside over its boot-complete line; the eRoT's own image is judged by
the boot the trial started, so is_pending has to be answerable from durable
state alone. The arming applies to the next boot only, so an unresolved trial
falls back on its own, but the record stays pending until confirm or revert,
which is how an orchestrator that rebooted mid-update finds it again.

confirm moves slot metadata only. Raising the anti-rollback floor is
SvnFloor::advance and happens later, so revert always has a bootable image to
fall back to.

Assisted-by: Claude
3 files changed
tree: 0ee7adb7f80638840c83db4c59c13423d472cc9c
  1. .github/
  2. docs/
  3. drivers/
  4. hal/
  5. openprot/
  6. platform/
  7. presubmit/
  8. services/
  9. target/
  10. third_party/
  11. tools/
  12. util/
  13. .bazelignore
  14. .bazelrc
  15. .bazelversion
  16. .clang-format
  17. .gitignore
  18. .semgrepignore
  19. BUILD.bazel
  20. CONTRIBUTING.md
  21. LICENSE
  22. MODULE.bazel
  23. MODULE.bazel.lock
  24. pw
  25. README.md
  26. rust-toolchain.toml
  27. workflows.json
README.md

OpenPRoT

Technical Charter

The OpenPRoT Technical Charter can be found at https://github.com/OpenPRoT/.github/blob/main/GOVERNANCE.md

Getting Started

NOTE: We are converting our build system to bazel. We recommend installing bazelisk to automatically manage bazel versions.

Available Tasks

You can run tasks using the Pigweed workflow launcher pw or bazel.

  • ./pw presubmit - Run presubmit checks: formatting, license checks, C/C++ header checks and clippy.
  • ./pw format - Run the code formatters.
  • bazel test //... - Run all tests.
  • bazel build //docs - Build documentation.

Development

The project is structured as a bazel module.

Requirements

  • Bazel. We recommend installing bazelisk to automatically manage bazel versions.

No additional tools are required - all dependencies are managed by bazel.