Crossword (world bible)
- Pack:
mods/(pack idworlds/ crossword.cjs crossword, version 1.0.0) - World identity (
manifest.world, accepted byloadModtoday but not validated): glyph✏️, tagline "Every word can be read across and down.", accentwin. - Custom tiles: none. No
palette, and the only nouns areMIAU,ROCK,FLAG, andWALL, which all have default glyphs insrc/.main.js - Custom rules: none. Only
IS,AND,YOU,PUSH,STOP,WIN, andDEFEATappear.
Theme
A crossword, or a printer's type case. The board is a grid of words, and a
word tile belongs to every line that passes through it: one IS can be read
across and down, a noun can close one sentence and open the next, and two
letters can share one square. Walls, where they appear, are the crossword's
black squares.
Mechanic
Pure grammar. There is nothing to learn in this world except how the parser reads the board:
- Crossing. A tile is read on both axes. One
IScan serve a horizontal and a vertical sentence at once. - AND on both sides. A subject chain (
ROCK AND MIAU IS YOU) and a predicate chain (ROCK IS DEFEAT AND PUSH). - Pinned sentences. A sentence flush against a board edge in the top or bottom row can't be broken, but you can add words in front of it or after it. This is the world's way of saying "you can't remove this, so extend it".
- Stacks. Two words in one cell travel together forever. The puzzle is to find a sentence where both halves are welcome.
- Nouns as answers. A noun after
IStransforms things, and the change is permanent. That lets a singleISbe spent twice.
Levels
Verified on the W6 engine (Baba-style precedence, design decision D23) with
the committed CLI: node tools/ (default
2M budget; spend-it-twice declares solverBudget: 4000000 for margin). All
7 levels are SOLVED, the run exits 0 (about 6 minutes), and there are no
BYPASS, HANDS-OFF, TRIVIAL, WON-AT-START, SKIPPABLE, or LIMIT flags. No level
sets allowBypass.
mustForm is declared only where --level <id> --forbid '<rule>' returned
UNSOLVED (an exhaustive proof), never LIMIT.
| # | id | Title | Category | Teaches | Steps | Flags | mustForm (proof) | Intended insight |
|---|---|---|---|---|---|---|---|---|
| 1 | across-and-down |
Across and down | required | crossing (one IS, two sentences) |
16 | none | none: FLAG IS WIN is avoidable (see note) |
FLAG sits over the IS of MIAU IS YOU. Slide WIN in under that IS from the side to read FLAG IS WIN down. Pushing it up from below lifts the IS out of your own sentence. |
| 2 | company |
Company | required | AND on the subject side, something else is YOU |
20 | none | ROCK IS YOU (UNSOLVED, 36,800 states) |
MIAU IS YOU is pinned at the top right and the cat is penned. Push ROCK and AND up into the open cells in front: ROCK AND MIAU IS YOU. ROCK MIAU IS YOU without AND does nothing. |
| 3 | shove-the-danger |
Shove the danger | required | AND on the predicate side |
23 | none | ROCK IS PUSH (UNSOLVED, 121,760) |
A column of rocks is DEFEAT, and the sentence is pinned in the corner. You can't remove DEFEAT, so append AND PUSH and shove a rock out of the column. |
| 4 | carry-the-pair |
Carry the pair | required | stacked words, DEFEAT on its own carrier | 24 | none | ROCK IS DEFEAT (UNSOLVED, 527,180) |
The stacked YOU+DEFEAT can't be split, and a YOU that is also DEFEAT destroys itself. On MIAU the pair is suicide. Build ROCK / down from the pinned ROCK IS STOP: every rock in the ring around the flag destroys itself, and you walk in. |
| 5 | pass-it-on |
Pass it on | required | noun as predicate, transformation | 24 | none | ROCK IS FLAG (UNSOLVED, 335,688) |
The flag is sealed behind walls. Insert ROCK IS in front of the pinned FLAG IS WIN to read ROCK IS FLAG IS WIN. The one FLAG word is the answer to the first clue and the start of the second, and the rock next to you becomes a winning flag. |
| 6 | down-to-miau |
Down to MIAU | optional | a noun at a crossing (predicate down, subject across) | 19 | none | ROCK IS MIAU (UNSOLVED, 202,232) |
Build ROCK / down onto the pinned MIAU IS YOU. The rock in the sealed room becomes a second cat. A black square (wall) above YOU blocks the shorter ROCK IS YOU down. |
| 7 | spend-it-twice |
Spend it twice | challenge | sequencing, permanence of transformation | 35 | none | WALL IS ROCK (UNSOLVED, 1,905,020) |
There's one free IS, and WIN and the flag are walled in. Build WALL IS ROCK down from the pinned WALL: every wall turns into a passable rock and stays one. Then take the same IS for a win rule. The solver found ROCK IS WIN across, which also turns the flag into a rock on the way. FLAG IS WIN down from the pinned FLAG works too. WALL IS FLAG is impossible because the only FLAG word is pinned as a subject. |
Why level 1 has no mustForm. --forbid 'FLAG IS WIN' solves in 26
steps: push IS down so FLAG IS YOU reads down (the cat stops being YOU,
and the flag becomes the player), then build MIAU IS WIN across and walk the
flag onto the cat. That's still a crossing route, so it teaches the same
lesson, and I left it in.
Rework for W6 (2026-09-23).
carry-the-pairoriginally hadFLAG IS WIN+DEFEATand a self-win on MIAU. Under W6, a YOU that is also DEFEAT is destroyed, so the old route kills the cat. The stack is nowYOU+DEFEAT, and the lesson is its opposite: DEFEAT kills its own carrier, so give the pair to the thing you want gone.shove-the-dangeroriginally had a looseSTOPdecoy. The level itself still worked under W6 (PUSH beats STOP just makesAND PUSH AND STOPa second answer). But three loose words made--forbid 'ROCK IS PUSH'hit LIMIT at 2M, and still needed about 5M to prove. I removed the decoy and narrowed the board to 7 by 7, so the proof takes 121,760 states.pass-it-onwas narrowed from 10 by 7 to 8 by 7 with the same layout logic, so itsmustFormproof fits the default budget (it took 9.5M before).
Solver routes, for replay:
across-and-down URRRRRULLLDDRRRR
company DLUURULDLUDDLUUDDDRR
shove-the-danger ULURRDDRUULURDRURLDDRUR
carry-the-pair DRRUULLURRRDRULURRLDRDDR
pass-it-on DDLUUULUURLDDRULURRDDDDR
down-to-miau ULLDDLURULULDDDDDDR
spend-it-twice UUURRRLDDRUULURRLDRDDDRDRUUUULDLUDD
Design notes
- Pinning is the level-design tool of this world. Without custom rules, the only way to make a sentence unbreakable is geometry. Three words in the top or bottom row that touch a side edge can't be pushed in any direction. The top row can be pushed toward only from below, and never away from the edge. Every "given" sentence in this world is pinned like that. The catch is that players can't see it (friction F-XW2).
- Pinning traps words too. A word pushed into column 0, the last column,
the top row, or the bottom row can only move along that edge from then on.
An
ISstuck under a pinned word in an edge column can never be taken out. I moved the challenge'sFLAG WALL IS STOProw away from the corner for this reason. Otherwise theISunderWALLwould have been unrecoverable and the "spend it twice" route would have been impossible. - Self-win is the default shortcut in a pure-grammar world. Any loose
WINnear aYOUnoun's word collapses the level toX IS YOUplusX IS WIN. Levels 2 to 7 keepMIAUpinned so it can't take a loose predicate. - Standing on the goal, then writing the rule. In the first draft of
carry-the-pair(aWIN+STOPstack), the solver broke the flag's sentence, walked onto the flag, and rebuiltFLAG IS WIN+STOPunderneath the cat. STOP doesn't eject an occupant, so that won. The W6 rework replaced the whole stack, so the current level no longer has this route. - The solver shows only the shortest route. In
down-to-miau, the first draft was won by the unintendedROCK IS YOUdown onto the sharedYOU. I only saw that by replaying the path. A wall (black square) now blocks that column (friction F-XW10). - Softlocks. Every level can be softlocked with
YOUstill present by pushing a needed word into an edge row or column. That's ordinary Sokoban, and undo recovers from it. The no-YOUstates reachable in this world are: breakingMIAU IS YOU(only inacross-and-down, where it isn't pinned), walking into a DEFEAT rock (shove-the-danger), and, incarry-the-pair, givingYOU+DEFEATto MIAU or walking into a rock after onlyROCK IS DEFEATforms. No level requires entering a no-YOUstate. The engine rejects every move with noYOU, so undo or restart is the only way out, and the stage'sNOTHING IS YOUoverlay signals that. - Spacing. Given sentences sit in edge rows with at least one blank row
between them and the play area wherever the board allows.
companyputsFLAG IS WINandWALL IS STOPon the same bottom row, six cells apart, andshove-the-dangerandpass-it-onput two given sentences side by side on the bottom row after being narrowed.
Parser and rule behaviour found while building
All repros use the text-grid notation from the pack (m r f w are things,
uppercase are words, A+B is a stack). They were first run on
src/ as of 2026-09-23 and re-checked on the W6 engine (D23).
Items marked resolved by W6 no longer hold, but are kept because they
explain the older friction entries.
- Crossing works as expected. A horizontal and a vertical sentence can
share one
IS, and each produces its own span (state.sentenceshas onehand onev). Repro:. FLAG . /givesMIAU IS YOU / . WIN . FLAG IS WIN; MIAU IS YOU. - A noun does double duty in one line.
MIAU IS ROCK IS WINgivesMIAU IS ROCKandROCK IS WIN, because scanning restarts at every noun. This is whatpass-it-onis built on. - Resolved by W6.
ANDwas greedy and never backtracked. Before W6,ROCK AND+IS FLAGgave no rule. Under W6, a stacked cell contributes one word per sentence path and every valid alternative is enumerated, so it now givesROCK IS FLAG.MIAU AND+ROCK IS YOUstill gives onlyROCK IS YOU, now by design (the stackedROCKstarts its own sentence, andMIAU AND ISisn't valid). - Stacks can't form or split during play. Words are always
PUSH, so a word can never be moved into a cell that holds another word, and a stack always moves as one piece. Every stack is placed by the author and stays for the whole level.carry-the-pairrelies on this. The only exception isSINK, which destroys every word in the cell. - A stack still yields two same-length spans (unchanged by W6).
FLAG IS WIN+DEFEATgives spansFLAG IS WINandFLAG IS DEFEATon the same axis. Neither contains the other, so the renderer draws two bars over the same cells (F-XW3). - Words in front of or after a sentence are ignored.
YOU MIAU IS WINparses asMIAU IS WIN, andMIAU IS YOU ROCKasMIAU IS YOU. This is expected, but it means a level can be won at start by an unnoticed adjacency. - Resolved by W6.
X IS Xdidn't protect. Under W6,ROCK IS ROCKblocksROCK IS FLAG(checked: the rock stays a rock). - Resolved by W6. Conflicting transformations followed object order.
Under W6, spatial reading order decides: with
ROCK IS FLAGin the row aboveROCK IS WALL, the rock becomes a FLAG, and swapping the rows gives a WALL. That's now visible on the board. - Transformation chains still advance one link per turn (unchanged by
W6). With
ROCK IS FLAGandFLAG IS WALL, a rock is a FLAG after reset and becomes a WALL on the next accepted move. The level loads in an intermediate state (F-XW6 b). - A transformation predicate in an
ANDchain can remove your ownYOU(unchanged).MIAU IS YOU AND ROCKturns the cat into a rock at reset, which leaves nothing asYOU, even though the board readsMIAU IS YOU. - Resolved by W6.
STOPbeatPUSH. Under W6,ROCK IS STOP AND PUSHis pushable. The oldshove-the-dangerdecoy relied on the old order and has been removed. - Resolved by W6, and now a lesson.
DEFEATdidn't affect its own carrier. Under W6,ROCK IS YOU+DEFEATdestroys every rock at once, even a lone rock, andMIAU IS YOU AND WIN+DEFEATis destroyed, not won (defeat resolves before win). The newcarry-the-pairis built on self-destruction. SINKdestroys words for good (unchanged). Pushing a word into a cell with aSINKthing removes the word and the thing.- Moving onto a thing on the same turn that makes it
WINwins (unchanged by W6). Repro:MIAU IS YOU /, step up. The cat pushes theFLAG IS . / . . f+WIN+STOP / . . m WIN+STOPstack off the flag intoFLAG IS _and enters the flag cell on the same move. STOP is checked before the move, and WIN after it, so the move wins.
Friction filed
F-XW1 to F-XW13 (first pass) and F-XW14 to F-XW16 (the W6 rework) in friction.md. The most severe are F-XW2 (pinned sentences are invisible), F-XW3 (stacks are hard to read), and F-XW8 (solver capacity limits how big a challenge level can be).