orchestrator-sm: add degraded-mode isolation/recovery-failure reports

CSA's degraded-mode clause requires two things when a component is taken
out of service: isolate it, and report the failure through the platform
management interface. The reducer did only the first — a BMC had no
in-band signal that the platform was running degraded.

Add `Effect::ReportIsolated` (emitted once per component at the moment it
is gated, alongside its `AssertReset`) and `Effect::ReportRecoveryFailed`
(emitted for the `Required` component whose exhausted recovery forces the
halt, before the machine latches). Both emission points sit in the
existing `is_gated` guards, so reporting is idempotent per component and
the runtime-corruption and recovery-exhaustion paths report identically.

Pairing a report with every `AssertReset` raises the worst-case
single-`Sink` effect count from `N + 2` to `2N + 2`; the compile-time
floor moves with it, so an under-sized board fails to build.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2 files changed
tree: ec0bce71308d3bcbf411da6272ac49f842de7f05
  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.