Files
jiggly/tuning/Cargo.toml
T
swaitsandClaude Opus 4.7 c45fceaf7a 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>
2026-05-07 06:32:17 -06:00

26 lines
702 B
TOML

[package]
name = "jiggly-tuning"
version = "0.1.0"
edition = "2024"
authors = ["Stephen Waits <steve@waits.net>"]
description = "Multi-objective tuner for jiggly's four lifecycle constants — internal tool, not published."
license = "MIT"
publish = false # internal tuning tool; not for crates.io
# Standalone workspace so this crate doesn't get pulled into any parent
# workspace and so cargo doesn't walk up looking for one.
[workspace]
[features]
default = ["parallel"]
parallel = ["heuropt/parallel"]
[dependencies]
heuropt = { version = "0.8", default-features = false }
rand = "0.9"
[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 1