diff --git a/tests/mars_stream/test_domains.cpp b/tests/mars_stream/test_domains.cpp index aa9806e..3531ac5 100644 --- a/tests/mars_stream/test_domains.cpp +++ b/tests/mars_stream/test_domains.cpp @@ -124,7 +124,17 @@ int main() { // 2026-09-09, 22 saves: 724 fields observed, 490 vary, 234 do not. Nearly a // third of the format we call "99.99% typed" has been seen holding exactly // one value. `tscr` was one of those 234 until a one-turn tech moved it. - const size_t kVaryingBaseline = 490; + // + // 2026-09-09, 43 saves (lane DW): 755 fields observed, 538 vary, 217 do not. + // The corpus doubled and the census grew by 31 fields, of which 19 are this + // lane's newly typed bodies -- the `usp`/`usc` pair of a name-generator record, + // the twelve of a `Sprj` back-engineering project, and the five of a stored + // formation point. Only two of those 19 have ever been seen to move + // (`FTPShID`, `FTPDesID`), which is exactly why the count of CONSTANTS rose + // faster than the count of varying fields: typing a body honestly adds far + // more unexercised fields than exercised ones, and this census is the place + // that stays visible. + const size_t kVaryingBaseline = 538; CHECK(varying >= kVaryingBaseline); std::printf("test_domains: %s (%zu save(s), %d failure(s))\n", fails ? "FAILED" : "ok", saves.size(), fails); diff --git a/tests/mars_stream/test_save.cpp b/tests/mars_stream/test_save.cpp index e257514..6e70fda 100644 --- a/tests/mars_stream/test_save.cpp +++ b/tests/mars_stream/test_save.cpp @@ -142,6 +142,16 @@ static void check_save(const std::string& path, const char* dump_dir) { // With TurnCommands_v5 typed, the only items left carried as Nodes are the // two of the MT19937 block, which is deliberately opaque. CHECK(pct >= 99.99); + // The percentage is the WEAKER half of this ratchet and cannot be raised + // usefully: it is 2/items, so tightening it would fail on a *small* save + // that types perfectly and pass a big one that carries a new opaque body. + // The strong form is the item count itself. 2026-09-09, 43 saves: the only + // opaque items in any save are the MT19937 block's two (`RNG`), so the + // ratchet is that exact set. A newly-carried body breaks this line first, + // and it breaks it on the save that has the body, not on the smallest one. + // Raise it -- by typing the body -- the way rule 27 says; never widen it. + CHECK(cov.opaque == 2); + CHECK(cov.opaque_by_tag.size() == 1 && cov.opaque_by_tag.count("RNG") == 1); } // --- round trips ------------------------------------------------------------------