Two fixes for the reactor unit-confusion drift surfaced in the 2026-05-19
wiki uplift:
1. X_A_init default in reactor.html was 0.001 g COD/m³, which is
effectively zero nitrifying biomass — the reactor cannot nitrify
ammonia under that initial condition (per the project memory note,
~50 mg/L is the minimum). Aligned to the schema default of 200 in
generalFunctions/src/configs/reactor.json. Same change in
test/helpers/factories.js so the test factory mirrors the operational
default; tests that need low-biomass scenarios already override.
2. New test/basic/timestep-units.basic.test.js locks in the
`config.timeStep is interpreted as seconds` contract — verifies the
engine's days-stored / seconds-input invariant and asserts the
schema declares `unit: "s"`, `default: 1`. Companion to the schema
fix in the generalFunctions submodule.
Full test suite: 49/49 pass (was 46/46 + 3 new).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
For all 11 nodes with auto-gen markers: wiki/Home.md sections 5 (topic
contract) and 9 (data model) regenerated via npm run wiki:all. New
Unit column shows '<measure> (default <unit>)' for declared topics,
'—' otherwise. Effect column now uses descriptor.description (P11.2
field) overriding the generic per-prefix fallback.
For rotatingMachine + reactor: Phase 10 test rewrites — 3 + 8 files
moved off private nodeClass internals (_attachInputHandler, _commands,
_pendingExtras, _registerChild, _tick, etc.) to the public
BaseNodeAdapter surface (node.handlers.input, node.source.*).
+6 / +7 net new tests.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Refactor of reactor to use BaseNodeAdapter + commandRegistry + statusBadge.
reactor follows the platform refactor plan in .claude/refactor/MODULE_SPLIT.md.
Tests stay green; CONTRACT.md generated; legacy aliases preserved.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>