T27.AI

Blog

The Queen and the hive: a course on how the project builds itself, 27 widgets on compiled specs

2026-10-19 · 4 min read

[every widget runs fn bodies of a gHashTag/t27 specs/queen or specs/automation spec compiled to wasm; no widget reads the live Queen; the game widgets are flat sketches] Course 11 opens the rules the Queen runs the hive by: shaping an issue and its boundary, priority, aging and review first, a task's state machine, the ship in the game, a deploy mid-flight, the reviewer's concurrency and back-off, the merge gate, the review jam and inherited red, refused keys and the next key, credit and token prices, agent bots in one group, the night watch, the public board and the comb.

Title card, no illustration yet, for: The Queen and the hive: a course on how the project builds itself, 27 widgets on compiled specs
View the title card at full size
#t27#Course#Queen

Course 11 of t27.ai is out: the Queen and the hive. It tells how this project builds itself. An issue becomes a task for a bee, the bee writes a .t27 spec, a reviewer bee checks it, it merges, and the site regenerates. The Queen who runs that loop is not a black box: her rules live in gHashTag/t27 specs/queen and specs/automation as specs with numeric tests. The course has 27 lessons in 9 modules, each opening with a question, and each widget answers it with the spec's own fn bodies compiled to WebAssembly.

Nine modules, twenty-seven widgets

ModuleWidgetsSpecs
The taskhive-shape, hive-boundary, hive-task-filterqueen/shaping, queen/tasks
Who goes nexthive-aging, hive-rank, hive-review-firstqueen/priority, queen/review_first
A bee's lifehive-lifecycle, hive-ship, hive-drainqueen/dispatch, queen/hive, queen/drain
The reviewer beehive-reviewers, hive-revisit, hive-gatequeen/reviewer, queen/merger_gate
The review jamhive-jam, hive-jam-action, hive-master-redautomation/review-jam, queen/merger_gate
Keyshive-key-error, hive-key-rest, hive-next-keyqueen/key_failover
Credit and moneyhive-credit, hive-price, hive-burnautomation/queen-contributor-keys, automation/token-wallet
Agents among themselveshive-called, hive-chain, hive-cooldownautomation/agent-hive-group
Night and the boardhive-night, hive-column, hive-cellautomation/card-chat-night-watch, queen/dispatch, queen/hive

The pictures are the rules in motion: a kanban card that lands in the column a spec fn names, a review gate that opens or stays shut, a state machine whose illegal events grey out, a ship that flies home and fades over 2400 ms, a pool of keys where the next free one gets a ring, a ladder of agents that falls silent at depth 3, a cooldown clock, and comb cells that flash gold, amber, red or grey.

Where a stuck pull request lands

review-jam.t27 sorts a pull request that will not move into one of 10 cases, and the earliest rule that matches wins. The figure runs its compiled jam_case on every one of the 512 combinations of its 9 facts. Half of them, 256, are unmeasured, because a PR the Queen could not read is never reported as free; 128 are a draft or fresh PR, and only 2 are no jam at all. jam_is_queens_turn says 318 of the 512 are the Queen's move.

1. unmeasured2562. draft or fresh1283. stacked on open644. conflicting325. labeled not merged166. refused then pushed47. refused not fixed48. noise red49. no reviewer210. none2of 512 combinations of the 9 facts; gold: the Queen's turn
jam_case of review-jam.t27 over all 512 combinations of its 9 facts, rules in their order of priority, computed by the compiled spec the hive-jam widget runs. Gold bars are cases jam_is_queens_turn gives to the Queen.

How the specs got into the browser

No widget copies a rule. scripts/t27-logic.mjs of 999-multibots-telegraf runs t27c gen on a spec, builds the Zig with Zig 0.16 for wasm32 and writes a module with one function per spec fn, and scripts/widget-logic.mjs puts it beside the widget with a byte-identical copy of the spec. On t27 master, 137 of the 139 specs in the three folders ran green and 1302 fns lowered. review-jam found two bugs in that door, fixed in 999#4020: a param named case, which TypeScript refuses, and a bool read with all 32 bits, which made jam_is_queens_turn answer true for none.

What it does not show

Try it

What this does not settle

Receipts

Work with me

Need an FPGA/RTL problem taken to measured hardware?

I work contract and part-time on hardware-AI, FPGA/RTL and ML systems — from specification and open toolchains to reproducible measurements.