docs + submodules: final backlog clearance — valve/reactor/dashboardAPI

Superproject:
- CLAUDE.md: legacy-drift table loses the dashboardAPI row (migrated);
  drift section notes the type-id-preservation strategy for the
  remaining mgc / vgc renames.
- CONTRACTS.md: canonical-unit rule explicitly carves out reactor as
  an approved ASM-textbook exception with the conversion boundary.

Submodules:
- nodes/valve @ 167b102: CONTRACT documents valve's lack of an FSM
  maintenance state (schema mode enum accepts `maintenance` but no
  enter/exit sequences exist). Limits made explicit instead of being
  hidden as a wiki TODO.
- nodes/reactor @ 75d0413: CONTRACT now declares the approved ASM-unit
  divergence (mg/L, m³/d, °C, 1/h) with the conversion boundary spelled
  out. Closes the canonical-unit drift surfaced by the wiki audit.
- nodes/dashboardAPI @ ......: file rename (preserves type id).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
znetsixe
2026-05-19 16:37:05 +02:00
parent 424ad1e293
commit 5e2c01ece3
5 changed files with 11 additions and 5 deletions

View File

@@ -29,13 +29,14 @@ abbreviations. Quick reference:
Full rule + serving recipe for `src/editor/`: `.claude/rules/node-architecture.md`.
**Legacy drift to rename when the file is next touched** (do not introduce new
mismatches in the meantime):
mismatches in the meantime). When renaming, **keep the Node-RED type id
lowercase** (`registerType('mgc', …)` etc.) so deployed flows continue to load —
only the file paths change. `dashboardAPI` was migrated this way on 2026-05-19.
| Node | Currently | Should be |
|---|---|---|
| `machineGroupControl` | `mgc.{js,html}` | `machineGroupControl.{js,html}` |
| `valveGroupControl` | `vgc.{js,html}` | `valveGroupControl.{js,html}` |
| `dashboardAPI` | `dashboardapi.{js,html}` | `dashboardAPI.{js,html}` |
## Key Shared Library: `nodes/generalFunctions/`
- `logger` - structured logging (use this, NOT console.log)

View File

@@ -126,6 +126,11 @@ idempotent setters, `cmd.<verb>` for triggers, `evt.<noun>` for events.
Tests live in `test/{basic,integration,edge}/`. Submodule commits go in the
submodule first, then the superproject bumps the pin.
**Canonical units** (Pa / m³/s / W / K) apply to every node **except
`reactor`**, which deliberately uses ASM-kinetics literature units
(mg/L, m³/d, °C, 1/h) — documented in `nodes/reactor/CONTRACT.md`.
Conversions happen at the parent/child boundary via `UnitPolicy`.
---
## 7. Verification checklist before merge