Skip to content

Commit a4a2070

Browse files
committed
added changeset
1 parent 0db347c commit a4a2070

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

.changesets/pm-no-eth-major.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
release: major
2+
summary: Redesign fault handling, protections, and Board bootstrap around explicit fault policies
3+
4+
This PR changes the public integration contract for applications built on ST-LIB.
5+
6+
Breaking changes:
7+
8+
- `Board` now takes the fault policy type as its first template parameter.
9+
- The global `FAULT` runtime is owned exclusively by `FaultController`.
10+
- User state machines are now nested under the global `OPERATIONAL` state through `FaultPolicy` or `FaultPolicyNoMachine`.
11+
- Protections now use `ProtectionEngine` and `Protections::Rules::*`; the previous `ProtectionManager` and boundary split is no longer the active model.
12+
- Runtime reporting is unified under `PANIC(...)`, `FAULT(...)`, `WARNING(...)`, and `INFO(...)`.
13+
- The real bootstrap path is `Board::init()`. Legacy `STLIB::start()`, `STLIB::update()`, `STLIB_LOW::start()`, and `STLIB_HIGH::start()` must not be used as the integration path.
14+
15+
Migration notes:
16+
17+
- Declare the board as `Board<YourFaultPolicy, ...>`.
18+
- Use `FaultPolicy<app_machine, on_fault_enter>` when you want an operational state machine nested under the global runtime.
19+
- Use `FaultPolicyNoMachine<on_fault_enter>` when you only need a fault-entry callback.
20+
- Use `DefaultFaultPolicy` when you want neither an operational machine nor a fault-entry callback.
21+
- In the main loop, drive the runtime through `FaultController::check_transitions()`, `ProtectionEngine::evaluate()`, and `Diagnostics::Hub::flush()`.

0 commit comments

Comments
 (0)