Journey event  ·  10 Sep 2026

Calibrate desk could not show whether a calibration exists, what it was, or whether it is being used — and had no way to clear one

Operator ask, 2026-09-10. The desk showed only cfm_curves_status ('1/4 curves'), which answers neither question an operator has after running the wizard: did mine save, and is it d

  state copied from the tracker, never improved

  event date 2026-09-10

Event date 2026-09-10
Version found
Version fixed
Expected kit firmware
Release file
SHA-256
Served count
Source https://app.notion.com/3d62b4cda37081518062caa318e70b7a

Operator ask, 2026-09-10. The desk showed only cfm_curves_status (‘1/4 curves’), which answers neither question an operator has after running the wizard: did mine save, and is it doing anything. A stored calibration that the curve gate rejects is completely silent — the fan falls back to its nameplate and nothing on screen says so; the live 2×4 intake sat in that state for days. There was also no way to remove a bad capture short of editing the DB. Shipped in 3f2fc07: – GET /settings/calibration returns per duct: calibrated y/n, last_calibrated_at, the measured points with their stored unit, the fan nameplate, top reading as a % of nameplate, and the brain’s own in_use verdict plus a plain-English why_not. Computed through the same helpers the live airflow numbers use, so the card cannot disagree with the CFM figures beside it. – DELETE /settings/calibration/{device_id} clears a duct. Clears BOTH stores — device_calibration rows and the compose helpers — because _cal_points_from_storage prefers rows and falls back to helpers, so clearing only the table would resurrect an older helper-era capture. Nameplates are left alone. – ‘Calibration on record’ card on the Calibrate desk with a per-duct Clear behind a DecisionLayer confirm whose text states whether clearing will change the numbers (‘this curve is currently driving the numbers’) or not (‘already being ignored’). – The wizard’s done-step copy no longer implies the new curve is in use. Verified in-browser against a local brain seeded with the verbatim live Pi values: all four states render (never calibrated / stored-not-used / in use / helper-era with no timestamp), both clear paths work and refresh the card without a reload, nameplate preserved, other ducts untouched. brain/tests/test_calibration_visibility.py — 8 cases. Full brain suite 587 pass, SPA typecheck + build clean. NEEDS VERIFICATION: not yet deployed to the Pi (brain + SPA, so it needs the vite preview chunk-graph check before a hotpatch).

All events  ·  DSC  ·  CannaLib  ·  Site  ·  Firmware releases

Empty rows are honest

A blank cell means the tracker has no value for it. Nothing on this page is filled in to look complete.