@its-not-rocket-science/ananke 0.1.69 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/CHANGELOG.md +254 -0
  2. package/README.md +150 -432
  3. package/STABLE_API.md +113 -490
  4. package/conformance/README.md +46 -44
  5. package/conformance/lockstep-sequence.json +395 -395
  6. package/conformance/phase-order.json +21 -0
  7. package/conformance/replay-parity.json +65 -65
  8. package/conformance/state-hash-regression.json +39 -0
  9. package/conformance/state-hash.json +23 -22
  10. package/dist/src/conformance.d.ts +8 -2
  11. package/dist/src/content/index.d.ts +3 -0
  12. package/dist/src/content/index.js +2 -0
  13. package/dist/src/content/injector.d.ts +19 -0
  14. package/dist/src/content/injector.js +61 -0
  15. package/dist/src/content/loader.d.ts +3 -0
  16. package/dist/src/content/loader.js +170 -0
  17. package/dist/src/content/types.d.ts +56 -0
  18. package/dist/src/content/types.js +1 -0
  19. package/dist/src/content/validator.d.ts +6 -0
  20. package/dist/src/content/validator.js +14 -0
  21. package/dist/src/content-pack.d.ts +3 -2
  22. package/dist/src/content-pack.js +205 -10
  23. package/dist/src/data-governance.d.ts +73 -0
  24. package/dist/src/data-governance.js +188 -0
  25. package/dist/src/debug.d.ts +6 -0
  26. package/dist/src/debug.js +9 -0
  27. package/dist/src/determinism.d.ts +12 -0
  28. package/dist/src/determinism.js +93 -0
  29. package/dist/src/dialogue.d.ts +41 -0
  30. package/dist/src/dialogue.js +113 -2
  31. package/dist/src/economy.d.ts +97 -3
  32. package/dist/src/economy.js +191 -37
  33. package/dist/src/history/autosave.d.ts +19 -0
  34. package/dist/src/history/autosave.js +98 -0
  35. package/dist/src/history/timetravel.d.ts +28 -0
  36. package/dist/src/history/timetravel.js +61 -0
  37. package/dist/src/index.d.ts +19 -31
  38. package/dist/src/index.js +20 -38
  39. package/dist/src/model3d.js +63 -2
  40. package/dist/src/narrative/combat-logger.d.ts +25 -0
  41. package/dist/src/narrative/combat-logger.js +97 -0
  42. package/dist/src/narrative/plausibility.d.ts +30 -0
  43. package/dist/src/narrative/plausibility.js +70 -0
  44. package/dist/src/narrative-layer.d.ts +2 -0
  45. package/dist/src/narrative-layer.js +2 -0
  46. package/dist/src/navigation/causal-chain.d.ts +26 -0
  47. package/dist/src/navigation/causal-chain.js +74 -0
  48. package/dist/src/netcode.d.ts +1 -1
  49. package/dist/src/netcode.js +1 -1
  50. package/dist/src/performance/adaptive-tick.d.ts +23 -0
  51. package/dist/src/performance/adaptive-tick.js +50 -0
  52. package/dist/src/plugins/loader.d.ts +23 -0
  53. package/dist/src/plugins/loader.js +86 -0
  54. package/dist/src/plugins/registry.d.ts +11 -0
  55. package/dist/src/plugins/registry.js +28 -0
  56. package/dist/src/plugins/types.d.ts +31 -0
  57. package/dist/src/plugins/types.js +7 -0
  58. package/dist/src/replay.js +5 -2
  59. package/dist/src/scenario.js +2 -1
  60. package/dist/src/serialization/binary.d.ts +5 -0
  61. package/dist/src/serialization/binary.js +193 -0
  62. package/dist/src/session.d.ts +115 -0
  63. package/dist/src/session.js +228 -0
  64. package/dist/src/sim/ai/decide.js +1 -1
  65. package/dist/src/sim/ai/personality.js +2 -2
  66. package/dist/src/sim/bodyplan.d.ts +30 -0
  67. package/dist/src/sim/context.d.ts +2 -0
  68. package/dist/src/sim/kernel.js +80 -1294
  69. package/dist/src/sim/normalization.d.ts +12 -0
  70. package/dist/src/sim/normalization.js +92 -0
  71. package/dist/src/sim/resolvers/attack-resolver.d.ts +30 -0
  72. package/dist/src/sim/resolvers/attack-resolver.js +310 -0
  73. package/dist/src/sim/resolvers/capability-resolver.d.ts +15 -0
  74. package/dist/src/sim/resolvers/capability-resolver.js +270 -0
  75. package/dist/src/sim/resolvers/grapple-resolver.d.ts +28 -0
  76. package/dist/src/sim/resolvers/grapple-resolver.js +70 -0
  77. package/dist/src/sim/resolvers/shoot-resolver.d.ts +27 -0
  78. package/dist/src/sim/resolvers/shoot-resolver.js +212 -0
  79. package/dist/src/sim/resolvers/treat-resolver.d.ts +16 -0
  80. package/dist/src/sim/resolvers/treat-resolver.js +77 -0
  81. package/dist/src/sim/step/apply/intents.d.ts +6 -0
  82. package/dist/src/sim/step/apply/intents.js +83 -0
  83. package/dist/src/sim/step/kernel-pipeline.d.ts +9 -0
  84. package/dist/src/sim/step/kernel-pipeline.js +15 -0
  85. package/dist/src/sim/step/phases/capability-phase.d.ts +8 -0
  86. package/dist/src/sim/step/phases/capability-phase.js +65 -0
  87. package/dist/src/sim/step/phases/cooldowns-phase.d.ts +3 -0
  88. package/dist/src/sim/step/phases/cooldowns-phase.js +37 -0
  89. package/dist/src/sim/step/phases/prepare-phase.d.ts +10 -0
  90. package/dist/src/sim/step/phases/prepare-phase.js +33 -0
  91. package/dist/src/sim/step/pipeline.d.ts +2 -0
  92. package/dist/src/sim/step/pipeline.js +15 -0
  93. package/dist/src/sim/step/resolvers/impact-resolver.d.ts +9 -0
  94. package/dist/src/sim/step/resolvers/impact-resolver.js +55 -0
  95. package/dist/src/sim/step/world-phases.d.ts +7 -0
  96. package/dist/src/sim/step/world-phases.js +15 -0
  97. package/dist/src/sim/step/world-step-context.d.ts +23 -0
  98. package/dist/src/sim/step/world-step-context.js +1 -0
  99. package/dist/src/sim/systemic-toxicology.js +1 -1
  100. package/dist/src/sim/team.js +2 -2
  101. package/dist/src/sim/testing.js +4 -3
  102. package/dist/src/sim/toxicology.d.ts +1 -1
  103. package/dist/src/sim/toxicology.js +1 -1
  104. package/dist/src/sim/world.d.ts +17 -24
  105. package/dist/src/snapshot.js +3 -6
  106. package/dist/src/tier2.d.ts +19 -0
  107. package/dist/src/tier2.js +21 -0
  108. package/dist/src/tier3.d.ts +10 -0
  109. package/dist/src/tier3.js +12 -0
  110. package/dist/src/version.d.ts +6 -0
  111. package/dist/src/version.js +8 -0
  112. package/dist/src/wasm/bridge.d.ts +14 -0
  113. package/dist/src/wasm/bridge.js +84 -0
  114. package/dist/src/wasm-kernel.d.ts +2 -0
  115. package/dist/src/wasm-kernel.js +1 -0
  116. package/dist/src/world-evolution-backend/engine.d.ts +4 -0
  117. package/dist/src/world-evolution-backend/engine.js +347 -0
  118. package/dist/src/world-evolution-backend/host-schema.d.ts +145 -0
  119. package/dist/src/world-evolution-backend/host-schema.js +375 -0
  120. package/dist/src/world-evolution-backend/index.d.ts +1 -0
  121. package/dist/src/world-evolution-backend/index.js +1 -0
  122. package/dist/src/world-evolution-backend/open-world-host-adapter.d.ts +96 -0
  123. package/dist/src/world-evolution-backend/open-world-host-adapter.js +208 -0
  124. package/dist/src/world-evolution-backend/profiles.d.ts +4 -0
  125. package/dist/src/world-evolution-backend/profiles.js +136 -0
  126. package/dist/src/world-evolution-backend/public.d.ts +11 -0
  127. package/dist/src/world-evolution-backend/public.js +7 -0
  128. package/dist/src/world-evolution-backend/reproducibility.d.ts +8 -0
  129. package/dist/src/world-evolution-backend/reproducibility.js +35 -0
  130. package/dist/src/world-evolution-backend/timeline.d.ts +6 -0
  131. package/dist/src/world-evolution-backend/timeline.js +337 -0
  132. package/dist/src/world-evolution-backend/types.d.ts +138 -0
  133. package/dist/src/world-evolution-backend/types.js +1 -0
  134. package/dist/src/world-evolution-host-backend.d.ts +51 -0
  135. package/dist/src/world-evolution-host-backend.js +97 -0
  136. package/dist/src/world-evolution.d.ts +201 -0
  137. package/dist/src/world-evolution.js +543 -0
  138. package/dist/src/world-factory.js +2 -1
  139. package/dist/tools/pack-cli.js +55 -2
  140. package/docs/bridge-contract.md +140 -332
  141. package/docs/completion-evidence-dashboard.md +63 -0
  142. package/docs/host-contract.md +86 -310
  143. package/docs/host-world-evolution-schema.md +155 -0
  144. package/docs/integration-primer.md +29 -22
  145. package/docs/migration-monolith-to-modular.md +102 -120
  146. package/docs/package-architecture.md +116 -323
  147. package/docs/plugins/README.md +42 -0
  148. package/docs/plugins/hooks.md +22 -0
  149. package/docs/plugins/publishing.md +29 -0
  150. package/docs/plugins/security-model.md +273 -0
  151. package/docs/project-overview.md +30 -30
  152. package/docs/release-dashboard.md +47 -0
  153. package/docs/session-api.md +127 -0
  154. package/docs/stable-api-manifest.json +52 -0
  155. package/docs/trust-dashboard.md +37 -0
  156. package/docs/versioning.md +256 -245
  157. package/docs/wire-protocol.md +140 -209
  158. package/docs/world-evolution-backend.md +200 -0
  159. package/docs/world-evolution-engine.md +150 -0
  160. package/docs/world-evolution-host-backend.md +70 -0
  161. package/docs/world-evolution-orchestration.md +248 -0
  162. package/package.json +125 -6
  163. package/schema/content-pack.schema.json +85 -0
  164. package/schema/plugin.schema.json +57 -0
  165. package/schema/world-evolution-input.schema.json +196 -0
package/CHANGELOG.md CHANGED
@@ -6,6 +6,260 @@ Versioning follows [Semantic Versioning](https://semver.org/).
6
6
 
7
7
  ---
8
8
 
9
+ ## [Unreleased]
10
+
11
+ ## [0.5.1] — 2026-06-14
12
+
13
+ ### Added
14
+
15
+ - **STABLE_API.md** — new "Tier-2 stable" section promoting `sim/combat`, `sim/disease`, and `sim/hazard` subpaths to explicit API-stable status (`@minor`-bounded, no breaking changes without a CHANGELOG entry). Includes stable usage examples and a "Path to Tier-1" note.
16
+ - **docs/api/index.html** — new styled API reference landing page: Tier-1/Tier-2 export tables, install CTA with copy button, live npm registry version check, links to TypeDoc generation instructions.
17
+ - **docs/map/index.html** — explanation banner describing the 180-day world simulation; new "Polity Tools" panel for adding custom polities (name, position, colour), linking trade or war routes between any two polities, and clearing custom overlays.
18
+ - **docs/mythology/index.html** — complete JS for chronicle/legend system: `renderChronicle`, `renderLegends`, `addChronicle`, `deleteChronicle`, `promoteToLegend`, `saveChronicle` (localStorage `ananke_chronicles`), `exportChronicle` (JSON download), `importChronicle` (paste JSON), delete and promote buttons per entry.
19
+
20
+ ### Changed
21
+
22
+ - **docs/conformance/index.html** — combat, disease, and hazard subpaths now shown as "Tier 2 stable ✓" with key exports and coverage detail cards.
23
+ - **docs/editors/scenario-builder.html** — added editor CTA links, Generated TypeScript CTAs (Copy, Download, Save to localStorage, Load), Empirical Reference explanation with 11-dataset dropdown.
24
+ - **docs/data-governance/index.html** — added "What is data governance?" section explaining the three layers: physics provenance, API stability, and release integrity.
25
+ - **docs/world-evolution/index.html** — added "What is world evolution?" section covering Session, Checkpoint, Fork, Diff, and Replay with code references and a typical host workflow walkthrough.
26
+ - **docs/narrative-stress/index.html** — added real-film/book push-scale examples (Gladiator → Dragon Ball Z), completed the beat sequence editor (add + delete beats, live average push display), updated Tier-3 note.
27
+ - **docs/combat/index.html** — added "Your saved archetypes" panel reading `ananke_species`/`ananke_bodyplan` from localStorage; import JSON and clear CTAs; PR contribution instructions.
28
+ - **docs/zoo/index.html** — added three new scenarios (Acid Pool Exposure, Cavalry Charge vs Infantry, Untreated Wound Infection); save/download/import scenario CTAs; contribute sidebar panel.
29
+ - **docs/arena/index.html** — auto-populates fighter selects from saved archetypes; Generate run plan + Execute plan CTAs; import archetype JSON.
30
+ - **docs/environment/index.html** — expanded all five hazard type cards with full effect rows; added three new weather conditions (Hurricane, Extreme Humidity, Rarified Atmosphere); custom hazard creator form (save to localStorage `ananke_hazards`, download `.ts` snippet, import JSON); PR instructions.
31
+ - **docs/epidemiology/index.html** — custom disease profile form (save to `ananke_diseases`, download `.ts` snippet, import JSON) with all DiseaseProfile fields.
32
+ - **docs/economy/index.html** — custom catalogue item form (save to `ananke_items`, download JSON, import JSON).
33
+ - **docs/world-client/index.html** and **docs/world-client/replication-client.html** — added server-requirement banners explaining WebSocket server setup (local `ts-node`, Fly.io/Railway for deployment).
34
+
35
+ ## [0.5.0] — 2026-04-23
36
+
37
+ ### Added
38
+
39
+ - Expanded the Tier-2 experimental session facade documentation and plan artifacts for embedders (`docs/session-api.md`, `docs/session-api-plan.md`) with an explicit contract-level API inventory for the `@its-not-rocket-science/ananke/session` subpath.
40
+ - Added additional world-evolution alias coverage in `test/session-facade.test.ts` to assert `runSession(..., { worldEvolution })` behavior for host-side JSON-first integrations.
41
+
42
+ ### Changed
43
+
44
+ - Bumped package version to `0.5.0` and synchronized runtime version source-of-truth files for tag-driven CI/npm release flow alignment.
45
+ - Refreshed release preparation evidence (`docs/release-prep-session-api.md`) to track the current tag-driven release path (`scripts/tag-release.sh` + `.github/workflows/release.yml`).
46
+
47
+ ---
48
+
49
+ ## [0.4.1] — 2026-04-23
50
+
51
+ ### Changed
52
+
53
+ - Normalized documentation version references to use `package.json` as canonical source, replaced stale hard-coded Ananke versions in companion docs, and added `npm run check-doc-version-sync` to catch future markdown drift.
54
+ - Performed adopter-confidence docs hardening across README/first-hour/stable API/module/bridge/wire docs and added `docs/support-boundaries.md` to make maintainer promises, exclusions, and version-pinning guidance explicit.
55
+ - Wired the shipped `./session` subpath into host-facing docs (`docs/session-api.md`, module index, and integration primer), explicitly labeling it Tier 2 / experimental and documenting the host lifecycle (`create`, `run`, `fork`, pack load, serialize/deserialize).
56
+ - Added `examples/session-embedding-minimal/` as the canonical NPM-package-style embedding template for the new session facade, covering tactical + world-evolution create/run/fork/serialize workflows using public imports.
57
+ - Refined Tier-2 session facade ergonomics after embedding validation: `runSession` now defaults to one step, request aliases were added (`commandFrames`, `context`, `worldEvolution`), and `loadSessionPack` accepts either `{ manifest, ... }` or a raw manifest for lower-ceremony JSON-first host usage.
58
+ - Added a session subpath consumer smoke test (`test/session-subpath-smoke.test.ts`) and wired it into CI so `@its-not-rocket-science/ananke/session` imports plus `examples/session-embedding-minimal` execution are continuously verified under build/test/coverage gates.
59
+ - Improved `./session` runtime portability for browser/worker embedders by removing a transitive Node-only `node:crypto` dependency from pack checksum logic and guarding `process.env` determinism reads in the tactical kernel.
60
+
61
+ ---
62
+
63
+ ## [0.4.0] — 2026-04-22
64
+
65
+ ### Added
66
+
67
+ - Added a new Tier-2 / experimental session facade subpath: `@its-not-rocket-science/ananke/session` (`./session` in package exports) so hosts can opt into a unified session workflow without changing Tier-1 root imports.
68
+ - Added `src/session.ts` with JSON-first session types and helpers: `SessionMode`, `SessionConfig`, `SessionHandle`, `RunSessionRequest`, `RunSessionResult`, `SessionSummary`, `ForkSessionRequest`, and `LoadSessionPackResult`.
69
+ - Added session facade functions: `createSession`, `runSession`, `stepSession`, `getSessionSummary`, `forkSession`, `loadSessionPack`, `serializeSession`, and `deserializeSession`.
70
+ - Added tactical-mode initialization adapters for explicit `WorldState` and scenario JSON (plus optional seed/entity convenience bootstrap).
71
+ - Added world-evolution-mode initialization adapters for canonical snapshots with `ruleset` / `rulesetId`, delegating to existing world-evolution orchestration.
72
+ - Added deterministic serialization envelopes with explicit `schemaVersion`, `engineVersion`, `mode`, and `payload`.
73
+ - Added content-pack integration via `loadSessionPack` that delegates to existing content-pack validation/loading/scenario instantiation APIs.
74
+
75
+ ### Changed
76
+
77
+ - Bumped package version to `0.4.0` to reflect the additive new public subpath/API while preserving backward compatibility for existing Tier-1 imports.
78
+
79
+ ---
80
+
81
+ ## [0.3.0] — 2026-04-04
82
+
83
+ ### Added
84
+
85
+ - Added a new AssemblyScript WASM core in `as/world.ts`, `as/combat.ts`, `as/movement.ts`, and `as/ananke-core.ts`, compiled to `wasm/ananke-core.wasm` via `npm run build:wasm:core`.
86
+ - Added TypeScript↔WASM bridge (`src/wasm/bridge.ts`) with automatic TS fallback and new bridge tests (`test/wasm/bridge.test.ts`).
87
+ - Added WASM benchmark runner (`tools/wasm-benchmark.ts`), WASM adapter (`benchmarks/adapters/wasm.ts`), and generated comparison output support under `benchmarks/results/wasm-vs-ts-*.json`.
88
+ - Added cross-platform CI workflow `.github/workflows/wasm-build.yml` for Linux/macOS/Windows WASM builds and determinism fuzzing.
89
+ - Added advanced WASM integration docs and runnable examples (`docs/wasm-integration.md`, `examples/wasm-node.ts`, `examples/wasm-browser.html`).
90
+
91
+ ---
92
+
93
+ ## [0.2.11] — 2026-04-04
94
+
95
+ ### Fixed
96
+
97
+ - Corrected Windows-specific doubled-path bug in `tools/generate-release-dashboard.mjs` (replaced `.pathname` with `fileURLToPath` to avoid `C:\C:\...` on Windows).
98
+ - Removed `docs/release-dashboard.md` from `.gitignore`; the file is fully deterministic (derived from `CHANGELOG.md` and `package.json` only, no timestamps) and must be committed for the CI freshness check to work.
99
+ - Fixed API diff workflow: handle missing `docs/api-diff-report.md` gracefully in PR comment step; relax semver enforcement when the Tier-1 API surface is unchanged; correct version-output quoting in the API diff workflow.
100
+
101
+ ---
102
+
103
+ ## [0.2.10] — 2026-04-03
104
+
105
+ ### Added
106
+
107
+ - Automated Tier-1 API surface governance in CI (`enforce-api-surface.yml`): generates an API diff on every PR, posts a comment summarising additions/removals, and fails the build when breaking changes are detected without a major-version bump.
108
+ - Semver policy check script (`scripts/check-semver-policy.sh`) that gates merges requiring incompatible API changes.
109
+
110
+ ### Fixed
111
+
112
+ - Switched all non-publish CI workflows from `npm ci` to `npm install` so branches adding new workspace packages do not hard-fail before a lockfile regeneration commit.
113
+ - Synced `package-lock.json` with the `packages/cli` workspace that was added in v0.2.x.
114
+
115
+ ---
116
+
117
+ ## [0.2.9] — 2026-04-02
118
+
119
+ ### Changed
120
+
121
+ - Added a strict first-hour adopter guide in `docs/first-hour-adopter-path.md` focused on stable Tier-1 onboarding and deterministic success criteria.
122
+ - Added `examples/guided-first-hour.ts` as a guided runnable example that uses only stable root APIs (`createWorld`, `stepWorld`, `ReplayRecorder`, `serializeReplay`, `deserializeReplay`, `replayTo`).
123
+ - Updated `README.md` with a "Start here" onboarding section and aligned the core simulation loop snippet with stable `createWorld` usage.
124
+ - Added `npm run example:first-hour` and bumped package version to `0.2.9` with synchronized lockfile.
125
+
126
+ ---
127
+
128
+ ## [0.2.8] — 2026-04-02
129
+
130
+ ### Changed
131
+
132
+ - Reworked `examples/reference/tactical-duel` into a minimal polished reference app that runs a full deterministic duel loop using only Tier-1 stable root APIs (`createWorld`, `stepWorld`, `ReplayRecorder`, `serializeReplay`, `q`).
133
+ - Added a dedicated CI smoke test (`test/reference-tactical-duel-smoke.test.ts`) and wired it into `.github/workflows/ci.yml`.
134
+ - Updated tactical-duel usage documentation to describe the stable-API loop and quick determinism verification workflow.
135
+ - Bumped package version to `0.2.8` and synced lockfile.
136
+
137
+ ---
138
+
139
+ ## [0.2.7] — 2026-04-02
140
+
141
+ ### Changed
142
+
143
+ - Added `docs/completion-evidence-dashboard.md`: an evidence-first completion dashboard that scans repository signals, links roadmap-level claims to concrete artifacts, and explicitly flags weak credibility areas without binary over-claiming.
144
+ - Bumped package version to `0.2.7` and synced lockfile.
145
+
146
+ ---
147
+
148
+ ## [0.2.6] — 2026-04-02
149
+
150
+ ### Changed
151
+
152
+ - Added runtime conformance regression harness coverage in `test/conformance-runtime.test.ts` to validate phase-order stability and execute all state-hash fixtures as deterministic checkpoints.
153
+ - Added `phase-order.json` conformance fixture and runner support for the new `phase-order` fixture kind.
154
+ - Expanded state-hash coverage with a second fixture (`state-hash-regression.json`) covering AI-driven checkpoints at ticks 0/1/5/10/20.
155
+ - Refactored conformance fixture generation to use shared state-hash fixture builders for maintainable fixture expansion.
156
+ - Bumped package version to `0.2.6` and synced lockfile.
157
+
158
+ ---
159
+
160
+ ## [0.2.5] — 2026-04-02
161
+
162
+ ### Changed
163
+
164
+ - Externalized package-boundary mapping and allowed-dependency graph into `tools/package-boundaries.config.json` so boundary definitions are versioned as data.
165
+ - Upgraded `tools/check-package-boundaries.ts` to load mapping config, support markdown report generation (`--report-md=...`), and keep warning-mode as the default while retaining strict mode (`--strict`) for future hard enforcement.
166
+ - Added `npm run check-boundaries:report` and CI integration in `.github/workflows/ci.yml` to run boundary checks on every PR/push and publish the generated report as an artifact (warning mode initially).
167
+ - Generated `docs/package-boundary-report.md` with current cross-package violations and unmapped-file inventory for migration planning.
168
+ - Bumped package version to `0.2.5` and synced lockfile.
169
+
170
+ ---
171
+
172
+ ## [0.2.4] — 2026-04-02
173
+
174
+ ### Changed
175
+
176
+ - Replaced roadmap-wide uppercase **COMPLETE** status claims with maturity-language equivalents (`M4 VALIDATED`) to avoid binary completion framing while preserving historical phase context in narrative text.
177
+ - Added explicit maturity definitions (`M0`..`M4`) to `ROADMAP.md` and linked roadmap status language to subsystem evidence artifacts.
178
+ - Added subsystem maturity matrix in both machine-readable JSON (`docs/maturity-matrix.json`) and human-readable markdown (`docs/maturity-matrix.md`) with evidence pointers to tests, conformance fixtures, source modules, and validation reports.
179
+ - Bumped package version to `0.2.4` and synced lockfile.
180
+
181
+ ---
182
+
183
+ ## [0.2.3] — 2026-04-02
184
+
185
+ ### Changed
186
+
187
+ - Moved legacy entity/world normalization out of `stepWorld` into dedicated normalization utilities (`src/sim/normalization.ts`) so default-repair logic no longer runs in the per-tick hot path.
188
+ - Applied normalization at load/reconstruction boundaries:
189
+ - world construction (`createWorld`, `mkWorld`)
190
+ - scenario loading (`loadScenario`)
191
+ - replay deserialization/replay startup (`deserializeReplay`, `replayTo`)
192
+ - snapshot reconstruction (`applyDiff`)
193
+ - Added migration-focused regression tests for legacy shape normalization across these boundaries in `test/normalization-migration.test.ts`.
194
+ - Bumped package version to `0.2.3` and synced lockfile.
195
+
196
+ ---
197
+
198
+ ## [0.2.2] — 2026-04-02
199
+
200
+ ### Changed
201
+
202
+ - Replaced hidden `__*` world runtime side-channel fields with explicit `world.runtimeState` typing via new `WorldRuntimeState` in `src/sim/world.ts`.
203
+ - Updated kernel, AI, team hostility, snapshot diffing, and serialization pathways to read/write runtime subsystem data through `runtimeState`, preserving deterministic core hashing behavior.
204
+ - Added lint guardrails in `eslint.config.mjs` and regression test `test/no-hidden-runtime-fields.test.ts` to block reintroduction of legacy hidden runtime fields.
205
+ - Updated integration and protocol docs to document the explicit runtime-state pattern.
206
+
207
+ ---
208
+
209
+ ## [0.2.1] — 2026-04-02
210
+
211
+ ### Changed
212
+
213
+ - Introduced deterministic world-step pipeline scaffolding with explicit `WorldStepContext` and stable phase ordering metadata in `src/sim/step/world-step-context.ts` and `src/sim/step/world-phases.ts`.
214
+ - Added regression coverage for phase order in `test/kernel_phase_order.test.ts`.
215
+ - No gameplay mechanics changed; this release is an internal kernel-structure refactor foundation.
216
+
217
+ ---
218
+
219
+ ## [0.2.0] — 2026-04-02
220
+
221
+ ### Changed
222
+
223
+ - **Tier-1 API contraction (host-contract hardening):** root export `@its-not-rocket-science/ananke` now contains only the minimal stable host-facing contract:
224
+ - fixed-point utilities
225
+ - core host-required types
226
+ - world creation / scenario loading
227
+ - stepping
228
+ - replay / serialization
229
+ - bridge extraction
230
+ - Added `docs/stable-api-manifest.json` as the machine-readable Tier-1 source of truth.
231
+ - Added CI guard `check-stable-api` to fail builds if `src/index.ts` exports drift from the manifest.
232
+ - Added explicit aggregate subpaths:
233
+ - `@its-not-rocket-science/ananke/tier2`
234
+ - `@its-not-rocket-science/ananke/tier3`
235
+
236
+ ### Migration guide
237
+
238
+ If you previously imported non-core symbols from the root path, migrate as follows:
239
+
240
+ 1. **Keep root imports only for Tier-1 symbols** listed in `STABLE_API.md`.
241
+ 2. Move removed root imports to explicit subpaths:
242
+ - Tier 2: `@its-not-rocket-science/ananke/tier2` (or existing domain subpaths such as `/combat`, `/campaign`, `/social`, `/narrative`, `/anatomy`, `/crafting`, `/competence`, `/species`, `/polity`, `/catalog`).
243
+ - Tier 3: `@its-not-rocket-science/ananke/tier3`.
244
+ 3. Example:
245
+
246
+ ```ts
247
+ // before
248
+ import { stepWorld, BridgeEngine, resolveTacticalEngagement } from "@its-not-rocket-science/ananke";
249
+
250
+ // after
251
+ import { stepWorld } from "@its-not-rocket-science/ananke";
252
+ import { BridgeEngine } from "@its-not-rocket-science/ananke/tier2";
253
+ import { resolveTacticalEngagement } from "@its-not-rocket-science/ananke/tier3";
254
+ ```
255
+
256
+ ### Notes
257
+
258
+ - This release intentionally tightens the semver-stable surface to improve long-term supportability.
259
+ - No Tier-1 symbol was removed without a documented migration path.
260
+
261
+ ---
262
+
9
263
  ## [0.1.69] — 2026-04-01
10
264
 
11
265
  ### Added