04a52698e8087d49ad82c3388a52cb554ccb6693
BuildingSystem::appendChecksum took a const FactoryState& and touched no member of the system it hung off -- the same case as the two item visitors, and the last const method on the class. Fingerprinting the factory needs the data and nothing else: no config, no belts, no RNG. It becomes a free function in FactoryChecksum.h/.cpp, taking its three private helpers with it, and Simulation calls it directly. BuildingSystem loses its last non-mutating method and its Hasher dependency; the header is down to placement, configuration, the tick hooks and the topology mutators. The fold order is untouched -- the block moved verbatim and the call still sits between the unlock state and the belts in computeStateChecksum -- so recorded replays keep verifying. Note that no test would have caught a reordering here: DeterminismTest compares two runs of the same build, and replays carry no golden checksum, so the guarantee comes from the move being verbatim. The new header says so, for whoever adds a FactoryState field next. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ne3mejABZoLWKLh8fgpM3x
Description
No description provided
Languages
C++
96%
CMake
2.2%
Python
1.1%
C
0.7%