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 / tasks.md
tasks.md 1.8K rendered
1## 1. Contract and normalization23- [x] 1.1 Define and export the current rules revision (`2`) separately from4 `MOD_SCHEMA_VERSION`.5- [x] 1.2 Validate `manifest.rules` as a positive integer at or below the6 current revision; reject malformed and future revisions before registration.7- [x] 1.3 Normalize an omitted revision to legacy revision `1` and preserve the8 effective revision through local loads, shared decode/encode, CommonJS9 export, catalog records, and pack-service views. Update both manifest10 projection helpers (`manifestFromView()` and `createPackView()`) so cloned or11 persisted views cannot drop the field.12- [x] 1.4 Add `rules: 2` to current first-party manifests through their owning13 pack authors; do not rewrite team-owned world files from this change.1415## 2. Diagnostics and sharing1617- [x] 2.1 Add one bounded, transient pack-level W11 warning for effective18 revisions below `2`, with the exact player message and source detail defined19 in the level-sharing spec.20- [x] 2.2 Return the same warning and normalized manifest for local CommonJS21 and data-only shared previews; keep warning fields out of installed data,22 exports, and share payloads.23- [x] 2.3 Add focused tests for explicit current, explicit legacy, omitted24 legacy, malformed, and future revisions, including atomic catalog behavior25 and the accepted player-facing copy for malformed and future rules.2627## 3. Verification and handoff2829- [x] 3.1 Run focused mod, pack-service, catalog, share, and diagnostics tests.30- [x] 3.2 Run the full Node suite and production build.31- [x] 3.3 Ask the design and worlds teams to review the warning wording and add32 current `rules: 2` declarations to owned first-party packs.33- [x] 3.4 Archive this change only after the compatibility fixtures and both34 preview paths pass.