docs: refresh windup writeup to past tense, link architecture diagram
overshoot_hold_windup.md read like a live plan ("not yet implemented")
even though the fix had already shipped; reworks it into a past-tense
record with corrected line numbers and test descriptions matching what
was actually built. Fixes a stale pid_heat reference in
temp_control_calibration.md.
TODO.md's windup item still claimed test coverage was "outstanding"
from before the test suite was added; corrects that and the "No
automated tests" item above it to reflect current coverage. Both docs
now link docs/fsm_states.png (durable) and the Claude Artifact URL
(session-scoped) for the cascade architecture diagram.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DGQhVQ2Y3yXAQTXhrxVd5u
This commit is contained in:
+23
-11
@@ -32,13 +32,17 @@ git history for `temp_controller.py`/`temp_controller_smith.py`).
|
||||
hold_scale)` — the overshoot-compensation scheduling logic now lives
|
||||
entirely in the temp controller, not the generic `Pid` block.
|
||||
|
||||
- [ ] **No automated tests.** `tests/components/pid/` was added once
|
||||
- [ ] **No automated tests for the heat-rate filtering or Smith
|
||||
correction specifically.** An earlier `tests/components/pid/` suite
|
||||
(stdlib `unittest`, no pytest) covering FSM transitions, anti-windup
|
||||
clamping, and Kalman convergence, but was removed again before the
|
||||
Kalman-filter removal/Smith rewrite, so none of the current
|
||||
`temp_controller*.py` behavior (backward-difference + low-pass
|
||||
filtered heat rate, the two-model Smith correction) has test
|
||||
coverage. This drives a physical heater — worth re-adding.
|
||||
clamping, and Kalman convergence was removed before the Kalman-filter
|
||||
removal/Smith rewrite. A new `tests/components/pid/` suite was added
|
||||
alongside the HOLD-windup fix below (`test_pid.py`,
|
||||
`test_temp_controller_closed_loop.py`) covering the `yi_max` clamp and
|
||||
closed-loop disturbance/ramp/transition behavior, but
|
||||
`_compute_heatrate()`'s backward-difference + low-pass filtering and
|
||||
the two-model Smith correction itself still have no dedicated
|
||||
coverage. This drives a physical heater — worth extending.
|
||||
|
||||
- [ ] **`set_model_power` isn't defined on every controller, but
|
||||
`brewpi.py` wires it unconditionally.** `brewpi.py` always does
|
||||
@@ -81,11 +85,19 @@ git history for `temp_controller.py`/`temp_controller_smith.py`).
|
||||
`Inner.Cool` so the *same* PID instance gets a tight `yi_max` only while
|
||||
`HOLD` is driving it and stays unclamped for real `HEAT` ramps — no
|
||||
freeze/thaw, bumpless transfer preserved for free. See
|
||||
`docs/overshoot_hold_windup.md` for the full writeup. This was also a
|
||||
breaking config change (`Hold`/`Heat`/`Cool` → `Outer`/`Inner.*`) —
|
||||
`config.json`, the templates, and the demo scripts were all migrated.
|
||||
Test coverage for this (closed-loop disturbance/ramp/transition cases)
|
||||
is still outstanding — see the "No automated tests" item above.
|
||||
`docs/overshoot_hold_windup.md` for the full writeup, and
|
||||
`docs/fsm_states.png` for a static screenshot of the FSM-states panel
|
||||
of the cascade architecture diagram (states/thresholds, and the
|
||||
HOLD→HEAT no-reset note). The full interactive diagram (signal-flow
|
||||
cascade + FSM inset + config-mapping table) is a Claude Artifact,
|
||||
not a repo file: https://claude.ai/code/artifact/a32e4752-b4a6-4153-b344-eb2423eb6512
|
||||
— only reachable by whoever has access to the Claude account/session
|
||||
that created it, not a durable link for the team; `docs/fsm_states.png`
|
||||
is the durable copy. This was also a breaking config change (`Hold`/`Heat`/`Cool` →
|
||||
`Outer`/`Inner.*`) — `config.json`, the templates, and the demo scripts
|
||||
were all migrated. Test coverage (closed-loop disturbance/ramp/transition
|
||||
cases) was added under `tests/components/pid/` — see the "No automated
|
||||
tests" item above.
|
||||
|
||||
- [ ] **`kalman.py` is now dead code in production.** Neither
|
||||
`temp_controller.py` nor `temp_controller_smith.py` uses `Kalman`
|
||||
|
||||
Reference in New Issue
Block a user