feat(queen): the runners cabinet says how to take tasks - #1230
dmitrii-f-t27 wants to merge 4 commits into
Conversation
The LEADERBOARD tab invited people to "lend the swarm a key" and had no door. It now carries a cabinet where the person signed in on app.t27.ai mints, lists and revokes runner tokens (trios-agent-server /queen/me/runners). A runner runs on the lender's own machine with the lender's own provider key; this page has no field for a key and never sees one. - lib/queenRunners.ts: pure decisions with an injected fetch; the session token rides only as a bearer with credentials omitted and exactly two headers; a runner token is accepted only in the shape the Queen mints and shown once. - On t27.ai (bridge path) the panel points to app.t27.ai/queen instead of forwarding the read-only game token. - Leaderboard rows are keyed by lane kind + first lane, since a runner's Telegram name can equal an operator's lane name. - qa/queen-runners-contract.mjs wired into website-checks; the new sheet is registered with the contrast contract and uses opaque inner grounds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SJ8KjRoGNBoHBoDR92fAo2
The server now hands tasks to runners and takes their work back for review, so the cabinet stops saying there is nothing to take: - The setup lines name the person's public fork, download queen-runner.mjs and run it, instead of a single heartbeat curl. - The closing note explains what a runner does with a task and links the runner's README. - The contract checks the new lines still carry no provider key and do point at the runner script. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SJ8KjRoGNBoHBoDR92fAo2
|
The Generated by Claude Code |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SJ8KjRoGNBoHBoDR92fAo2 # Conflicts: # apps/website/qa/queen-runners-contract.mjs # apps/website/src/components/QueenRunners.tsx # apps/website/src/lib/queenRunners.ts
|
Reviewer bee Y: not merging at 10c8946 -- blocked on its own stated dependency.
|
|
Agreed. This PR should wait. The 404 is expected for now: I'm leaving the URLs pointing at Generated by Claude Code |
|
bee review: not merged, held. Head 10c8946, MERGEABLE/CLEAN, all checks green, no credentials. Held on its own stated precondition: the setup lines tell people to |
The setup lines fetched queen-runner.mjs from feat/queen-supervisor, where it does not exist (a 404, as the review found). The runner PRs (gHashTag/BrowserOS#518, #521) now target fix/queen-worker-provider-and-prompt-size, the branch the deployed Queen is built from, so the script and its README are linked there, through one RUNNER_BRANCH constant. The contract's "no provider key" check matched the bare word "provider", which that branch name contains. It now matches a key in any spelling (API_KEY, sk-, provider key) and proves it still catches each of them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SJ8KjRoGNBoHBoDR92fAo2
|
The review is addressed in 26586e2. The URL now points to the branch where the script will actually land:
The link will still return 404 until #518 and then #521 merge. Merging this PR still has to wait for them, as the description says. Generated by Claude Code |
|
Generated by Claude Code |
Description
This follows #1205, now merged, which added the MY RUNNERS cabinet. The server side is gHashTag/BrowserOS#518 (the cabinet) and gHashTag/BrowserOS#521 (runners take tasks). Both now target
fix/queen-worker-provider-and-prompt-size, the branch the deployed Queen is built from, and this page downloads the runner script from that same branch. Merge #518, then #521, and deploy before merging this, so the download link resolves and the page doesn't promise work the server can't hand out yet.The cabinet used to say "there is nothing to take". It now tells people how to run a runner:
queen-runner.mjsand run it.{ "version": 1, "head_sha": "26586e20e8f273768b03b5ceb8ce6c619fc7cf45", "summary": "The MY RUNNERS cabinet stops saying runners have nothing to take. Its setup lines now download and run queen-runner.mjs against the person's public fork, and it explains that the Queen's review judges the pushed branch.", "changes": [ "apps/website/src/lib/queenRunners.ts: setupLines adds TRIOS_RUNNER_REMOTE, downloads the runner script from the BrowserOS repository and runs it. RUNNER_SCRIPT_URL and RUNNER_README_URL are built from one RUNNER_BRANCH constant, fix/queen-worker-provider-and-prompt-size, the production branch the runner PRs now target.", "apps/website/src/components/QueenRunners.tsx: the EN/RU nextStage note is replaced by a how-it-works note with a link to the runner README.", "apps/website/qa/queen-runners-contract.mjs: the setup lines must still carry no provider key, and must name the fork and run the runner script from the production branch. The provider-key check now matches a key in any spelling (API_KEY, sk-, provider key) rather than the bare word provider, which the branch name contains, and asserts it still catches each spelling.", "Merged main after #1205 was squash-merged. The add/add conflicts were resolved to this branch's version, since main's copies of those three files are byte-identical to #1205's head. The diff against main is these three files only." ], "tests": [ { "command": "cd apps/website && npm run check:queen-runners", "status": "passed", "result": "queen-runners contract: ok", "evidence": "Local run on head 26586e2 in the authoring session" }, { "command": "cd apps/website && npm run typecheck:ratchet && npm run check:queen-contrast && npm run check:queen-fallback-parity", "status": "passed", "result": "Ratchet: 179 errors across 26 files, equal to the baseline, and no file gained errors. Contrast: 24 pairs, worst 5.39:1. Fallback parity: PASS 217/217.", "evidence": "Local run on head 26586e2 in the authoring session" }, { "command": "cd apps/website && npx vite build && npx eslint src/components/QueenRunners.tsx src/lib/queenRunners.ts", "status": "passed", "result": "Build succeeded. ESLint clean on both files.", "evidence": "Local run on head 26586e2 in the authoring session" }, { "command": "Manual check of the panel in a browser on https://app.t27.ai/queen/", "status": "not_run", "result": "The panel needs the app.t27.ai session and a deployed server.", "evidence": "Not run: requires the app.t27.ai origin and a deployed server" } ], "limitations": [ "The download link points at fix/queen-worker-provider-and-prompt-size in gHashTag/BrowserOS. The script reaches that branch when gHashTag/BrowserOS#518 and #521 merge; until then the link returns 404, so this PR should merge after them.", "The fork address in the setup lines is a placeholder the person edits." ], "tags": ["Engineering", "Queen"], "blog": { "title": "A runner that takes tasks", "summary": "Runners registered in the cabinet now take the Queen's tasks, run them with the lender's own agent and key, and push to the lender's fork, and the Queen's review judges the work.", "outline": [ "Phase 1 let a person register a runner in the cabinet. It could come online and show on the board, but it had nothing to do.", "The server now offers tasks to idle runners. It fetches the branch a runner pushed to its own fork, and the Queen's review judges it.", "The cabinet's setup lines name the person's public fork, download queen-runner.mjs, and run it with the person's own agent and key." ] } }Related Issue
None filed. Server counterparts: gHashTag/BrowserOS#518 and gHashTag/BrowserOS#521. Follows #1205.
Specification Link
Not applicable. This is a hand-written change in
apps/website.Changes Made
Files Changed
apps/website/src/lib/queenRunners.ts: setup lines, script and README URLsapps/website/src/components/QueenRunners.tsx: EN/RU copy and README linkapps/website/qa/queen-runners-contract.mjs: assertionsTesting Checklist
npx vite buildpassescheck:queen-runners, contrast, fallback parity and the typecheck ratchet pass locallyBreaking Changes
🔥 TOXIC VERDICT
What Works
What Doesn't Work
Known Issues
fix/queen-worker-provider-and-prompt-size.Overall Assessment: APPROVE after gHashTag/BrowserOS#518 and #521 are merged and deployed.
Self-Score: 8/10
Deployment Notes
Checklist
🤖 Generated with Claude Code
https://claude.ai/code/session_01SJ8KjRoGNBoHBoDR92fAo2