Commit graph Aetheria/Directory.Build.targets
Author SHA1 Message Date
Meta Vens
97dd38dfb8 Pin CultMath 0.3.0 and make the pin guard fire on Linux
Directory.Build.props, Packages/manifest.json and the lock move to
cultmath-unity-v0.3.0 (614fd445) together. VerifyCultLibRevision matched the
CultMath ProjectReference by a backslash-spelled identity and was skipped on
Linux; it now matches by project file name. Does not pass tests: generated
content re-rolls with the new noise kernel, fixtures follow in later commits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 14:02:36 +02:00
Meta Vens
e91ba36976 Pin CultLib per package, as Unity's manifest does
The headless build pinned one CultLib revision for every package. CultMath
0.2.4 needs a newer revision than CultCache's, and bumping the single pin
would have compiled six commits of newer CultCache under the headless tests
while Unity stays on caching-unity-v1.4.0. CultMathRoot/CultMathRevision now
pin CultMath at the 0.2.4 tag; CultLibRoot/CultLibRevision keep CultCache at
45c2f40. Verified: 244 pass with both roots right, and each wrong root is
refused by name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 19:17:40 +02:00
Meta Vens
a2b54889b4 Move the ServerShared data model onto CultLib's CultCache
Cut 8b. Aetheria.Shared builds headless against GameCult.Caching and
GameCult.Caching.MessagePack at the pinned CultLib; the pin guard also
checks the Caching project exists.

Documents: [CultDocument("aetheria.<type>", "1")] with [MessagePackObject]
and integer [Key]s on the Q7 concrete types (the eight ItemData leaves,
Faction, FactionProductData, PersonalityAttribute, NameFile, OrbitData, the
four BodyData leaves, SavedZone, SavedGame, PlayerSettings, InputLayout).
SavedGame and PlayerSettings are [CultGlobal]; Name members are [CultName].
ItemData, CraftedItemData, EquippableItemData, BodyData and AgentTask lose
[MessagePackObject]; BodyData and AgentTask lose their [Union]s. InputLayout
moves into ServerShared so AetheriaStores can route it.

References: Guid and DatabaseLink<T> members become CultRecordRef<T>;
Guid-keyed maps become ref-keyed with [CultReference(..., many: true)];
ZonePack holds refs to orbit and body records. Runtime maps (Zone orbits,
bodies and belts, cargo ItemsOfType, agent targets) key by CultRecordKey.
Identity is the record key: ID comparisons become reference or key
comparisons. StatModifierData.RequireBehavior is a simple type name.

AetheriaStores.Open composes the catalog (read-only unless writable), run
and player stores, one home per type. CultRecordRefs carries IsSet, a
null-safe Get(ref), RefOf (key from TryGetHandle) and Upsert.
ItemManager.GetData is the one item resolution path. MathResolver is
declared by [assembly: CultCacheFormatterResolver].

Inspector attributes: text, range and asset path map onto CultLib's
CultInspector attributes (asset path only on string members); every
replaced Aetheria attribute keeps [Inspectable] for the runtime panel.

Builds: Aetheria.Shared. Does not build: AetherDb and the Unity project,
which follow.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 19:00:42 +02:00
Meta Vens
ee32cd4571 Scope the CultLib pin guard to projects that reference CultMath
Directory.Build.targets is imported by Unity's generated root csprojs too,
which take CultMath from the UPM DLL, so IDE builds of Assembly-CSharp broke
whenever the sibling CultLib was dirty, elsewhere, or missing. The guard now
runs only when a ProjectReference names the CultMath project under
CultLibRoot: Aetheria.Shared directly, AetherDb through the SDK's
transitive project references.

Checked: Assembly-CSharp skips the target; Aetheria.Shared still fails on a
wrong CultLibRevision, on CULTLIB_ROOT pointing at a scratch clone on another
commit, and AetherDb fails on that clone made dirty.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 18:00:11 +02:00
Meta Vens
4f4beb0fe4 Pin CultLib for headless builds
Directory.Build.props names CultLibRoot (CULTLIB_ROOT, else the sibling
checkout) and pins CultLibRevision to f0605367 (CultMath 0.2.1 on main).
Directory.Build.targets carries Delvehold's VerifyCultLibRevision guard,
checking for CultMath.csproj: HEAD must equal the pin and the worktree must
be clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 17:38:20 +02:00