Files
EVOLV/.claude/refactor
znetsixe 025bdb4c7e release: palette redesign + CoreSync scaffolding + dashboardAPI MODULE_NOT_FOUND fix
PALETTE REDESIGN (2026-05-21)
  Sidebar swatches switched from S88 level (all blue) to domain-hue per node.
  Family hue = function (rotating=orange, valves=teal, biology=green/olive,
  sampling=violet, sensor=amber, aeration=sky-blue, infrastructure=slate);
  within a family, darker = higher S88 / "more controller-ish."
  Editor-group rectangles in flow.json still follow S88 — only the
  registerType colour changed.

  Submodule bumps for palette: rotatingMachine, machineGroupControl,
  pumpingStation, valve, valveGroupControl, reactor, settler, monster,
  measurement, diffuser, dashboardAPI.

  Docs touched:
    - CLAUDE.md: palette swatch vs. editor-group bullets split out.
    - .claude/rules/node-red-flow-layout.md: new §10.0 introduces the two
      color systems, full 12-row palette table, and explicit warning not to
      mix the two hexes.
    - .claude/refactor/MODULE_SPLIT.md: per-node headers annotated with
      both `group #XXX` and `palette #XXX`.
    - .claude/refactor/WIKI_HOME_TEMPLATE.md + WIKI_TEMPLATE.md: clarify
      Mermaid classDefs visualize hierarchy, not palette swatches.
    - .claude/refactor/OPEN_QUESTIONS.md: dated decision entry with
      rationale, file list, and follow-ups.

CORESYNC SUBMODULE (new)
  nodes/coresync added pointing at https://gitea.wbd-rd.nl/RnD/coresync.
  FROST/SensorThings handoff path — first version forwards FROST-ready HTTP
  request messages on the dbase output; a downstream http-request node
  performs the POST and feeds responses back on msg.topic = "frost.response".
  Lazy stream resolver, latest-wins queue (keep first + latest, drop middle),
  knot-emit on slope change, provenance preserved in Observation parameters.

    - .gitmodules: add nodes/coresync entry.
    - package.json: register coresync as a Node-RED node.
    - generalFunctions bump: new frostFormatter + 4 node config schemas
      expose the dbase format option.
    - measurement bump: "frost" option added to dbaseOutputFormat dropdown
      (plus the in-flight data.measurement unit-handling work).
    - machineGroupControl bump: small editor compact-fields tweak alongside
      the palette change.
    - CORESYNC_FROST_INTERVIEW_HANDOFF.md added at root with interview state
      (Q20 open: slope angle vs. relative delta comparison).

DASHBOARDAPI MODULE_NOT_FOUND FIX
  package.json: dashboardapi entry path corrected to
  nodes/dashboardAPI/dashboardAPI.js. Commit e04c4a1 renamed the files to
  camelCase but missed package.json; on case-sensitive filesystems
  (Linux/Docker, where the tarball lands) the require resolved to nothing
  and the node showed MODULE_NOT_FOUND in the Node-RED palette.

MISC CLEANUP
  - examples/README.md + examples/pumpingstation-complete-example/ removal
    (build_flow.py, flow.json, README.md superseded by per-node examples).
  - jest.config.js: in-progress tweak.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 15:09:33 +02:00
..

Platform Standards (post-refactor)

Front door: start at CONTRACTS.md at the EVOLV root. It maps every contract, rule, and standard in the stack.

This directory holds the live standards that govern how every EVOLV node is shaped. They are the source of truth for any human or agent making a change. The platform refactor that produced them landed on development in May 2026; the plan artifacts that drove it are in Archive/ for historical reference only.

Live standards (read these before changing code)

File Purpose
CONTRACTS.md The exact API shapes — BaseNodeAdapter, BaseDomain, commands registry, ChildRouter, UnitPolicy, statusBadge, HealthStatus, LatestWinsGate, output ports, topic naming.
CONVENTIONS.md Code style, file/function size, comments, naming, imports, tests.
MODULE_SPLIT.md Per-node src/ concern layout + the generic node template.
WIKI_TEMPLATE.md The 14-section visual-first template every per-node wiki uses.
WIKI_HOME_TEMPLATE.md The shape of each per-node wiki/Home.md.
OPEN_QUESTIONS.md Live decisions log — append-only. Most entries are resolved; unresolved entries are what's actually in play.

How to use them

  1. Reading code in a node. The node's CONTRACT.md and src/commands/index.js are the per-node contract; the files above are the platform contract those per-node files implement.
  2. Writing new code in a node. Match MODULE_SPLIT.md for layout, CONVENTIONS.md for style, CONTRACTS.md for the base-class API surface, and add to OPEN_QUESTIONS.md if you discover something unclear rather than inventing a decision.
  3. Touching generalFunctions. Any new export needs a CONTRACT.md entry in nodes/generalFunctions/CONTRACT.md and, if it introduces a new platform shape, a section in CONTRACTS.md here.
  4. Updating a wiki page. Generated sections (topic-contract, data-model) are produced by npm run wiki:all per submodule — never hand-edit between the BEGIN AUTOGEN / END AUTOGEN markers.

Archive

Archive/ holds the refactor plan (now done): CONTINUE_HERE.md, TASKS.md. They describe how the platform got from pre-refactor to the current shape. They are not authoritative for new work — the files above are.