chore: cut 0.3.0 — new tuning crate, retuned lifecycle constants
- Adds an in-repo `tuning/` crate that solves the four-knob LED-threshold tuning problem as a 4-objective Pareto search using published `heuropt` 0.8 (NSGA-III + a-posteriori weighted ranking), replacing `scripts/tune_runtime.py`'s single-composite-score grid. `just tune` runs it; the crate is its own workspace root with a local `.cargo/config.toml` overriding the firmware's inherited `thumbv6m-none-eabi` build target so it can use `std`. - Retunes the shipping defaults from the new Pareto front: `RUN_DURATION` 4h00m → 3h51m, `YELLOW_AT` 30 → 22, `RED_AT` 25 → 11, `FAST_RED_AT` 20 → 4 (LED thresholds in minutes-remaining). Across 1,000 simulated workdays the new combination averages 26 minutes of lunch sleep and lands in the 12:15–12:45 sweet spot on ~57 % of days, with zero mean work-time failure and ~2 min/day of after-hours waste. - Bumps `config.device_release` 0x0200 → 0x0300 to match firmware version 0.3.0. - README "Why four hours…" → "Why these timings…", rewritten for the new methodology with the actual run statistics. `src/config.rs` module-level + lifecycle/phase comments updated accordingly. - Picks up a small `cargo fmt` drift in `src/chart.rs` and `src/led.rs` that had crept in under the 0.2.0 module split. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -132,3 +132,10 @@ bootstrap:
|
||||
# Show firmware file size summary.
|
||||
stats: uf2
|
||||
@ls -lh {{ out_release }} {{ out_bin }} {{ out_uf2 }}
|
||||
|
||||
# Run the multi-objective NSGA-III tuner against the published heuropt crate
|
||||
# and print the recommended (RUN_DURATION, YELLOW_AT, RED_AT, FAST_RED_AT)
|
||||
# pick. See README "Why these timings…" for the methodology and
|
||||
# `tuning/src/main.rs` to edit the day model or weights.
|
||||
tune:
|
||||
cd tuning && cargo run --release
|
||||
|
||||
Reference in New Issue
Block a user