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>
The OpenPRoT Technical Charter can be found at https://github.com/OpenPRoT/.github/blob/main/GOVERNANCE.md
NOTE: We are converting our build system to bazel. We recommend installing bazelisk to automatically manage bazel versions.
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.The project is structured as a bazel module.
No additional tools are required - all dependencies are managed by bazel.