Skip to content

spec(policy): pr_budget.t27 -- batch port waves per ring or crate, cap open PRs per author at 20 (Closes #10067) - #10070

Merged
gHashTag merged 1 commit into
masterfrom
spec/pr-budget-10067
Oct 17, 2026
Merged

gHashTag merged 1 commit into
masterfrom
spec/pr-budget-10067

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Closes #10067

Adds specs/policy/pr_budget.t27, a t27 card holding two rules for the PR queue:

  1. Batching. A port wave PR (title spec(port), branch zcode-port-* or port/cr-chat-*) lands one PR per ring or crate, not one per file. Each ported spec still earns 27 TRI in the Queen earnings ledger, so batching keeps every author's credit. A 20-file wave as 20 PRs costs 20 x 29 checks + 20 merges x 19 push runs = 960 Actions runs. As one batch it costs 48. That arithmetic is a test.
  2. Budget. Each author holds at most 20 open non-draft PRs (OPEN_CAP). The excess is held as a draft and promoted as slots free. Every author counts the same, the owner's account and the Queen's bees included.

The 2026-10-17 measurements are test data: open PRs (dmitrii-f-t27 128, gHashTag 162 with 131 queen-*), a rate of 6-9 PRs/hour, 732 master push runs and 76 dmitrii-f-t27 PR runs out of 1000, and 29 of 51 queued runs at 18:00Z.

This is the spec only. Nothing reads it yet, and no existing PR is touched. Wiring it into a gate is a follow-up.

Verification (Railway lab, t27c built at 063da04, zig 0.16.0)

  • test-report specs/policy/pr_budget.t27: 11/11 tests pass, 0 vacuous, 3 invariants proved at comptime
  • spec-status: IMPLEMENTED; parse-complete --specs-dir specs/policy: 8/8 consumed, 0 truncated
  • Negative control: OPEN_CAP = 21, CHECKS_PER_PR = 28 fails to compile (assertion failed)
  • ASCII only, 1 file, .t27 only

🤖 Generated with Claude Code

…p open PRs per author at 20 (Closes #10067)

Two rules as a t27 card, with the 2026-10-17 queue measurements as
test data:

1. Batching: a port wave PR (title `spec(port)`, branch `zcode-port-*`
   or `port/cr-chat-*`) lands one PR per ring or crate. Each spec still
   earns 27 TRI in the Queen earnings ledger, so no author loses credit.
   A 20-file wave is 960 Actions runs as 20 PRs and 48 as one.
2. Budget: at most 20 open non-draft PRs per author; the excess is held
   as a draft and promoted as slots free.

Lab (Railway, t27c at 063da04, zig 0.16.0): test-report 11/11 pass,
0 vacuous, 3 invariants proved; parse-complete 8/8 in specs/policy.
Negative control: OPEN_CAP 21 / CHECKS_PER_PR 28 fails to compile.

Spec only; wiring it into a gate is a follow-up.

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

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-17 18:17:40 UTC

Summary

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

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=e769ef021713 != 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).

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.

policy: pr_budget.t27 -- batch port waves per ring or crate, cap open non-draft PRs per author at 20

1 participant