- Update all submodule URLs from gitea.centraal.wbd-rd.nl to gitea.wbd-rd.nl - Add settler as proper submodule in .gitmodules - Add agent skills, function anchors, decisions, and improvements - Add Docker configuration and scripts - Add manuals and third_party docs - Update .gitignore with secrets and build artifacts - Remove stale .tgz build artifact Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1.9 KiB
1.9 KiB
Decision: Unit-Anchor Rollout Phase 1 (MachineGroup, PumpingStation, Valve, ValveGroupControl)
- Date: 2026-02-24
- Scope:
nodes/machineGroupControl/src/nodeClass.jsnodes/machineGroupControl/src/specificClass.jsnodes/pumpingStation/src/nodeClass.jsnodes/pumpingStation/src/specificClass.jsnodes/valve/src/nodeClass.jsnodes/valve/src/specificClass.jsnodes/valveGroupControl/src/nodeClass.jsnodes/valveGroupControl/src/specificClass.js
Context
After adopting canonical-unit anchoring in rotatingMachine, adjacent controller nodes still mixed local units, unitless writes, and implicit conversions. That left cross-node behavior sensitive to registration order and source-unit assumptions.
Decision
- Apply the same canonical storage policy per node:
- internal storage in canonical units (
Pa,m3/s,W,Kwhere relevant), - preferred/output units for operator-facing status and output payloads.
- Enable strict measurement ingress discipline on migrated nodes:
strictUnitValidation: true,throwOnInvalidUnit: true,- required unit for physically dimensional types (
flow,pressure,power,temperature, and node-specific equivalents).
- Replace unitless runtime writes/reads with explicit-unit helpers in each node’s domain class, including child-machine/child-valve interactions.
Consequences
- Cross-node calculations now run against a deterministic unit anchor in phase-1 nodes.
- Status/output values remain in preferred/output units, while internal math stays canonical.
- Legacy paths that send dimensional values without units now fail fast instead of silently coercing.
Rollback Notes
- Revert the eight files listed in scope.
- Restore previous
MeasurementContainerinitialization (non-canonical, non-strict behavior) in each node. - Remove helper-based explicit unit reads/writes and revert to prior direct chain usage.