clone

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

Record accepted D20 world-card presentation contract

Dami committed 7f4f3f2
commit
7f4f3f2b8ade8d65221f54373c3bd55642f506ce
parent
946e8ddff5acb535a22ab7762049c207afdf2477
author
Dami <dami.etoile@gmail.com>
3 files changed, +61 -24
Mopenspec/changes/add-world-index-presentation/design.md40++++++++++++++++++++++--------
Mopenspec/changes/add-world-index-presentation/specs/world-index-presentation/spec.md34++++++++++++++++++++------
Mopenspec/changes/add-world-index-presentation/tasks.md11+++++----
M openspec/changes/add-world-index-presentation/design.md +29 -11
@@ -1,7 +1,7 @@
11 ## Source contract22 33 This change follows the accepted D20 material in `docs/design.md` and the4-designer reply headed **D20 header round 1** in `docs/design-inbox.md`, dated4+designer's D20 header and world-card reviews in `docs/design-inbox.md`, dated55 2026-09-24. `openspec/changes/add-world-index-navigation/` owns the world view66 model, request origins, world transition events, and navigation behavior. This77 change consumes those values and does not recreate them from level data.
@@ -44,17 +44,24 @@ the settled dot and sheet immediately.
4444 ## First-entry world card4545 4646 When the stage receives the D20 `world-card` request, INDEX renders the card47-over the stage with the existing iris entry choreography. The card contains:47+over the stage with the existing iris entry choreography. Its centered content48+uses a 16px vertical rhythm in this order:4849 49-- the normalized world glyph at 96px;50-- the world name;51-- the tagline, when present;52-- `by <author>`; and53-- an ENTER action shown as a drawn keycap on keyboard layouts.50+1. the normalized world glyph at 96px;51+2. `WORLD NN` eyebrow;52+3. world name at 32px;53+4. tagline at 15px muted, when present;54+5. `<N> proofs | ★ <completed> / <total> | by <author>`; and55+6. the action.56+57+If author is absent, the byline segment is omitted; the card never prints58+`by Unknown author`. The desktop action is `[ENTER] enter world`. On mobile59+or a coarse pointer, it is a full-width 48px `ENTER WORLD` button in the60+world accent with no keycap.5461 5562 The card is centered on the ink-and-signal surface and preserves the existing56-hard-edged card lip and Recursive font. The card uses the world's accent as a57-signal color while retaining neutral card surfaces. Card text is fitted and63+hard-edged card lip and Recursive font. The 2px stroke and mobile action use64+the world's accent while retaining neutral card surfaces. Card text is fitted and5865 wrapped within the card; it must not clip at the supported desktop or mobile5966 sizes.6067
@@ -62,8 +69,19 @@ ENTER (or the equivalent confirmed card action) dismisses the card and
6269 returns to the settled INDEX sheet. Dismissing the card does not select or6370 enter a proof. The card is shown at most once per world per session, and a6471 Workshop PLAY request uses the same composition with its D20 `workshop` origin.65-On touch layouts the ENTER action keeps its visible keycap style but exposes a66-44px hit target. Reduced motion presents the settled card immediately.72+The mobile action's visible 48px button is its touch target. Reduced motion73+presents the settled card immediately.74+75+Core declares a first-party world identity: `🐈`, `Where the rules first bend.`,76+`you`, and author `Miau Is True`. This keeps the opening card out of the77+fallback state used for older imported packs.78+79+The designer accepted the finished Core and Crossword cards on 2026-09-24 in80+`docs/design-inbox.md`, including desktop and 390px Crossword captures. The81+world-index browser fixture passed first entry, Workshop PLAY, four-world82+navigation, touch confirmation, and reduced motion with no page errors. The83+full Node suite passed 373/373, the production build passed, and the84+sequential world solver gate solved all 30 proofs.6785 6886 ## Mobile INDEX footer and narration6987
M openspec/changes/add-world-index-presentation/specs/world-index-presentation/spec.md +26 -8
@@ -64,10 +64,15 @@ SHALL expose a 44px tap target. Hit geometry SHALL match the visible arrows.
6464 ### Requirement: The first-entry world card SHALL present and dismiss world identity6565 6666 The INDEX SHALL consume the D20 `world-card` request and render a centered,67-hard-edged card containing the normalized glyph at 96px, name, tagline when68-present, `by <author>`, and an ENTER action. The card SHALL use the normalized69-accent as a signal color, fit all copy inside the card at desktop and mobile70-sizes, and preserve the existing iris entry choreography. ENTER or the67+hard-edged card containing the normalized glyph at 96px, `WORLD NN` eyebrow,68+32px name, 15px muted tagline when present, a meta line with proof count,69+`★ n / N`, and `by <author>` only when an author exists, followed by an action.70+These elements SHALL use a 16px vertical rhythm. The card SHALL never show71+`by Unknown author`. Its 2px stroke SHALL use the normalized world accent.72+Desktop SHALL show `[ENTER] enter world`; mobile and coarse-pointer layouts73+SHALL show a full-width 48px accent `ENTER WORLD` button without a keycap.74+The card SHALL fit all copy inside at desktop and mobile sizes and preserve75+the existing iris entry choreography. ENTER or the7176 equivalent confirmed pointer/touch action SHALL dismiss the card and leave the7277 player on the settled INDEX sheet without selecting a proof. The card SHALL7378 not install packs or mutate simulation state.
@@ -75,8 +80,21 @@ not install packs or mutate simulation state.
7580 #### Scenario: INDEX first entry opens a readable world card7681 7782 - **WHEN** D20 requests a card with origin `index`78-- **THEN** the card shows the world glyph, name, tagline, author, and ENTER79- action without clipping83+- **THEN** the card shows its glyph, `WORLD NN`, name, tagline, proof count,84+ completion, author when present, and the correct desktop or touch action85+ without clipping86+87+#### Scenario: Core uses a first-party identity88+89+- **WHEN** the player first enters the Core world90+- **THEN** its card uses `🐈`, `Where the rules first bend.`, the `you` accent,91+ and `by Miau Is True` rather than the fallback identity92+93+#### Scenario: Missing author leaves no placeholder94+95+- **WHEN** an imported world omits author96+- **THEN** its meta line omits the byline segment and never prints97+ `by Unknown author`8098 8199 #### Scenario: Workshop PLAY uses the same card presentation82100
@@ -93,8 +111,8 @@ not install packs or mutate simulation state.
93111 #### Scenario: Touch confirmation has a large target94112 95113 - **WHEN** the card is rendered for a coarse pointer96-- **THEN** the visible ENTER keycap remains readable and its confirmation hit97- target is at least 44px high114+- **THEN** the card has no visible keycap and its full-width accent115+ `ENTER WORLD` button is 48px high and tappable across that width98116 99117 #### Scenario: Card motion respects reduced motion100118
M openspec/changes/add-world-index-presentation/tasks.md +6 -5