From 937412eda6eccfc9819fb2ff323c28650bab7e37 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Sat, 20 Jun 2026 19:31:54 -0400 Subject: [PATCH] NEO-145: reconcile implementation plan with shipped catalog load. --- docs/plans/NEO-145-implementation-plan.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/plans/NEO-145-implementation-plan.md b/docs/plans/NEO-145-implementation-plan.md index 140b34b..11747a8 100644 --- a/docs/plans/NEO-145-implementation-plan.md +++ b/docs/plans/NEO-145-implementation-plan.md @@ -48,9 +48,16 @@ Fail-fast startup load of `content/contracts/*_contract_templates.json` with **C ## Acceptance criteria checklist -- [ ] Host exits on invalid contract catalog or broken encounter refs at startup. -- [ ] Registry resolves template metadata by id. -- [ ] `dotnet test` covers loader gates. +- [x] Host exits on invalid contract catalog or broken encounter refs at startup. +- [x] Registry resolves template metadata by id. +- [x] `dotnet test` covers loader gates. + +## Implementation reconciliation (shipped) + +- **Contract catalog:** `Game/Contracts/` loader, catalog, `IContractTemplateRegistry`, `PrototypeE7M4ContractCatalogRules` (roster, freeze, cross-ref, band caps synced to `PROTOTYPE_E7M4_*`), DI + `Program.cs` load order (after quest catalog). +- **Config:** `ContentPathsOptions` `ContractsDirectory` / `ContractTemplateSchemaPath`; `InMemoryWebApplicationFactory` pins repo `content/contracts`. +- **Tests:** `ContractTemplateCatalogLoaderTests`, `ContractTemplateRegistryTests`, host boot via `Host_ShouldResolveContractCatalogFromDi` (839 tests green). +- **Docs:** `server/README.md` contract catalog section. ## Technical approach