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-23-build-dynamic-rule-engine / specs / game-presentation / spec.md
spec.md 2.6K source

ADDED Requirements

Requirement: The app SHALL render the simulation as a readable emoji grid

The renderer SHALL display each grid cell at a stable coordinate with stacked entities in a consistent visual order. Object nouns SHALL use emoji mappings, word entities SHALL remain legible as text tiles, and the board SHALL expose enough contrast and spacing to distinguish adjacent cells and stacked words.

Scenario: Stacked entities remain visible

  • WHEN multiple objects or words occupy one cell
  • THEN the renderer preserves their identity and indicates the stack without changing simulation occupancy

Scenario: A modded noun has no emoji fallback

  • WHEN a noun has no declared emoji mapping
  • THEN the renderer uses a readable text fallback containing the noun instead of hiding the entity

Requirement: The app SHALL show active rules and turn feedback

The presentation SHALL display the currently active rules beside or below the board and SHALL update them after each settled turn. It SHALL provide visible feedback for blocked movement, undo, reset, transformations, defeat, and victory without changing engine state.

Scenario: Active rules update after a word push

  • WHEN a word tile is pushed into or out of a sentence
  • THEN the displayed rule list reflects the engine's new active rule table after the turn

Scenario: Victory is readable

  • WHEN the engine enters the won state
  • THEN the app shows a victory message and a clear continue or reset action

Requirement: Text effects SHALL support variable-length labels without driving grid geometry

The app MAY use Pretext or an equivalent text-effect layer for animated labels, rule emphasis, hints, and feedback. Text effects SHALL be laid out within the UI surface and SHALL not determine the integer coordinates or collision geometry of the simulation grid.

Scenario: A long hint does not move cells

  • WHEN a level hint is longer than the available sidebar width
  • THEN the hint wraps or scrolls while every grid cell retains its original coordinate and size

Requirement: The presentation SHALL provide accessible control feedback

The app SHALL expose text labels or accessible names for movement, undo, reset, and continue controls and SHALL communicate rule and level status in a readable text representation in addition to animation and emoji.

Scenario: Controls are understandable without animation

  • WHEN reduced motion is enabled or animation is unavailable
  • THEN the board, active rules, current level, and control actions remain understandable from static text and emoji