Repository navigation
EPIC 20 merged/h: five-step rollout (supply, arm, flakes, cap, runners) #5510
Description
owner: aprender-pace (set 2026-10-19 by aprender-triage-worker at the cop's word; picks up children only as batch constituents after its current timed task)
EPIC: 20 merged PRs an hour (FLOW-005 v2)
Today aprender merges 0.42 PRs/h (git, last 24 h). Spec: FLOW-005 (proposed) v2, "aprender at twenty merged PRs an hour", 2026-10-18 (cop relay). Little's Law: lambda_max = cap / W. At cap 10 and W ~ 22 h the ceiling is 0.45/h (measured 0.42/h); 20/h needs ~27 PRs open. Order matters: step 1 shrinks W; the cap rises only after a live merge-queue test confirms the model. The full test set stays on the merge-queue commit throughout, except a test demoted GATE→LAB under C324 (e.g. test_mega_long_context_memory_bound, #5862): it is #[ignore]d on PR, merge-queue and release jobs, runs nightly with --ignored, and a red opens one ticket with one owner. That demotion is a scope change, not a waiver; deleting a test is a waiver.
Rollout: one gate at a time (v2 order)
A step starts only after the previous gate's number holds for 24 hours. Rule changes (ruleset, cap, runner groups) go to a quorum with a non-author sign-off.
| # | Step | Date | Ticket | Gate (24 h, verbatim) |
|---|---|---|---|---|
| 1 | Shrink W: pull, ready queue >= 2N, idle andon 10 min, wsweep (no PR > 24 h, 16 -> <= 10), auto-arm (#5490), red PR pushed within 30 min | today | #5498 | W <= 5 h · merged >= 2/h · opened >= 3/h · arm p90 <= 10 min |
| 2 | Queue test: maxEntriesToBuild 5 -> 1 + one 8-PR burst under cap 10 | 10-19 | #5505 (see #5496) | >= 7 PRs per green pass at depth >= 8 |
| 3 | Flakes: root fixes, infra#1753, #5489, x86-main own lane | 10-21 | #5506 | flake <= 2% · cancels <= 10% · pass p50 <= 30 min · runs/PR <= 1.3 |
| 4 | Cap 10 -> 30, sized from W measured after step 1 | 10-22 | #5508 | merged >= 8/h · W <= 3 h |
| 5 | Capacity: PR pool 38 or fast tier 12 | 10-26 | #5509 | merged >= 20/h for 4 h · W <= 90 min |
| parallel | aprender-simulate SIM-1..5 (model, contract tests, drift andon) | with step 1 | #5511 | SIM-3 green; SIM-4 wired; SIM-5 row in two consecutive batches |
Each ticket carries its falsifier verbatim from v2.
Rules
- No new Python. The reference
model.py/sim.pystay outside the repo. - Questions in any step go to a planted quorum (C314); a gate-script change needs a non-author sign-off.
- PRs are <=200 lines, one ticket each (Step 1/5 Shrink W: pull, andon, wsweep, auto-arm, red PR pushed in 30 min; <=200-line PRs #5498).
- LAB until the operator gates it (C324): throughput numbers are measured, never block a PR.
- Each gate result is logged: number, timestamp, source command, or
not measuredand why.
One-way doors and enforcement (operator order, 2026-10-18)
Each needs a planted quorum (lanes not the author model) and a non-author sign-off:
- PR-check runners 38 -> 46 (quorum; one-way door) #5515 PR-check runners -> 46 (v2 computes 38; quorum records 38 vs 46)
- Merge-queue runners 4 -> 5 (quorum; one-way door) #5516 merge-queue runners -> 5
- Phase-2 fast tier on PRs, full set stays on merge_group (quorum; one-way door) #5517 phase-2 fast tier on PRs (full set stays on merge_group)
- Cap enforcement: refuse PRs at the cap in gh pr create and pmat work dispatch, drafts included #5518 cap enforcement: refuse at the cap in
gh pr createandpmat workdispatch, drafts included
Children tracked here (REDUCE-1022)
- PRM review-replay: benchmark, trace tagging and rex pool admission #5345 — PRM review-replay: benchmark, trace tagging and rex pool admission (open)
- CI: a kicked merge-queue entry's dead run holds the concurrency group of its re-enqueue #5381 — CI: a kicked merge-queue entry's dead run holds the concurrency group of its re-enqueue (open)
- design(ci): structural PR flow — fast tier on PR head, full tier in merge group, ARM64-first, batching (target 8-16 PRs/h) #5439 — design(ci): structural PR flow — fast tier on PR head, full tier in merge group, ARM64-first, batching (target 8-16 PRs/h) (open)
- refactor: bring 5 apr-cli command files under the pre-commit pmat complexity limits (blocks merge-main into DIRTY PRs) #5463 — refactor: bring 5 apr-cli command files under the pre-commit pmat complexity limits (blocks merge-main into DIRTY PRs) (closed: not planned)
- Armed PRs stall BEHIND+red-head outside the merge queue (#5467/#5468 idle 2.5h) #5471 — Armed PRs stall BEHIND+red-head outside the merge queue (ci(quick-tier): build only the registered test binaries (95 of 595) #5467/ci(tier): merge_group runs the quick tier; full only on tags/release #5468 idle 2.5h) (open)
- Auto-enqueue on green + matching non-author seats (enqueuePullRequest), p90<=10m max<=30m #5490 — Auto-enqueue on green + matching non-author seats (enqueuePullRequest), p90<=10m max<=30m (closed: not planned)
- MQ: merge groups are 1.0 PRs/group (60/60 runs); measured path to >=5 #5496 — MQ: merge groups are 1.0 PRs/group (60/60 runs); measured path to >=5 (closed: not planned)
- Step 2/5 Queue test: merge-queue builds 5->1 and one 8-PR burst (cap 10) #5505 — Step 2/5 Queue test: merge-queue builds 5->1 and one 8-PR burst (cap 10) (closed: not planned)
- Step 4/5 Cap: open-PR cap 10->30, sized from measured W #5508 — Step 4/5 Cap: open-PR cap 10->30, sized from measured W (closed: not planned)
- Phase-2 fast tier on PRs, full set stays on merge_group (quorum; one-way door) #5517 — Phase-2 fast tier on PRs, full set stays on merge_group (quorum; one-way door) (closed: not planned)
- aprender-simulate: SIM-6 repo-flow and SIM-7 course-flow scenarios (FLOW-006), sim block from ledger inputs #5528 — aprender-simulate: SIM-6 repo-flow and SIM-7 course-flow scenarios (FLOW-006), sim block from ledger inputs (closed: not planned)
- ci-steward: signed seats so Q5 can tell a reviewer from the PR author #5543 — ci-steward: signed seats so Q5 can tell a reviewer from the PR author (closed: not planned)
- simulate: course_flow counts batch wait inside WIP and reports it (flow model B6) #5545 — simulate: course_flow counts batch wait inside WIP and reports it (flow model B6) (closed: not planned)
Activity
74 remaining items