- commit
- ffac560c01710c33893036b274873ae0d393dc0d
- parent
- 4a8d37159c5bebf31bb14b949907329dd7624bcd
- author
- Dami <dami.etoile@gmail.com>
| M | docs/ | 25 | +++++++++++++++++++++++++ |
@@ -152,3 +152,28 @@ casing, cue emptiness, and sound names. A single pure normalizer should feed
152152 direct games, trusted modules, and data-only shares, with caller-specific153153 error adapters and parity fixtures. That work precedes new gates and FRAIL154154 runtime behavior so their authored fields do not multiply validator drift.155+156+### Shared schema boundary and next mechanic seam157+158+2026-09-24. `2950532` puts standalone engine levels, CommonJS packs, and159+data-only shared packs through `src/level-schema.js`. It canonicalizes object160+kinds, tokens, and automaton steps while retaining pack-only identity/size161+limits as a profile. Direct, module, and shared errors carry the same structural162+issue code/path in caller-specific envelopes. `4a8d371` rejects conflicting163+object fields and falsey explicit kinds so normalization cannot silently drop164+authored data. Catalog and Gift preview metadata cross a separate165+`playableLevelFromView()` adapter before game creation. The full 388-test Node166+suite, production build, D20 world-index browser flow, and Gift/Workshop/share167+browser flow pass without page errors; the sequential world solver is the168+remaining release gate.169+170+The next bounded implementation is the accepted declarative mechanic171+foundation. Its registry must distinguish derived projections from truly172+stateful scalar data. Gate `pressed`, `open`, and `jammed` derive from current173+occupancy and nouns; FRAIL crumble derives from authoritative object movement,174+existence, noun, and static `leaves` metadata. Neither may add a hidden solver175+bit. A stateful future mechanic must register every dynamic scalar in the176+codec and survive accepted/rejected turns, Undo, reset, restore, and public/fast177+parity. The level schema currently rejects `mechanics`, `channel`, and `leaves`178+until that lifecycle is in place. The worlds team is preparing D1–D3 gate and179+Tidewater FRAIL data-only fixtures for the differential gate.