Files
LEDMatrix/test/fixtures/run_loop_golden/plugin_error.json
ChuckandClaude Opus 5.5 9edeb6da14 fix(display): a raising display() counts as a circuit-breaker failure (#707)
The first-frame dispatch (_dispatch_first_frame) now asks PluginExecutor.execute_display() to re-raise (raise_errors=True) and records a raise inside the executor as a breaker failure, with the original exception as last_error, instead of a success. The screen is still an empty pass and rotation is unchanged; a hung display() is still recorded once, as a hang. The run-loop golden trace plugin_error.json is regenerated (crashy now records health failures and is skipped by the breaker), and behaviour 7 is dropped from docs/RUN_LOOP_REDESIGN.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 14:51:38 -04:00

30 lines
1.1 KiB
JSON

{
"screens": [
[0.0, "clock", 10.0, "duration", 10, false],
[10.0, "broken_a", 0.0, "error", 0, null],
[10.0, "weather", 10.0, "duration", 10, true],
[20.0, "crashy", 0.0, "raised", 1, true],
[20.0, "clock", 10.0, "duration", 10, true],
[30.0, "broken_a", 0.0, "error", 0, null],
[30.0, "weather", 10.0, "duration", 10, true],
[40.0, "crashy", 0.0, "raised", 1, true],
[40.0, "clock", 10.0, "duration", 10, true],
[50.0, "broken_a", 0.0, "breaker", 0, null],
[50.0, "broken_b", 0.0, "breaker", 0, null],
[50.0, "weather", 10.0, "duration", 10, true],
[60.0, "crashy", 0.0, "breaker", 0, null],
[60.0, "clock", 10.0, "duration", 10, true],
[70.0, "broken_a", 0.0, "breaker", 0, null],
[70.0, "broken_b", 0.0, "breaker", 0, null],
[70.0, "weather", 10.0, "duration", 10, true],
[80.0, "crashy", 0.0, "breaker", 0, null],
[80.0, "clock", 10.0, "horizon", 10, true]
],
"events": [
[10.0, "health-failure", "broken"],
[20.0, "health-failure", "crashy"],
[30.0, "health-failure", "broken"],
[40.0, "health-failure", "crashy"]
]
}