docs(02): cite D-12, D-16, D-32 in plan must_haves + record planning complete
ci / lint + test + validate-assets + build (push) Successful in 9m39s
ci / lint + test + validate-assets + build (push) Successful in 9m39s
Decision-coverage gate found three CONTEXT.md decisions structurally implemented but not literally cited by their D-NN tags. Added one-line must_haves entries citing each: - D-12 (Lura as discrete gate visits, 3 beats this Season) → 02-04 - D-16 (all Lura dialogue authored in Ink, runtime via inkjs) → 02-04 - D-32 (Zustand 5 store as the Phaser↔React bridge; sim never imports store, CORE-10 enforced) → 02-01 STATE.md flipped from in_progress (context gathered) to ready_to_execute with the planning summary in stopped_at. All 24 REQ-IDs + 34 D-XX decisions now covered. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -50,8 +50,8 @@ must_haves:
|
||||
- "drainTicks(state, accumulatorMs<0) returns the original state with ticksApplied=0 (CORE-11 negative-delta refusal)"
|
||||
- "drainTicks(state, 25*3600*1000) clamps to floor(MAX_OFFLINE_MS / TICK_MS) ticks (CORE-03 24h cap)"
|
||||
- "drainTicks at TICK_MS=200ms over 24h completes ≤500ms on a modern machine (Vitest benchmark)"
|
||||
- "Zustand 5 vanilla createStore composes 4 slices (garden / memory / narrative / session); useAppStore hook re-renders on selector changes; getState() works without React"
|
||||
- "simAdapter (in src/store/) exposes applySimResult(next, events) and drainCommands(); src/sim/ never imports src/store/"
|
||||
- "Zustand 5 vanilla createStore composes 4 slices (garden / memory / narrative / session); useAppStore hook re-renders on selector changes; getState() works without React. This store is the Phaser↔React bridge (D-32) — sim writes via the slim sim-adapter; React reads via selectors; sim never imports the store directly (CORE-10 enforced)"
|
||||
- "simAdapter (in src/store/) exposes applySimResult(next, events) and drainCommands(); src/sim/ never imports src/store/ (D-32 / CORE-10)"
|
||||
- "V1Payload extension adds unlockedPlantTypes, luraBeatProgress, offlineEvents, settings.persistenceToastShown, AND tickCount (BLOCKER 3 — sim-internal monotonic counter, separate from lastTickAt) — CURRENT_SCHEMA_VERSION stays at 1; no migrations[2] entry exists"
|
||||
- "migrations[1] (the v0→v1 demo) returns a fully-populated V1Payload including all new fields (tickCount: 0) with sensible defaults"
|
||||
- "BLOCKER 3 invariant: SimState.lastTickAt is wall-clock milliseconds (written ONLY at saveSync time by the application layer); SimState.tickCount is the sim-internal monotonic counter (incremented inside simulateOneTick). The sim never writes lastTickAt."
|
||||
|
||||
Reference in New Issue
Block a user