Repository navigation
feat(design): DS-H-02a hall tiles and generator checks - #1642
Merged
Merged
Conversation
The layout grid needs tiles the atlas does not have yet; the build script gets negative cases (malformed/duplicate id, wrong size, too many colours, atlas overflow, non-hex token), tolerant token blocks, a missing output directory and a bare --out; usePixelScale gets a server snapshot. Test-First: src/design/hall/tiles.test.ts::every tile used by the layout exists in the atlas Test-First: src/design/hall/sprites.test.ts::the build rejects a malformed frame id Test-First: src/design/hall/sprites.test.ts::the build rejects a duplicate frame id Test-First: src/design/hall/sprites.test.ts::the build rejects a frame of the wrong size Test-First: src/design/hall/sprites.test.ts::the build rejects a figure frame with more than eight colours Test-First: src/design/hall/sprites.test.ts::the build rejects an atlas over its size limit Test-First: src/design/hall/sprites.test.ts::the build rejects a token that is not an opaque hex colour Test-First: src/design/hall/sprites.test.ts::the build reads token blocks without a space before the brace Test-First: src/design/hall/sprites.test.ts::the build creates a missing output directory Test-First: src/design/hall/sprites.test.ts::the build fails clearly when --out has no value Test-First: src/design/hall/pixelScale.test.ts::server rendering assumes a device pixel ratio of 1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Seven 16x16 tiles drawn as text rasters (floor, wall, door, belt, return path and the two turns that join them) plus the floor layout that uses them; the committed atlases are the generator's output. Generator hardening from the DS-H-01 review: --root for tests, a bare --out or --root fails with a clear message, the output directory is created, and token blocks are found regardless of spacing before the brace. usePixelScale gets a server snapshot of ratio 1. Test-First: src/design/hall/tiles.test.ts::every tile used by the layout exists in the atlas Test-First: src/design/hall/sprites.test.ts::the build rejects a malformed frame id Test-First: src/design/hall/sprites.test.ts::the build rejects a duplicate frame id Test-First: src/design/hall/sprites.test.ts::the build rejects a frame of the wrong size Test-First: src/design/hall/sprites.test.ts::the build rejects a figure frame with more than eight colours Test-First: src/design/hall/sprites.test.ts::the build rejects an atlas over its size limit Test-First: src/design/hall/sprites.test.ts::the build rejects a token that is not an opaque hex colour Test-First: src/design/hall/sprites.test.ts::the build reads token blocks without a space before the brace Test-First: src/design/hall/sprites.test.ts::the build creates a missing output directory Test-First: src/design/hall/sprites.test.ts::the build fails clearly when --out has no value Test-First: src/design/hall/pixelScale.test.ts::server rendering assumes a device pixel ratio of 1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No-Test: plan text only Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Cuarroc
marked this pull request as ready for review
October 16, 2026 15:28
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Owner
Author
|
@Mergifyio queue |
Owner
Author
|
Root auto-queue: head 1a296cd unchanged since review-ok, all checks green. @Mergifyio queue |
30 of 46 tasks
Contributor
☑️ This pull request is already queued |
Contributor
Merge Queue Status
This pull request spent 12 minutes 34 seconds in the queue, including 11 minutes 52 seconds running CI. Required conditions to merge
|
This was referenced Oct 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Die Probe-Halle hat jetzt ihre ersten echten Kacheln: Boden, Wand, Tür und ein Förderband mit Rückweg, als Text gezeichnet und daraus automatisch zu Bildern gebaut. Der Bildgenerator weist fehlerhafte Eingaben jetzt mit klaren Meldungen ab, und das sichern neue Tests. Du musst nichts tun; zwei unabhängige Prüfer schauen sich das noch an.
Report
Plan-ID: DS-H-02a
What changed
src/design/hall/tiles/hall.px.ts: seven hand-placed 16×16 text rasters in the DS-H-01 format:tile-floor-0,tile-wall-0,tile-door-0(delta of the wall),tile-belt-0,tile-return-0(delta of the belt, chevrons reversed),tile-belt-turn-0(left → down),tile-return-turn-0(top → left). Palette indices only (ASSETS.md §2), light from the top left.src/design/hall/tiles/layout.ts: the probe hall floor as a 12×6 tile grid (FLOOR) and its character → tile-id map (TILE); belt runs right, turns down and comes back as the return path. Split/merge pieces are not needed by this layout (they belong to DS-WF-3).src/design/hall/sprites/hall-tiles-{light,dark}.png+hall-tiles.json: generator output (112 × 16, 468 bytes each); figures atlases unchanged.scripts/dev/build-sprites.mjs(carry-over from the feat(design): DS-H-01 sprite format, generator and pixel scale #1637 review):--root <dir>reads tokens and sources from another tree (used by the tests);--out/--rootwithout a value fail with<flag> needs a directory(R1637-G1);mkdirSync(out, {recursive:true})(R1637-K5); token blocks found by regex, tolerant to:root{and whitespace/newline before the brace (R1637-K4).src/design/hall/usePixelScale.ts:getServerSnapshotreturns 1 (R1637-K3).src/design/hall/sprites/provenance.json: entry fortiles/hall.px.ts(agent:claude, MIT, references none).docs/PLAN.md: own DS-H-02a row only (No-Test: plan text only, commit1a296cd9).Red → green
Red commit
0294d8b6(tests only + layout data), green at9d6c6457. Named tests (Test-First trailers):src/design/hall/tiles.test.ts::every tile used by the layout exists in the atlassrc/design/hall/sprites.test.ts::the build rejects a malformed frame id,… a duplicate frame id,… a frame of the wrong size,… a figure frame with more than eight colours,… an atlas over its size limit,… a token that is not an opaque hex colour,the build reads token blocks without a space before the brace,the build creates a missing output directory,the build fails clearly when --out has no value(R1637-K2/K4/K5/G1, all through the script's CLI on a throw-away--root)src/design/hall/pixelScale.test.ts::server rendering assumes a device pixel ratio of 1(R1637-K3)Evidence (Linux server)
npx vitest run src/design/hall→ exit 0 (3 files, 16 tests)npm run typecheck→ exit 0node scripts/contrast-check.mjs→ exit 0node scripts/dev/build-sprites.mjs→ exit 0,git statusclean afterwards (atlases byte-identical)BASE_SHA=$(git merge-base origin/main HEAD) HEAD_SHA=$(git rev-parse HEAD) bash scripts/ci/red-first.sh→ exit 0 (all 11 red at base, green at head)bash scripts/ci/gates.sh lane prepush→ exit 0 (298 s at9d6c6457; again exit 0, 282 s, at head1a296cd9after the PLAN row)git ls-remote origin claude/ds-h-02a.ds-h-02a-tiles-4x-{light,dark}.png,ds-h-02a-layout-4x-{light,dark}.pngin the orchestrator's report folder (not committed). Belt pieces meet edge to edge; door sits in the wall course.Size
291 diff lines including the PLAN row (PNG binaries not counted), within 300.
NICHT ABGEDECKT
#[cfg(windows)]tests and the Windows clippy arms do not run on Linux; the Windows lane runs in the merge queue.--g-faint) is lighter than the floor, so the one-tone shadow under the belt reads as a light line there; that follows the §2 token mapping and is not changed here.Review
Review: pending, Root commissions (tier B, two non-Anthropic reviewers).
🤖 Generated with Claude Code on the ProjectA server worker
Root acceptance (head 1a296cd, 2026-10-16 17:35 MESZ)
Tier B (TS + dev script
scripts/dev/build-sprites.mjs). Author family Anthropic (server job, claude-opus-5-5@high). Reviewers on difforigin/main...1a296cd9via OpenRouter: Gemini 3.8 Flash (Google) APPROVE, Kimi K3 (Moonshot) APPROVE. Files:pa-orch/review-openrouter/out/pr1642-{gemini,kimi}-1a296cd9.md. R1637-K2..K5/G1 carried into this package are covered by the new generator tests.devicePixelRatiooverride not restored (pixelScale.test.ts:19-23)run.status === 0(sprites.test.ts:99-104)tiles.test.tsdoes not check unused TILE mappingsNo open high finding.
review-okbound to 1a296cd.