@its-not-rocket-science/ananke 0.1.60 → 0.1.62
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.
- package/CHANGELOG.md +36 -0
- package/README.md +3 -0
- package/package.json +6 -2
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,42 @@ Versioning follows [Semantic Versioning](https://semver.org/).
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
## [0.1.62] — 2026-04-01
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **PM-3 — Supported-Recipes Matrix (complete):**
|
|
14
|
+
- `docs/recipes-matrix.md` (new, auto-generated): 36 recipes across 6 domains (Tactical ⚔️, Campaign 🏰, Content 📦, Renderer 🖼️, Multiplayer 🌐, Tooling 🔧). Each row maps a use case to recommended packages, stability tier (🟢 Stable / 🟡 Experimental), runnable npm script, performance envelope, and save/replay compatibility status. Domain tables, summary counts, and a quick-reference "I want to…" table at the bottom.
|
|
15
|
+
- `tools/generate-recipes-matrix.ts` (new): structured recipe catalogue as TypeScript array; outputs `docs/recipes-matrix.md` deterministically. Run `npm run generate-recipes-matrix` to refresh.
|
|
16
|
+
- `npm run generate-recipes-matrix` script added.
|
|
17
|
+
- README: "Not sure which entry point to use? → Recipes Matrix" note added near the cookbook paragraph; matrix linked first in the Further Reading table.
|
|
18
|
+
- 0 new tests (5,569 total). Coverage unchanged. Build: clean.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## [0.1.61] — 2026-04-01
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- **PM-2 — Package-Boundary Enforcement in CI (complete):**
|
|
27
|
+
- `tools/check-package-boundaries.ts` (new): static import-graph analyser mapping all 207 src/ files to their planned `@ananke/*` package. Reports:
|
|
28
|
+
- **Hard violations** — files classified as `@ananke/core` that import from `@ananke/combat`, `@ananke/campaign`, or `@ananke/content` (86 identified; all expected in Phase 1 monolith, must be resolved in Phase 2 source migration).
|
|
29
|
+
- **Suspicious cross-boundary imports** — peer-layer imports (`combat↔campaign`, `combat↔content`, `content↔campaign`) grouped by edge with file:line references and example paths.
|
|
30
|
+
- **Cross-package import matrix** — NxN table showing import counts between packages, annotated ✓ (allowed) or ✗ (violation).
|
|
31
|
+
- **Source size estimate** — raw TypeScript byte counts per package (core 341 KB, combat 499 KB, campaign 833 KB, content 248 KB).
|
|
32
|
+
- **Unmapped files** — 9 files not yet in the mapping (atmosphere, battle-bridge, debug, host-loop, index, parallel, sensory, terrain-bridge).
|
|
33
|
+
- Flags: `--strict` (exit 1 on hard violations), `--json` (machine-readable output).
|
|
34
|
+
- `tools/extract-api.ts` (new): public API surface extraction — scans each package's entry-point source files for exported symbols, generates `docs/api-surface-<package>.md` with grouped tables (types/interfaces, enums, functions, constants, classes) and a source-file index.
|
|
35
|
+
- `docs/api-surface-core.md` — 125 exports
|
|
36
|
+
- `docs/api-surface-combat.md` — 221 exports
|
|
37
|
+
- `docs/api-surface-campaign.md` — 691 exports
|
|
38
|
+
- `docs/api-surface-content.md` — 103 exports (1140 total)
|
|
39
|
+
- `"ci"` script now runs `check-boundaries` after test coverage, making cross-boundary drift visible in CI output.
|
|
40
|
+
- npm scripts: `check-boundaries`, `check-boundaries:strict`, `extract-api`.
|
|
41
|
+
- 0 new tests (5,569 total — tools only). Coverage unchanged: 97.11% stmt, 88.08% branch, 95.82% func. Build: clean.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
9
45
|
## [0.1.60] — 2026-03-31
|
|
10
46
|
|
|
11
47
|
### Added
|
package/README.md
CHANGED
|
@@ -96,6 +96,8 @@ for (let tick = 0; tick < 2000; tick++) {
|
|
|
96
96
|
`stepWorld` is the only function that mutates state. Everything else is pure computation.
|
|
97
97
|
Call it at 20 Hz for real-time simulation; 1 Hz or lower for campaign-scale time.
|
|
98
98
|
|
|
99
|
+
Not sure which entry point to use? See the **[Recipes Matrix](docs/recipes-matrix.md)** — use case → package → stability → runnable example → performance in one table.
|
|
100
|
+
|
|
99
101
|
For task-oriented walkthroughs, see the **[Simulation Cookbook](docs/cookbook.md)** — 12 recipes
|
|
100
102
|
from "Simulate a duel" to "Load a content pack", each with step-by-step code and expected output.
|
|
101
103
|
|
|
@@ -414,6 +416,7 @@ Ananke's outputs are validated against historical and experimental sources:
|
|
|
414
416
|
|
|
415
417
|
| Document | What's in it |
|
|
416
418
|
|---|---|
|
|
419
|
+
| [`docs/recipes-matrix.md`](docs/recipes-matrix.md) | **Start here** — use case → package → stability → example → performance in one table |
|
|
417
420
|
| [`docs/cookbook.md`](docs/cookbook.md) | Task-oriented recipes — duel, 500-agent battle, species, renderer, campaign, replay, and more |
|
|
418
421
|
| [`docs/module-index.md`](docs/module-index.md) | All 41 entry points — stability tier, use case, key exports, doc links |
|
|
419
422
|
| [`docs/host-contract.md`](docs/host-contract.md) | Stable integration surface — everything needed to embed Ananke without reading `src/` |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@its-not-rocket-science/ananke",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.62",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Deterministic lockstep-friendly SI-units RPG/physics core (fixed-point TS)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -247,7 +247,10 @@
|
|
|
247
247
|
"test": "vitest run",
|
|
248
248
|
"test:watch": "vitest",
|
|
249
249
|
"test:coverage": "vitest run --coverage",
|
|
250
|
-
"ci": "npm run build && npm run test:coverage",
|
|
250
|
+
"ci": "npm run build && npm run test:coverage && npm run check-boundaries",
|
|
251
|
+
"check-boundaries": "node dist/tools/check-package-boundaries.js",
|
|
252
|
+
"check-boundaries:strict": "node dist/tools/check-package-boundaries.js --strict",
|
|
253
|
+
"extract-api": "node dist/tools/extract-api.js",
|
|
251
254
|
"lint": "node tools/lint-open.mjs",
|
|
252
255
|
"run:demo": "node dist/tools/run-demo.js",
|
|
253
256
|
"run:vertical-slice": "node dist/tools/vertical-slice.js",
|
|
@@ -273,6 +276,7 @@
|
|
|
273
276
|
"ref:species-lab": "node dist/examples/reference/species-lab/index.js",
|
|
274
277
|
"ref:species-lab:quick": "node dist/examples/reference/species-lab/index.js --quick",
|
|
275
278
|
"generate-module-index": "node dist/tools/generate-module-index.js",
|
|
279
|
+
"generate-recipes-matrix": "node dist/tools/generate-recipes-matrix.js",
|
|
276
280
|
"pack": "node dist/tools/pack-cli.js pack",
|
|
277
281
|
"generate-fixtures": "node dist/tools/generate-fixtures.js",
|
|
278
282
|
"generate-zoo": "node dist/tools/generate-zoo.js",
|