Skip to content

LANES: the swarm's width, and whether the width is working - #1043

Merged
gHashTag merged 2 commits into
mainfrom
site/queen-lanes-tab
Sep 26, 2026
Merged

gHashTag merged 2 commits into
mainfrom
site/queen-lanes-tab

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Why

On 2026-09-17 the swarm reached 100% utilisation for the first time — and produced zero branches. Ten lanes were busy; every turn ended refused in zero seconds, because all five provider keys answered HTTP 429 (z.ai code 1302, "Rate limit reached"). A lane held by a refusal looks exactly like a lane doing work, so the headline number lied for the better part of an hour.

A fourteenth view, on the letter l.

What it shows

  • Capacity, busy, free, utilisation — from /queen/status, which already sends workers (the QueenStatus interface simply never named the field; it does now).
  • Is it work? — the last dispatch with its duration. A refusal under one second never reached the provider, and the card takes an alarm skin. That skin is earned, never decorative.
  • The lane law — capacity = live keys × lanes per key. The worker ceiling is only a ceiling: it cannot conjure a lane a key does not pay for.
  • Donate a lane / how XP is earned — XP accrues to the owner of the key a turn ran on, only for a turn that reached a branch. Never per dispatch: a refused turn holds a lane exactly like a working one, so paying per dispatch would pay best when the swarm is most broken.
  • Where the work goes — a finished turn writes a branch inside a container that deliberately holds no push credential, so nothing reaches GitHub until something outside pushes it. GitButler is the intended safe path: virtual branches let the queue be published in slices instead of one irreversible flood.

What it refuses to do

No field accepts a provider key, and none ever will. This is a public static page; a secret typed into it is a secret published. The repository already asserts this in .env.example.queen ("a provider key must never appear here") and the view says it in both languages.

The contributor board, per-key health and the XP ledger need an endpoint that does not exist:

GET /queen/public-lanes → { keys: [{ owner, state: "live" | "cooldown" | "spent", lanes, turnsToBranch }] }

Following the contract stated at the top of queenHud.ts — "if a panel needs a number that is not derivable from these types, the number does not exist yet and the panel must say so rather than invent it" — those panels name what is missing instead of rendering a placeholder leaderboard.

Checks

tsc --noEmit clean
qa/agents-spec-contract.mjs PASS — Queen views 14, modules 14, keys 1234567890tprl
check:queen-languages PASS (306 EN keys, 306 RU keys)
vite build built in 1m 25s
check:queen-honesty FAIL — pre-existing, verified failing identically on HEAD in a detached worktree; untouched here

Not visually verified: a dev server could not be started from this session, so the view is confirmed by typecheck, the tab contract and a production build, not by a screenshot.

🤖 Generated with Claude Code

gHashTag and others added 2 commits September 16, 2026 00:45
groups.triByAgent got its '-' bucket only when some tri command had no agent,
so the day every command gained one the key vanished and qa/tools-spec-contract
read undefined where it asks for a list -- the same shape the contract's own
message promises, "unbound under '-'".

This is the second time today the same class of bug surfaced in this file: a
structure that held only while the data had a particular property, and broke
when the property went away. "Nothing is unbound" is a fact worth stating, so
the bucket is always there and empty when it is empty.

Группа '-' создавалась, только если существовали команды без агента. Как только
агент появился у всех, ключ исчез, и контракт получил undefined там, где просил
список. Теперь группа есть всегда и пуста, когда пуста.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
On 2026-09-17 the swarm reached 100% utilisation for the first time and
produced nothing. Ten lanes were busy; every turn ended refused in zero
seconds, because all five provider keys answered HTTP 429. A lane held by a
refusal looks exactly like a lane doing work, so the headline number lied.

The view prints utilisation beside the evidence for whether it is work — a
turn refused in under a second never reached the provider — and states the
lane law: capacity is live keys times lanes per key, and a worker ceiling
cannot conjure a lane a key does not pay for.

It also states how a player widens the swarm and how XP is earned for it: per
turn that reached a branch, never per dispatch, because paying per dispatch
would pay best when the swarm is most broken. No field accepts a provider key
and none ever will; this is a public static page.

The contributor board, per-key health and the XP ledger have no endpoint yet.
Per the contract in queenHud.ts they are named as missing, with the shape the
endpoint would carry, rather than invented.

Co-Authored-By: Claude Code <noreply@anthropic.com>
@gHashTag
gHashTag merged commit f897494 into main Sep 26, 2026
1 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant