clone

a browser grid puzzle game where you push words around to rewrite the rules of each level

main
miau-is-true / openspec / changes / archive / 2026-09-24-add-rules-compatibility-revision / proposal.md
proposal.md 1.7K rendered
1## Why23`manifest.engine` identifies the shape of the mod API, but it cannot tell the4host which interpretation of a valid board the pack was authored against.5The W6 precedence and rule-reading changes alter puzzle outcomes while keeping6the CommonJS data shape valid. Without a separate semantic revision, an older7pack can load successfully and quietly play differently.89## What Changes1011- Add a numeric `manifest.rules` compatibility revision for puzzle semantics.12- Define revision `2` as the current post-W6 rules contract.13- Treat a missing revision as legacy revision `1` for imported packs and emit a14 nonblocking W11 diagnostic explaining that the proofs may play differently.15- Emit the same diagnostic for any known older revision while evaluating the16 pack with the host's current semantics.17- Reject a pack that declares a future rules revision the host does not know,18 with an actionable compatibility error before installation.19- Preserve the effective revision through local loading, shared links, exports,20 installed pack records, and pack preview views without serializing warnings.2122## Capabilities2324### Modified Capabilities2526- `commonjs-mods`: validate and normalize the semantic rules revision at the27 mod boundary.28- `level-sharing`: apply the same revision compatibility and nonfatal warning29 contract to local and data-only shared previews.3031## Impact3233The mod loader, pack service, share encoder/decoder, and first-party pack34manifests are affected. Current packs should declare `rules: 2`; older packs35remain loadable with a visible note. Engine behavior is never downgraded for an36older pack, and the diagnostic remains outside authored data, snapshots, and37portable warning-free payloads.