1. Contract and normalization
- [x] 1.1 Define and export the current rules revision (
2) separately fromMOD_SCHEMA_VERSION. - [x] 1.2 Validate
manifest.rulesas a positive integer at or below the current revision; reject malformed and future revisions before registration. - [x] 1.3 Normalize an omitted revision to legacy revision
1and preserve the effective revision through local loads, shared decode/encode, CommonJS export, catalog records, and pack-service views. Update both manifest projection helpers (manifestFromView()andcreatePackView()) so cloned or persisted views cannot drop the field. - [x] 1.4 Add
rules: 2to current first-party manifests through their owning pack authors; do not rewrite team-owned world files from this change.
2. Diagnostics and sharing
- [x] 2.1 Add one bounded, transient pack-level W11 warning for effective
revisions below
2, with the exact player message and source detail defined in the level-sharing spec. - [x] 2.2 Return the same warning and normalized manifest for local CommonJS and data-only shared previews; keep warning fields out of installed data, exports, and share payloads.
- [x] 2.3 Add focused tests for explicit current, explicit legacy, omitted legacy, malformed, and future revisions, including atomic catalog behavior and the accepted player-facing copy for malformed and future rules.
3. Verification and handoff
- [x] 3.1 Run focused mod, pack-service, catalog, share, and diagnostics tests.
- [x] 3.2 Run the full Node suite and production build.
- [x] 3.3 Ask the design and worlds teams to review the warning wording and add
current
rules: 2declarations to owned first-party packs. - [x] 3.4 Archive this change only after the compatibility fixtures and both preview paths pass.