You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
policy: refuse new issues without Boundary, Scenarios, Requirements and Success Criteria #7498
Owner rule 2026-10-07: no new issue may be created without the sections the Queen needs to dispatch it.
Measured 2026-10-07 11:27Z on /queen/status: 287 of 982 skips in one round were missingBoundary and 98 incompleteSpec; every one of the 286 BACKLOG cards lacks ## Boundary, 261 lack all four sections. Templates do not help: gh issue create and the API bypass them. needs-boundary.yml labels once a day, after the fact.
Boundary
specs/policy/issue_shape.t27
gen/c/policy/issue_shape.c
.github/workflows/issue-shape.yml
User Scenarios
Given a new issue with no ## Boundary, when it is opened, then the gate closes it as not planned, labels it needs-shape and comments which sections are missing.
Given that issue is edited to carry all four sections, when it is saved, then the gate reopens it and removes the label.
Given an issue labelled epic or roadmap, then the gate does nothing.
Requirements
FR-001: The rule MUST live in specs/policy/issue_shape.t27 as the twin of QueenSpecQuality.judge (BrowserOS queen-core): boundary path, scenarios, requirements with an obligation, success criteria with a measurable outcome.
FR-002: The workflow MUST compile gen/c/policy/issue_shape.c (generated by t27c gen-c) and contain no rule of its own.
The rule landed as t27 in #7505 (specs/policy/issue_shape.t27 + gen/c/policy/issue_shape.c). The workflow that applies it is a .yml, which the Only-t27 gate refuses from an agent, so it needs the owner: commit the file below as .github/workflows/issue-shape.yml (35 lines, inside the #7371 budget), or apply owner-approved-foreign to a PR carrying it.
What it does on issues: opened, edited, reopened (epic/roadmap skipped): compiles the generated C, and when a check fails it comments the missing: lines, labels needs-shape and closes the issue as not planned. An edit that passes removes the label and reopens it. It only acts after #7505 merges (it compiles gen/c/policy/issue_shape.c).
The 287 existing issues without Boundary are not touched by it; they only get judged when next edited.
name: Issue shape (no issue without Boundary, Scenarios, Requirements, Success Criteria)# The rule is specs/policy/issue_shape.t27 (#7498), lowered to gen/c/policy/issue_shape.c. This file only feeds it.on:
issues:
types: [opened, edited, reopened]permissions:
issues: writeconcurrency:
group: issue-shape-${{ github.event.issue.number }}jobs:
shape:
if: ${{ !contains(github.event.issue.labels.*.name, 'epic') && !contains(github.event.issue.labels.*.name, 'roadmap') }}runs-on: ubuntu-latesttimeout-minutes: 5steps:
- uses: actions/checkout@v6with:
sparse-checkout: gen/c/policy
- name: Judge the body with the Queen's four checksenv:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}N: ${{ github.event.issue.number }}R: ${{ github.repository }}HELD: ${{ contains(github.event.issue.labels.*.name, 'needs-shape') }}run: | printf '#include "gen/c/policy/issue_shape.c"\n#include <stdio.h>\nint main(void){static char b[1<<20],o[1<<16];unsigned n=check_issue((uint8_t*)b,fread(b,1,sizeof b,stdin),(uint8_t*)o,sizeof o-1);fputs(o,stdout);return n!=0;}\n' | cc -w -I . -x c -o "$RUNNER_TEMP/gate" - gh label create needs-shape -R "$R" -c d93f0b -d "Closed by issue-shape: a section the Queen needs is missing" 2>/dev/null || true if gh issue view "$N" -R "$R" --json body -q .body | "$RUNNER_TEMP/gate" > "$RUNNER_TEMP/missing"; then [ "$HELD" = true ] && gh issue edit "$N" -R "$R" --remove-label needs-shape && gh issue reopen "$N" -R "$R" exit 0 fi { echo "Closed: the Queen cannot dispatch this issue as written (rule: specs/policy/issue_shape.t27)."; echo; sed 's/^/- /' "$RUNNER_TEMP/missing"; echo; echo "Edit the body to add them; the issue reopens by itself."; } > "$RUNNER_TEMP/comment" [ "$HELD" = true ] || gh issue comment "$N" -R "$R" -F "$RUNNER_TEMP/comment" gh issue edit "$N" -R "$R" --add-label needs-shape gh issue close "$N" -R "$R" --reason "not planned"
Activity
gHashTag commentedon Oct 7, 2026
The rule landed as t27 in #7505 (
specs/policy/issue_shape.t27+gen/c/policy/issue_shape.c). The workflow that applies it is a.yml, which the Only-t27 gate refuses from an agent, so it needs the owner: commit the file below as.github/workflows/issue-shape.yml(35 lines, inside the #7371 budget), or applyowner-approved-foreignto a PR carrying it.What it does on
issues: opened, edited, reopened(epic/roadmap skipped): compiles the generated C, and when a check fails it comments themissing:lines, labelsneeds-shapeand closes the issue as not planned. An edit that passes removes the label and reopens it. It only acts after #7505 merges (it compilesgen/c/policy/issue_shape.c).The 287 existing issues without Boundary are not touched by it; they only get judged when next edited.
policy: the issue-shape rule in t27, twin of the Queen's judge (Refs #…
policy: the issue-shape gate is wired -- only the template's shape ma…
skill(issue-shape): how to file an issue the shape gate keeps open (C…