Wave A: bump submodule pointers + mark 4 OPEN_QUESTIONS resolved

generalFunctions ff9aec8 → f117546  B3.1+B3.2+B3.3 infra
  measurement      2aa8021 → e6e212a  B2.4 drop 'mAbs' event
  machineGroupControl 045a941 → 0e8cab5  B3.3 drop _unitView
  rotatingMachine  9e8463b → 84126e9  B3.3 drop _unitView
  pumpingStation   e991ea6 → ef81013  B1.2 drop 'overfillLevel'

OPEN_QUESTIONS.md: 4 entries marked RESOLVED (ChildRouter monkey-patch,
commandRegistry 'none' type, measurement 'mAbs' event, MGC unitPolicy
shape).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
znetsixe
2026-05-11 17:14:00 +02:00
parent e691551ddd
commit 30928ce378
6 changed files with 47 additions and 9 deletions

View File

@@ -119,7 +119,18 @@ See `CONTRACTS.md §2` for the BaseNodeAdapter shape.
---
## 2026-05-10 — ChildRouter wildcard subscriptions monkey-patch `emit`
## 2026-05-10 — ChildRouter wildcard subscriptions monkey-patch `emit` — RESOLVED
**Resolution (2026-05-11):** Switched to per-listener fan-out using the
canonical `POSITIONS` list and a 19-type set (`MeasurementContainer.measureMap`
keys + synthetic EVOLV types). Each partial-filter subscription enumerates
every concrete `<type>.<variant>.<position>` event name and registers a
plain `emitter.on()` per combo. Multi-parent works without emit patching.
ChildRouter.js 184 → 164 lines; 12/12 tests pass including a new
multi-parent regression test.
### Original entry below
## 2026-05-10 — ChildRouter wildcard subscriptions monkey-patch `emit` (history)
**Context:** P1.2 implementation. EventEmitter has no native wildcard.
Subscriptions with a partial filter (`{type}`-only or `{position}`-only)
@@ -254,7 +265,16 @@ adjacent to the calibration test cleanup.
---
## 2026-05-10 — `commandRegistry` payload schema needs `'none'`/`'void'` type
## 2026-05-10 — `commandRegistry` payload schema needs `'none'`/`'void'` type — RESOLVED
**Resolution (2026-05-11):** Added `'none'` to the payloadSchema.type
enum. Handler still fires; logs `warn` if `msg.payload` is non-empty
(catches accidental object payloads on trigger topics). Also added an
optional `description` field per descriptor for wikiGen consumption.
23/23 commandRegistry tests pass; CONTRACTS.md §4 updated.
### Original entry below
## 2026-05-10 — commandRegistry payload schema needs 'none'/'void' type (history)
**Context:** P3.7+P3.8. Trigger-only commands (`set.simulator`,
`set.outlier-detection`, `cmd.calibrate`) ignore their payload. The
@@ -270,7 +290,15 @@ registry schema enum during Phase 7 (topic-name standardisation).
---
## 2026-05-10 — measurement legacy `'mAbs'` emitter event
## 2026-05-10 — measurement legacy `'mAbs'` emitter event — RESOLVED
**Resolution (2026-05-11):** Removed the on-emit subscription that
bridged the analog channel's `<type>.measured.<position>` event to
`source.emitter` as `'mAbs'`. No production consumer was reading it.
96/96 measurement tests pass.
### Original entry below
## 2026-05-10 — measurement legacy 'mAbs' emitter event (history)
**Context:** P3.7+P3.8 CONTRACT.md noted that the existing `Measurement`
class emits `'mAbs'` on `source.emitter` whenever the analog output
@@ -365,7 +393,17 @@ is the natural place to enforce or document the pairing.
---
## 2026-05-10 — MGC concern modules use legacy unitPolicy object shape
## 2026-05-10 — MGC concern modules use legacy unitPolicy object shape — RESOLVED
**Resolution (2026-05-11):** UnitPolicy.declare() now exposes
canonical/output/curve as BOTH callable methods AND frozen property
bags. Both shapes work: `policy.canonical('flow')` and `policy.canonical.flow`.
Dropped the `_unitView`/`unitPolicyView` workaround in both MGC
(specificClass 336→318) and rotatingMachine (400→377). CONTRACTS.md §6
updated. All platform tests stay green.
### Original entry below
## 2026-05-10 — MGC concern modules use legacy unitPolicy object shape (history)
**Context:** The MGC concern modules (groupOps/groupOperatingPoint,
totals/totalsCalculator, combinatorics/pumpCombinations, control/strategies)