The Compile-State Satellite Is Retired

Issue #748 planned to move a NodeType's operational compile state off the authored node in three phases. Phase 1 (#752) added a dual-write: NodeTypeCompileStateMirror, installed on every per-node hub by MeshDataSource, copied the operational members onto a fixed-id satellite at {type}/_Activity/compile-state. Phase 2 was meant to move readers onto that satellite, and phase 3 to stop the writes to the node. Phase 2 never happened. No code in the platform, in MeshWeaver.Plugins or in the sample trees reads the satellite. Every compile gate, view and tool reads the NodeType node itself (Store/Publishing's ReadCompileState included). #748 was closed with the mirror still running.

What the write cost

What it looked like in production, after #5327 / #5375

The compile lane moved off the shared ThreadPool (#5327, #5375), and both portals were running images that contain those fixes. The satellites were still where the boot-time bursts landed:

instrument reading (memex-cloud, 2026-09-23)
Placement timeouts, Admin/_LogIncident/f7d8f9982b20cce5 (#5334) 9 of the 10 retained samples at 14:22Z target messagehub/*/_Activity/compile-state
Activation faults on a stalled path resolution, Admin/_LogIncident/df1ef8b39a2d8601 (#5531) 6 of the 7 retained samples at 13:33–13:35Z are compile-state satellites
Routing back-pressure crossings filed after 10:00Z (51 parsed from issue bodies) the second most common family of the oldest in-flight leg: 8 of 51, behind cache/* at 15

MeshWeaver.Plugins' gate measured the same writes earlier, as the per-package nodeops tax (#4141, folded into #2543). Its open question was whether a package's N satellite writes needed to be N serialised round trips. The answer is that none of them are needed.

The decision: remove it, don't batch it

Batching would have kept a write that has no reader. So MeshDataSource no longer installs the mirror, and NodeTypeCompileStateMirror.Install is [Obsolete] rather than deleted. A caller in in-mesh source is invisible to every CI build, so deleting the method would break that caller at runtime compile. The value shape (StatePath, StateNode, Parse) stays, so satellites that already exist can still be read. They are now inert records.

Pinned by NodeTypeCompileStateMirrorTest.NodeTypeActivationAndStateChange_WriteNoCompileStateSatellite (test/MeshWeaver.Graph.Test). The test runs on a real mesh with a positive control on each side:

It then asserts that no satellite appears for the activated type. As a negative control, the test was run with the Install call put back into MeshDataSource. It failed on that assertion.

What this does NOT establish

See Reading a Routing Saturation Report and Compiling Off the ThreadPool.