Catalog tests read the shipped records against the command's own table; command tests run it on a scratch catalog (dry run, apply, replay, untouched bytes, partial line, name conflict, tier accepted). AetherDb shows its internals to the test project. These tests fail until the catalog commit that follows; this commit builds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Cut 8b. AetherDb.Open composes GameData/Aetheria.cc through
AetheriaStores.Open, read-only unless clear-boss-hulls runs with apply;
save attaches GameData/run.cc when present and reads the SavedGame global.
- census, factions, station-fit, hardpoint-fit, loadout, settings,
settings-dump and clear-boss-hulls read references through the null-safe
Get(ref) and compare identity by record key (RefOf, from TryGetHandle).
Their output formats are unchanged so Cut 9 can compare them with the
Cut 0 captures.
- clear-boss-hulls lands every cleared faction in one Commit.
- The help line lists every command.
- Deleted: doctor, migrate-products, AetherDb.Save(), and
OpenWithNameFiles. The last was Cut 9's delete, but it needs the removed
multi-file store, and NameFile now routes to the catalog.
- FindRoot looks for Aetheria.Shared.csproj; AetherDB.msgpack leaves in
Cut 9.
It compiles. It cannot run until Cut 9 writes Aetheria.cc, so the pre-cut
captures do not apply to this cut.
Builds: Aetheria.Shared, AetherDb.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Unity assets are YAML, so parsing them is a solved problem. The hand rolled
indentation parser produced three bugs in sequences alone: bare scalar items
dropped, mapping items parented to the wrong node, then only the first item
of each sequence kept. YamlDotNet does the parsing; what remains is mapping
a parsed node onto a settings class by field name, with unknown keys
reported rather than silently misplaced.
The settings command keeps asserting counts, since that check is what caught
the parser both times.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Running loose script files caches a build per script and does not rebuild
when the referenced project changes, so scripts silently ran against stale
schemas: item-census held a binary predating FactionProductData and failed
with a TypeLoadException surfacing as a NullReferenceException elsewhere,
and station-fit last ran on a pre-role build. One project with commands
(doctor, census, station-fit, migrate-products) rebuilds through the normal
project graph, and shares one Open.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>