Decision D3 · 3 of 21
Twin runtime language and placement
Python on the Plant Box behind a heartbeat gate; compiled core only if the gate fails
RECOMMENDED
- Status
- RECOMMENDED — awaiting Vinayak
- Options
- Python service on the Plant Box (ADR-033 direction); compiled (Go or Rust) core with Python fitting offline; FMU via FMI
- Trade-offs
- Python is fast to build and matches existing prototype code; compiled is easier to certify for heartbeat and memory; FMU allows vendor models
- Recommendation
- Python service on the Plant Box (ADR-033 direction), behind a heartbeat gate: p99 step time under 1 s and heartbeat under 2 s over a 72-hour soak on the D4 hardware, running the Kalman-family estimator in shadow (MHE joins only if it wins the D19 offline benchmark). Only if the gate fails, move the per-step core to a compiled module and keep fitting in Python.
- Why
- The prototype estimators are Python. A compiled rewrite before a measured failure costs months for no proven need.
- Evidence
- ADR-033; client analysis repos (offline estimators); section 7.1 latency table.
- Reversible
- Yes. The PlantState contract hides the runtime language.
- Blocks
- Fast loop in shadow (build-order phase for the Plant Box), D15 edge copy.
Page history: last 2 changes
- docs(research): retire stale research to archive/research-2026-10 with a register
ab84821 - docs(technical): split decision board into DECISIONS.md
b4db9d4