eb5753eea6
Two concerns bundled into one commit because the csharpier tool restore reformatted four earlier files as soon as the manifest landed: - .config/dotnet-tools.json: csharpier 1.2.6 as local tool, follows the standard .config layout (dotnet tool restore will find it). - Anvil/packages.lock.json: produced by dotnet restore, pinned alongside the csproj's RestorePackagesWithLockFile=true. - Anvil/RecipeData/RecipeDataLoadResult.cs: public record carrying the adapter's load-pass summary (counts + duration + warnings). Surfaced to the SelfTest step and future UI status surfaces. - Anvil/RecipeData/RecipeDataCatalog.cs: public DI singleton with all seven dictionary lookups, the two helper methods (ActionsForClassJob, TryResolveActionRowId), and the four meta properties from spec §2.7. Backed by a private CatalogState record that the adapter swaps in via a volatile reference - readers either see the empty initial state or the fully populated post-load snapshot, never a partial mid-build. TryResolveActionRowId carries the Cosmic-sentinel logic so hook code does not need to know about the CosmicOnly flag itself. - Reformatting in AnvilAction.cs, ActionMechanicsTable.cs, ConditionMechanicsTable.cs, and Anvil.csproj: csharpier-mandated line-wrap / blank-line tweaks. No semantic changes.