Repository navigation
Closed
Labels
kind/ciCI/CD pipelines, workflows, and build automationCI/CD pipelines, workflows, and build automationpriority/highImportant and time-sensitiveImportant and time-sensitivesource/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobtask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Description
Design: fast PR tier, full main tier, self-healing main
Design doc: files/designs/ci-fast-pr-full-main.md in the repo-health
goal workspace
(~/workspace/goals/keep-the-four-repos-healthy/files/designs/ci-fast-pr-full-main.md).
Directive: Drew, 2026-10-28. Capacity tracker: #1599.
Summary
CI execution is already fast — the fleet's pain is GitHub runner
queue wait (2026-10-28 evidence in the doc and on #1599: 127+
runs queued at once; a 27-job id run waited 16–105m per job for
0.4–13.8m of execution; opencode test e2e jobs waited 65–76m for
0.1m of execution). The fix is structural, in three phases:
- Phase 1 — cancel-in-progress everywhere it is missing
(Drew-approved outright). Standard pattern: ref-keyed group +
cancel-in-progress: true; main runs keyed by run_id, never
cancelled. Audit gaps are enumerated in the doc §2.2
(openchamber nix-eval/release/vscode-extension, opencode
publish*, openchamber pr-review, code goreleaser). jules.yml is
deliberately untouched (CI: Jules workflow_run subscribes to every workflow completion — 44 of the last 100 repo runs are skipped no-ops, and they share the concurrency group that can drop a real ci-failure-fix run #304). - Phase 2 — PR tier slimming. PRs get basic validation only:
changed-path lint/format, syntax/typecheck of affected packages,
affected-package unit tests. Full matrices (flake check, e2e,
cross-platform builds, conformance, benches) move to main. The
dividing line is an explicit path-glob change-class policy
(doc §3.3, classes 0–4) that is tuned over time using the
main-breakage rate — not pipeline rewrites. - Phase 3 — main tier + remediation chain. One watched
main-gate workflow per repo runs ALL checks on merge to main. On
failure: breakage issue filed under the pattern (Breakage-ID
dedupe,main-broken+priority/criticallabels) → Jules
first via the existingjuleslabel trigger (budgeted: free
tier 15/day, 3 concurrent) → on Jules failure/timeout, release
to a priority-90 Muse fix packet, dedupe
repo-health:v1:fix:<repo>:main-breakage:<id>. Ownership is
singular and visible at all times (exactly one of thejules
label or a live queue task holds the breakage; every transition
is an agent-note:v1), so the orchestrator never double-assigns
and dropped items are recovered by the monitor's existing
claim-evaporation/dead-in-queue repairs.
Acceptance criteria
- Design reviewed; phase issues (filed alongside this one) are
the implementation path. - The change-class policy table (doc §3.3) is adopted as the
tuning surface for PR-tier scope. - Rollout order Phase 1 → 2 → 3 is followed; each phase lands
via its own queue task and PRs.
Notes
- Jules today: code's jules.yml has the
jules-label trigger and a
ci-failure-fixjob that explicitly excludes main — Phase 3
builds on both facts (doc §2.3). - Releases must not cut from a red main; that gate is a Phase 3
acceptance item, not part of this design issue.
Metadata
Metadata
Assignees
Labels
kind/ciCI/CD pipelines, workflows, and build automationCI/CD pipelines, workflows, and build automationpriority/highImportant and time-sensitiveImportant and time-sensitivesource/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobtask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Activity
developing-today commentedon Oct 28, 2026
CODE-721
dezren39 commentedon Oct 28, 2026
agent-note:v1
state: filed
Found via: filed this run — CI redesign pass executing Drew's 2026-10-28 directive (cancel-in-progress approved; PR tier = basic validation; full suite on main; Jules → issue → priority-90 Muse packet remediation chain). Design doc: files/designs/ci-fast-pr-full-main.md (repo-health goal workspace). Capacity evidence: #1599.
Agent: ci-redesign-filing
dezren39 commentedon Nov 1, 2026
agent-note:v1
event: picked_up
task: 2390
worker: repo-worker-code (lane B)
note: Triage of the CI-redesign design (#1779): verifying the design doc against live workflow state in all four repos and checking phase issues #1780/#1781/#1782 cover the rollout. No workflow changes in triage.
5 remaining items
developing-today commentedon Nov 3, 2026
agent-note:v1
state: reviewed (coverage loop-back)
Coverage pass 2026-11-03, loop-back review: this issue was re-reviewed (drift / overlap / already-handled / stale / blockers / ordering) so every open issue in the four repos is reviewed and in the system. Verdict: still live; in the system as task 7250 (triage, queued, priority 50) in repo-health-code-pilot. Labels audited and synced. If it is already handled at current main, its triage closes it with evidence; if oversized, the triage files the split; blockers belong on this issue.
Found via: coverage loop-back 2026-11-03
dezren39 commentedon Nov 3, 2026
agent-note:v1
event: picked_up
task: 7250
worker: repo-worker-code (lane L)
note: Triage of the CI-redesign design (#1779) against the 2026-11-02 policy change (no CI on PRs at all; main + manual only; main failure triggers a fix session). Verifying phase issues #1780/#1781/#1782, follow-ups from the 2026-11-01 triage (task 2390), and current workflow/policy state on main; then close or re-scope with evidence.
dezren39 commentedon Nov 3, 2026
agent-note:v1
event: triage_complete
task: 7250
worker: repo-worker-code (lane L)
verdict: design RECONCILED and CLOSED on its merits — every acceptance item is satisfied by the phase track; all remaining implementation is owned by live tasks on the phase issues, not by this design issue.
Reconciliation with the 2026-11-02 policy note (packet for task 7250): fresh main does NOT show a literal "no CI on PRs" supersession.
.github/ci-policy.md(live on main, 11,923 bytes) still names #1779 as the design and states the merge requirement is the basic (PR) tier only, with the full suite on main NOT a merge gate.nix-ci.ymlis push/schedule/dispatch-only; the basic-tier PR workflows (e.g.id-check.yml,mcpx-test.yml) remain. So the 2026-11-02 change narrowed practice to exactly the design's §3.1/§3.2 model — basic PR tier, full main tier, PRs never held for the full suite — it did not replace the design.Acceptance check (fresh gh state, 2026-11-03):
.github/ci-policy.md("Change classes (§3.3 of the design)"), tuning = edit that table by PR.Closing #1779 as completed: the design is implemented/adopted; nothing remains that is unique to this issue. Remainders live on #1780 (task 7252) and #1782 (task 6538 / PR #4636) — no new issue or packet needed, and none filed (per the one-issue-per-change rule).