diff --git a/Directory.Build.props b/Directory.Build.props
new file mode 100644
index 0000000..c8a3c67
--- /dev/null
+++ b/Directory.Build.props
@@ -0,0 +1,10 @@
+
+
+ $(CULTLIB_ROOT)
+ $(MSBuildThisFileDirectory)..\CultLib
+
+ 42dce3611a81adc5c5fac54cadbaa5637d6022d3
+ C:\Program Files\Git\cmd\git.exe
+ git
+
+
diff --git a/Directory.Build.targets b/Directory.Build.targets
new file mode 100644
index 0000000..46d436a
--- /dev/null
+++ b/Directory.Build.targets
@@ -0,0 +1,30 @@
+
+
+
+
+ <_CultLibReference Include="@(ProjectReference)"
+ Condition="$([System.String]::Copy('%(Filename)').StartsWith('GameCult.')) or '%(Filename)' == 'CultMath'" />
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/README.md b/README.md
index 6ff7fdc..4c0d8c9 100644
--- a/README.md
+++ b/README.md
@@ -213,3 +213,14 @@ memory.
- `docs/cult-runtime-surface.md`: client CultCache document surface.
- `docs/fensalir-dependency.md`: what Aquarium consumes from Fensalir.
- `state/README.md`: persistent state machinery.
+
+## Building against CultLib
+
+Builds are pinned to CultLib 2.0.0 (tag `cultlib-unity-v2.0.0`, revision `42dce3611a81adc5c5fac54cadbaa5637d6022d3`); the build fails if the CultLib checkout differs or is dirty. Create a pinned worktree and point the build at it:
+
+```powershell
+git -C worktree add --detach cultlib-unity-v2.0.0
+dotnet build -p:CultLibRoot= # or set CULTLIB_ROOT=
+```
+
+Without an override the sibling `..\CultLib` checkout is used and must itself be at that tag.
diff --git a/src/Aquarium.Epiphany/Aquarium.Epiphany.csproj b/src/Aquarium.Epiphany/Aquarium.Epiphany.csproj
index b138201..1c730e3 100644
--- a/src/Aquarium.Epiphany/Aquarium.Epiphany.csproj
+++ b/src/Aquarium.Epiphany/Aquarium.Epiphany.csproj
@@ -11,8 +11,8 @@
-
-
+
+