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-validate-mod-feature-contract / proposal.md
proposal.md 1.5K rendered
1## Why23A misspelled or unsupported property word can silently become a noun transformation. Clockwork's `DOOR IS SHUT` example turns doors into unglyphed SHUT objects when the host does not implement SHUT. Authors need a clear diagnostic, and packs need a way to declare mechanics that a host must recognize before play.45## What Changes67- Report nonfatal author notes for word tiles with no semantic role in their own proof, including loose words that may become predicates later and properties declared only in another proof.8- Reject object nouns that collide with a level's declared property words.9- Validate optional `manifest.features` identifiers and reject unknown required features with player-readable feedback.10- Carry structured notes separately from errors through local and shared pack previews without serializing transient diagnostics into exported pack data.11- Preserve existing supported `#pack` v1 links and CommonJS packs while introducing the feature contract.1213## Capabilities1415### New Capabilities1617None.1819### Modified Capabilities2021- `commonjs-mods`: validate declared mechanic features and property/noun collisions; diagnose unknown predicates.22- `level-sharing`: apply the same feature gate to decoded data and return nonfatal warnings in preview envelopes.2324## Impact2526- `src/mods.js`, the CommonJS and data-only validators, and pack-service result envelopes.27- Gift/Workshop warning presentation, coordinated through the design inbox.28- Clockwork authoring and compatibility fixtures; no change to engine turn semantics.