feat(02-01): BigQty + scheduler + sim foundations

- Install zustand@^5.0.0 + break_eternity.js@^2.1.3 as dependencies
- BigQty immutable wrapper around Decimal (D-31): factories,
  arithmetic, comparison, JSON round-trip, saturating coercion
- formatHumanReadable for K/M/B/T/scientific HUD readouts (UX-11)
- Clock interface + wallClock + FakeClock — only file in src/sim/
  allowed to read Date.now() (D-33)
- drainTicks fixed-timestep accumulator: refuses negative deltas
  (CORE-11), clamps at MAX_OFFLINE_MS=24h (CORE-03), TICK_MS=200
- computeOfflineCatchup pure descriptor for offline boundaries
- SimState root shape with BLOCKER 3 split: lastTickAt
  (wall-clock, app-layer-only) + tickCount (sim-internal monotonic)
- 52 tests across big-qty / format / clock / tick / catchup all green
This commit is contained in:
2026-05-09 09:14:10 -04:00
parent 5ddaabcdc1
commit 58db53227c
16 changed files with 801 additions and 4 deletions
+3 -1
View File
@@ -16,6 +16,7 @@
"ci": "npm run lint && npm run test && npm run validate:assets && npm run build"
},
"dependencies": {
"break_eternity.js": "^2.1.3",
"crc-32": "^1.2.2",
"gray-matter": "^4.0.3",
"idb": "^8.0.3",
@@ -25,7 +26,8 @@
"react": "^19.2.6",
"react-dom": "^19.2.6",
"yaml": "^2.8.4",
"zod": "^4.4.3"
"zod": "^4.4.3",
"zustand": "^5.0.13"
},
"devDependencies": {
"@playwright/test": "^1.59.1",