Skip to content

feat(queen): refuse to publish a task the Queen could never dispatch - #4724

Merged
gHashTag merged 1 commit into
masterfrom
feat/boundary-resolve-bare
Sep 24, 2026
Merged

gHashTag merged 1 commit into
masterfrom
feat/boundary-resolve-bare

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Closes #4723

The swarm was filling its own backlog with rows it cannot dispatch

An issue with no ## Boundary is not work the Queen declines — it is work she cannot see. She reserves files before dispatching, so with nothing to reserve the issue is skipped every round, for good.

missingBoundary: 565 of 649 candidates   |   active 1 of 20   |   refusal: "nothing to choose"

Every one of those was opened by something that never checked. feed_untested, feed_defects, feed_empty_bodies and refile all called gh issue create with no gate. needs_boundary.py labels them a day later, propose_boundary.py drafts what is missing — both are repairs after the fact.

The rule is the Queen's, copied

task_shape.boundary_paths is a pinned twin of boundaryPathsOf in queen-tick.ts. That matters in both directions: a gate stricter than she is rejects work she would have taken, and a looser one passes work she will silently skip — which is the failure this exists to end.

Verified against 40 issues she had already parsed: 40 agreements, 0 disagreements — not only against its own cases.

Each pinned case surprised once:

the section ends at the next ## heading not at a blank line
a line contributes its first path token not every one
backticks, quotes, trailing punctuation stripped
### Boundary not the heading she reads
## Границы is

What it refuses to do

It never closes an issue. One may be a real problem badly filed, and deleting a person's report to keep a queue tidy is the wrong trade. roadmap and epic stay exempt — a goal is not a task. A documentation-only boundary warns rather than refuses: whether prose-only work may be dispatched is the operator's call, not this gate's.

It does not check that the path exists, either. A port task names the .t27 it is about to create, and a gate demanding the file first would refuse every one of them.

Also here: a filename without its directory is still a filename

--resolve-bare reads compiler.rs as bootstrap/src/compiler.rs and octree.t27 as specs/tri/trees/octree.t27 — but only when the tree holds exactly one file with that name. Cargo.toml is thirty-two of them, so it resolves to nothing, exactly as a two-path issue writes nothing.

8025 of 8323 basenames are unique in this tree. That turned 65 issues that looked like they named nothing into issues whose boundary was written all along, just without a directory in front of it — 83 more bodies written.

Not in this change

The workflow applying the same gate to issues opened by hand (.github/workflows/queen-task-shape.yml) needs a token with the workflow scope, which this one does not carry. The gate that matters more is here: the feeds are where the 565 came from.

🤖 Generated with Claude Code

An issue with no `## Boundary` is not work she declines, it is work she cannot
see: she reserves files before dispatching, so with nothing to reserve the
issue is skipped every round, for good. On 2026-09-23 that was 565 of 649
candidates, twenty lanes idle, refusal="nothing to choose" over six hundred
open issues.

Every one of them was opened by something that never checked. feed_untested,
feed_defects, feed_empty_bodies and refile all called `gh issue create` with
no gate, so the swarm has been filling its own backlog with rows it cannot
dispatch. needs_boundary.py labels them a day later and propose_boundary.py
drafts what is missing; both are repairs after the fact.

`task_shape.py` is the gate, and its rule is a PINNED TWIN of
`boundaryPathsOf` in queen-tick.ts. That matters both ways: a gate stricter
than the Queen rejects work she would have taken, and a looser one passes work
she will silently skip. Verified against 40 issues she had already parsed - 40
agreements, 0 disagreements - not only against its own cases.

Each pinned case surprised once: the section ends at the next `## ` heading
and NOT at a blank line, a line contributes its FIRST path token and not every
one, backticks and trailing punctuation are stripped, `### Boundary` is not
the heading she reads, `## Границы` is.

It refuses and never closes: an issue may be a real problem badly filed, and
deleting a person's report to keep a queue tidy is the wrong trade. `roadmap`
and `epic` stay exempt because a goal is not a task, and a documentation-only
boundary warns rather than refuses - whether prose-only work may be dispatched
is the operator's call, not this gate's.

Also `propose_boundary.py --resolve-bare`: a file named without its directory
(`compiler.rs`, `octree.t27`) is read as the path the tree holds for it, when
the tree holds exactly one. 8025 of 8323 basenames are unique here, which
turned 65 issues that looked like they named nothing into issues whose
boundary was written all along.

Closes #4723

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-24 03:15:51 UTC

Summary

Status Count
Total Open PRs 32
PRs with Failing Checks 29
PRs with All Checks Green 3
READY 3
FAILING 29
PENDING 0
NO CHECKS YET 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=403499176a5d != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@gHashTag
gHashTag merged commit 0f241b8 into master Sep 24, 2026
24 of 30 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.

Refuse to publish a task the Queen could never dispatch

1 participant