From 33664434f95b59253d0de50d32d9ef770dace13d Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Tue, 29 Sep 2026 04:21:58 +0200 Subject: [PATCH] Drop the unreachable single-record CultMesh variant refusal; tolerate duplicate catalog slots A variant needs its base beside it, so a single-record store can never hold one: that overload's refusal could not fire. SlotNames no longer throws on a catalog that repeats a slot. Co-Authored-By: Claude Sonnet 5 --- src/GameCult.Caching/CultCache.cs | 2 +- src/GameCult.Mesh/CultMeshSingleFileDocuments.cs | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/GameCult.Caching/CultCache.cs b/src/GameCult.Caching/CultCache.cs index 24c20cfc..00b849a0 100644 --- a/src/GameCult.Caching/CultCache.cs +++ b/src/GameCult.Caching/CultCache.cs @@ -2919,7 +2919,7 @@ namespace GameCult.Caching resolution.Descriptor, new CultVariantDelta(record.Variant.BaseKey, record.Variant.Overrides) { - SlotNames = persisted?.Members.ToDictionary(member => member.Slot, member => member.MemberName) + SlotNames = persisted?.Members.GroupBy(member => member.Slot).ToDictionary(group => group.Key, group => group.First().MemberName) }, null); } diff --git a/src/GameCult.Mesh/CultMeshSingleFileDocuments.cs b/src/GameCult.Mesh/CultMeshSingleFileDocuments.cs index 67cc4cdf..700b7a50 100644 --- a/src/GameCult.Mesh/CultMeshSingleFileDocuments.cs +++ b/src/GameCult.Mesh/CultMeshSingleFileDocuments.cs @@ -191,8 +191,6 @@ namespace GameCult.Mesh $"CultCache document '{path}' has schema '{record.SchemaId}', expected '{expectedSchemaId}'."); } - RefuseVariant(path, record); - if (!PublishesSchema(snapshot.SchemaCatalog, expectedSchemaId)) { throw new InvalidDataException(