Journey event  ·  6 Sep 2026

Derived metrics layer: values computed from sensor relationships shown with provenance; device-only values as ‘possible with’ slots

LANDED 2026-09-09 (merge 1b70fc2, agent-built on feat/derived-metrics). A coherent derived layer where every value is EITHER resolved with its provenance OR unavailable with the na

  state copied from the tracker, never improved

  event date 2026-09-06

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

LANDED 2026-09-09 (merge 1b70fc2, agent-built on feat/derived-metrics). A coherent derived layer where every value is EITHER resolved with its provenance OR unavailable with the named missing input – no third state, and no code path that emits a number when an input is absent. Frontend: new lib/derived/{types,metrics,index}.ts on top of the existing climate.ts (left untouched as the pure-math floor); ZoneModel gains .derived for both tents and the room; provenance is visible in VpdHero tiles, ZoneCard tags and every EquipmentTiles tooltip. Brain: new brain/dsc_brain/derived_metrics.py (701 lines) for values that DRIVE control, which must be brain-owned rather than display-only. Metrics added: air VPD, leaf VPD, dew point, absolute humidity, condensation margin, VPD-vs-band deficit, PPFD, DLI, dehumidifier moisture load (g/m3), plus device-only ‘possible with ‘ slots for CO2 and leaf temperature. Assumptions (leaf offset, ‘coldest surface assumed at air temperature’, ‘PPFD is a calibration curve not a canopy reading’) live ON the value so a widget cannot show the number without being able to show the caveat. Railed readings (99 C, 140 % RH) are REJECTED not clamped, matching climate_math’s plausibility rails. Brain control signals return action=None when undecidable (‘no opinion, fall through to the hub ladder’) – never a silent off. Verified by the orchestrator on the merged tree: 500 passed (467 baseline + 33 new), tsc clean, SPA build clean; deployed to the Pi. NOT DONE: derived dehumidify_signal is deliberately NOT wired into the appliance ladder – switching that ladder from RH to absolute humidity changes actuator behaviour on a live grow and needs a tunable plus a real-device soak. No browser check of the widgets (would require pointing at the live brain).

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.