Repository navigation
feat(queen): Kenney Space Kit models on the field, a rendered look, the tree's scroller - #912
Merged
Merged
Conversation
…he tree's scroller (B-8, B-5, P1-31) Loop cycle 016. The user: "which pack? download it yourself, open source". Kenney Space Kit 2.0 (CC0, kenney.nl, 6,677,531 B archive) is the pack; fourteen GLB models (284 KB) and its licence sit in public/queen/models. Each model is loaded once with the glTF loader, its root transform baked, its parts merged into one mesh, measured, and thin-instanced at the cells with the matrices the procedural templates already had: platform for backlog, generator for running, satellite dish for review, three hangars for done by card number, gate for blocked, crater for dropped, the large hangar as the Queen's hub, crystals for verified devices; the bees are astronauts and a rover and the larvae are aliens, instanced and turned toward where they walk. A model that fails to load leaves its procedural stand-in. The rendered look: tone mapping with contrast and a vignette, linear fog into the void, a glow layer on every emissive part, the steel plates' seams less shiny; three bee lines at three sizes with rings to match (B-8). The technology tree declares its scroller in the shell so a strip that wraps for a frame on a phone no longer reads as an overflow (P1-31, seen twice in check:queen-viewport). Contracts on the Babylon default: pick, placement, touch PASS; 480/480 frames at vsync; chunk 385,900 B brotli (+130 KB for the glTF loader and PBR materials). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
github-actions Bot
added a commit
that referenced
this pull request
Sep 4, 2026
feat(queen): Kenney Space Kit models on the field, a rendered look, the tree's scroller (#912) Loop cycle 016. The user: "which pack? download it yourself, open source". Kenney Space Kit 2.0 (CC0, kenney.nl, 6,677,531 B archive) is the pack; fourteen GLB models (284 KB) and its licence sit in public/queen/models. Each model is loaded once with the glTF loader, its root transform baked, its parts merged into one mesh, measured, and thin-instanced at the cells with the matrices the procedural templates already had: platform for backlog, generator for running, satellite dish for review, three hangars for done by card number, gate for blocked, crater for dropped, the large hangar as the Queen's hub, crystals for verified devices; the bees are astronauts and a rover and the larvae are aliens, instanced and turned toward where they walk. A model that fails to load leaves its procedural stand-in. The rendered look: tone mapping with contrast and a vignette, linear fog into the void, a glow layer on every emissive part, the steel plates' seams less shiny; three bee lines at three sizes with rings to match (B-8). The technology tree declares its scroller in the shell so a strip that wraps for a frame on a phone no longer reads as an overflow (P1-31, seen twice in check:queen-viewport). Contracts on the Babylon default: pick, placement, touch PASS; 480/480 frames at vsync; chunk 385,900 B brotli (+130 KB for the glTF loader and PBR materials). Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Merged
19 of 21 tasks
11 tasks done
gHashTag
added a commit
that referenced
this pull request
Oct 8, 2026
…very task filtered in the address (Closes #1532) (#1533) * queen: one task view and its bees, from /queen/public-tasks or the board (Refs #1532) src/lib/queenTasks.ts mirrors gHashTag/t27 specs/queen/tasks.t27 (epic gHashTag/t27#7718): three kinds, seven states, three bee states, and task_matches line for line. It reads GET /queen/public-tasks, checks the body field by field, and drops a row whose kind or state this build has not met, because the spec says such a row matches nothing. When the route does not answer, tasksFromBoard builds the same shape from the public board and the activity feed the page already polls. Every card becomes an issue in its column, with one bee per running card. A bee is working when it was heard within BEE_QUIET_SECONDS and quiet otherwise. The feed says source "board", so the screen can say what it is drawing. The board filter (kind, state, repository, text) is read from and written to the address under kinds/states/repos/q. The universe already reads repo= and task=, so those names are not used. withEarliestSince keeps the earliest `since` stated for each bee: the live route re-stamps it on every answer. qa/fixtures/queen-public-tasks.json is a trimmed recording of the live route, 2026-10-08. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * queen: the bee's body is one Kenney Space Kit ship, read once (Refs #1532) public/queen/models/craft_speederA.glb is "Models/GLTF format/craft_speederA.glb" from Kenney's Space Kit 2.0 (https://kenney.nl/assets/space-kit, CC0, kenney_space-kit.zip, 6,677,531 bytes). It is the same archive the field was built from in #912, before the 3D objects left in #949 and #960. Only this one 20,496-byte file is vendored, with the kit's License.txt (line endings normalised). The README says what is loaded and why. queenShipModel.ts reads the GLB subset this file uses: TRS nodes, triangle primitives and flat baseColorFactor materials. It writes each part's colour into the vertices, so the four parts become one mesh with one material, and every bee can be a thin instance of it. It does not use the glTF loader: the loader and the PBR material it creates added 130 KB brotli when the kit was on the field (#912), and this reader also runs under node, so the gate can open the vendored file. A file outside the subset is refused with a reason. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * queen: in the game, the bees are spaceships over the issues they work on (Refs #1532) QueenCombBabylon takes liveBees: one per dispatch in flight, each with the cell of its issue. They are read through a ref, never through the scene's signature, so a bee that is offered, starts, goes quiet or finishes only moves a ship and never rebuilds the scene. The signature records only that live bees exist. Every ship is a thin instance of one mesh, so N ships are one draw call. The buffers are rewritten each frame and grow when more bees arrive. Ship positions are kept by bee id across rebuilds, so a new cell does not send every ship back to the hive. Queued bees, and bees whose issue has no cell on this map, wait in a row at the hive entrance. Working bees circle their issue along the cell rim, because zoomed in the cell's card covers its middle. Quiet bees hover at the rim, darkened, as does every bee while the feed is stale. Each lane has its own tint. With reduced motion the ships sit still. Hovering a ship, or tapping it, shows "#7513 · working · 12 min". The working ring follows working bees, not board columns. The canvas comb and the slot motes stay as they were when no live bees are given. QueenCatalogHive maps each bee to its cell by key, ignoring case: the atlas spells ghashtag/t27 and the supervisor gHashTag/t27. It adds the bees' issues that the 2026-10-04 atlas does not hold as observed cells (liveIssueRows in queenCatalogData.ts). Those cells are append-only and painted with the atlas's own "open", so a bee coming or going never repaints, and so never rebuilds, the map. The toolbar says "Bees live" only while the feed answers, and it says when the feed is derived from the board. The honesty contract now states the rule this changes: the cells draw no model, and the only model is the bee's ship, one GLB, no glTF loader, thin instances. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * queen: one poll feeds the game's bees and a kanban over every task, filtered in the address (Refs #1532) useQueenTasks is the only new loop. While the kanban is not on screen it asks for state=running, which is about 2 KB gzipped and carries every bee. While the kanban is on screen it asks for every task, about 55 KB. After a failure it waits 30 s before asking again. Until the full answer arrives, the board is drawn from the public board, never from the running-only answer. The same feed gives the catalog hive its live bees and the repository comb its ships. The kanban draws tasks, not board cards: issues, reviews and jobs, each linked to its own GitHub address. One new row filters by text (title or #number), kind, state and repository. Each option shows its count over the whole feed, and the row shows "shown / arrived" and the feed's source. The filter lives in the address (#/queen?tab=kanban&states=running&repos=gHashTag/t27), so a filtered board can be shared. A keystroke is drawn at once. An address changed from outside is adopted, and an address the board wrote itself is not adopted a second time. Leaving the tab drops the keys. The direction chips stay, and the column counts and the 30-card paging apply after filtering. A "failed" column appears only when it has something in it or was asked for. A running card carries its bee: state, how long, when last heard, lane. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * queen: check:queen-tasks gates the task view, the fallback, the filter address and the ship (Refs #1532) qa/queen-tasks-contract.mjs, 109 checks, pure and offline: - the spec's eight task_matches vectors, plus three wrong mirrors (mask 0 as "none", no range check, masks swapped) that must each fail them; - the recorded route answer parses, unknown kinds, states and off-GitHub links are dropped, a body that is not the contract is refused, and a re-stamped `since` does not reset a bee's age; - the board fallback: rows by column, one bee per running card, working/quiet at BEE_QUIET_SECONDS, source "board"; - a filter only hides and keeps order, and its address round-trips without touching the universe's own repo=/task=; - the bees' issues beyond the atlas become cells in the atlas's spelling, and no cell already placed moves; - the vendored GLB: four parts, triangles, centred, nose at +z; - the scene signature carries no bee. It runs in website-checks.yml next to the direction filter. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * queen: the task view decides with the t27 card itself, not a hand mirror (Refs #1532) The owner, 2026-10-08: logic is written in .t27, not in .mjs or a copy in TypeScript. - The kinds, the states, the bee states and the limits now come from src/lib/queenTasks.generated.ts, the `t27c gen-js` output of gHashTag/t27 specs/queen/tasks.t27 (master blob 7443ffb). - task_matches and bee_state run as public/t27/queen/tasks.wasm. These are the same bytes the Queen's server runs: t27c gen-c, then zig cc wasm32-wasi, with no imports. The feed waits for the card, so nothing is shown that it did not decide. - qa/queen-tasks-contract.mjs, its npm script and its workflow step are removed. The card's own tests are the gate (4 tests, 49/49 mutants in t27). - The filter row folds behind a Filter chip, so a short screen keeps a whole card in every column. It is one declared sideways row on a phone. A failed job or review shows in dropped with its own badge. Checked locally: - vite build passes, and the typecheck ratchet stays at 179/26 with no file gaining errors. - The Queen viewport contract passes: 8 sizes × 3 views. - On the live /queen/public-tasks, the kanban filtered from the address, and the ships over running issues in the game. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * queen: vendor the task card as public/t27/queen/tasks.wasm (Refs #1532) The bytes the Queen's server runs, built from gHashTag/t27 specs/queen/tasks.t27 (master blob 7443ffb): t27c gen-c, then zig 0.16 cc --target=wasm32-wasi -Oz -DNDEBUG -mexec-model=reactor, exporting job_state, review_state, a2a_state, bee_state and task_matches. The sha256 starts baca275e and matches BrowserOS trios/agent-server/specs/PIN. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.
What
Loop cycle 016. The user authorised the download ("download it yourself, open source"): Kenney Space Kit 2.0 (CC0) models replace the procedural buildings, hub, crystals and units on the Babylon field (loaded once, merged, thin-instanced; procedural stand-ins stay when a model fails). A rendered look: tone mapping, vignette, fog, glow on emissive parts (B-8). The technology tree declares its scroller so the 390x844 RESEARCH overflow stops flaking
check:queen-viewport(P1-31).Verified
Full chain on the Babylon default (
tri game-gates full): 19 rows; viewport 25/25 after three fixes it found: the RESEARCH 390x844 console is a declared scroller (P1-31), the model loader ignores a scene disposed mid-load, and the loaded PBR materials become StandardMaterials so no BRDF lookup texture is generated on a dead engine when the view switches (an uncaught TypeError the gate counted); dead-api 25/25, touch, round, pick, placement, stale, check:queen-babylon, honesty 28/28, seven contracts, api, ratchet, eslint, tsc..tri game-spike: 480/480 frames at vsync; chunk 385,900 B brotli.🤖 Generated with Claude Code