A write owns the record at its key when the written type declares the record's schema id, or reads an older undeclared id of its own schema name whole (ruling own-entry-reads-whole); every other registered type's record is refused, in every cache, with or without a backing store (cache-refuses-retype). Removing a record and adding one of another type in a single batch is staged as the held record's eviction then the add, so validators, Claim, the store judges and the change journal see what they see staged apart (one-batch-retype-is-eviction-then-add); Watch<old> gets Removed and Watch<new> Added. A one-batch retype across home stores is refused by the batch-spans rule and must be staged apart. A variant rebase changes type exactly where a plain write may (variant-rebase-follows-plain-write). Store kinds outside the library get one protected per-key judge (store-kind-per-key-judge), exercised by tests/GameCult.Caching.OutsideStoreTests. Spec variants:cut_spec:cut-write-ownership-cs.r1; reports h1-h5; Soul s5 clears the merge (verdict variants:verdict:cut-write-ownership-cs.s5). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
22 lines
859 B
XML
22 lines
859 B
XML
<Project Sdk="Microsoft.NET.Sdk">
|
|
|
|
<!-- No InternalsVisibleTo reaches this assembly: a store kind written here sees only the library's public and protected surface. -->
|
|
<PropertyGroup>
|
|
<TargetFramework>net10.0</TargetFramework>
|
|
<IsPackable>false</IsPackable>
|
|
<Nullable>enable</Nullable>
|
|
<RootNamespace>GameCult.Caching.OutsideStoreTests</RootNamespace>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\..\src\GameCult.Caching\GameCult.Caching.csproj" />
|
|
<ProjectReference Include="..\..\src\GameCult.Caching.MessagePack\GameCult.Caching.MessagePack.csproj" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<PackageReference Include="NUnit" Version="4.*" />
|
|
<PackageReference Include="NUnit3TestAdapter" Version="6.2.0" />
|
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.4.0" />
|
|
</ItemGroup>
|
|
|
|
</Project>
|