Conversation
….t27) The round handed queend GitHub's listing order and read no label, so a P0 listed after newer unlabelled work waited behind it. It now ranks the open issues by gHashTag/t27 specs/queen/priority.t27 (t27 PR #6367, commit c44c7aea32a5) before `queend choose`, which still takes the first eligible candidate it is handed: - an issue with an open blocker (issue_dependencies_summary.blocked_by) is not a candidate; - labels map to CRITICAL/HIGH/NORMAL/LOW, most urgent wins, unlabelled is NORMAL and never ages; at most 3 criticals per listing, the rest run HIGH; labelled work ages one level after 14 days, never to CRITICAL; - ties keep the listing order, so a repository with no priority labels and no blockers sees exactly the order it had. The vocabulary is `t27c gen-js` output committed verbatim as queen-priority.gen.js (excluded from biome so the bytes stay the compiler's); queen-priority.ts mirrors the spec's five functions. openIssues keeps label names, created_at and the blocker count from the same response; the board still remembers blocked issues. One log line per round names the top pick, its level and why. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
✅ Tests passed — 2605/2668
|
This was referenced Oct 5, 2026
Merged
This branch has not been deployed
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 changed
The Queen's round used to hand
queend choosethe open issues in GitHub's listing order and read no label, so a P0 listed after newer unlabelled work waited behind it. It now ranks them by the rule in gHashTag/t27specs/queen/priority.t27(gHashTag/t27#6367, commitc44c7aea32a5) before callingqueend.queend choose(Swift, unchanged) still takes the first eligible candidate in the order it is given, so ordering its input is the whole change.issue_dependencies_summary.blocked_by > 0) is not a candidate. The board (rememberIssues) still sees it.P0,priority/critical,critical. HIGH:P1,priority/high,high-priority. NORMAL:P2,priority/medium. LOW:P3,P4,priority/low. If an issue has several, the most urgent counts. An issue with no priority label is NORMAL and never ages.capped).priority: top #10 CRITICAL (base CRITICAL, why=label, listing 2, age 4d); 1 blocked skipped.candidateOverridebranch is unchanged.Files
apps/server/src/api/services/queen-priority.gen.js: generated byt27c gen-js specs/queen/priority.t27(t27c 0.4.0) and committed byte for byte. It is excluded from biome inbiome.json, the same way asqueen-contributor-policy.gen.ts, so the commit hook cannot reformat it.apps/server/src/api/services/queen-priority.ts:cappedLevel,effectiveLevel,eligible,outranksandwhymirror the spec functions one to one, becausegen-jsdoes not emit function bodies. It imports every constant from the generated file.rankIssuesmirrorsrank()in t27scripts/tri_loop/queue.py(tri queue). The header names the source path and commit.apps/server/src/api/services/queen-tick.ts:openIssuesnow also returnslabels,createdAtandblockedBy, all taken from the same response, so there is no extra request. Existing fields are unchanged.runRoundranks the open issues and filters out blocked ones before buildingcandidates.tests/api/queen-issue-pages.test.tsandtests/api/queen-round.test.ts.Rule source
gHashTag/t27
specs/queen/priority.t27on branchclaude/queen-priority(gHashTag/t27#6367, issue gHashTag/t27#6366). Spec blobfbbf548c.Test output
Run from
trios/agent-server/apps/server, withTRIOS_QUEEND_PATHset to a localswift build -c release --product queend:New cases:
priority/lownever passes unlabelled work.openIssuespasses labels,created_atand the blocker count through.queend): it picks the P0 over newer unlabelled work, it moves past a blocked P0, and with no labels the listing order is kept.Negative controls (each reverted after the run):
candidates = open.map(...)inrunRoundfails both round priority tests.Do not merge without the owner: merging this branch deploys production.
🤖 Generated with Claude Code