Skip to content

docs(maintaining,skills): land develop PRs through the merge queue - #310

Open
umermjd11 wants to merge 2 commits into
InfiniteZeroFoundation:developfrom
umermjd11:docs/merge-queue-rollout
Open

umermjd11 wants to merge 2 commits into
InfiniteZeroFoundation:developfrom
umermjd11:docs/merge-queue-rollout

Conversation

@umermjd11

@umermjd11 umermjd11 commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Stage 2 of the merge-queue rollout agreed in Discussion 208 (Option 2). PR No. 308 added the merge_group CI trigger, and the develop ruleset now requires the merge queue. This PR updates the process docs and skills to match.

  • Developer/MAINTAINING.md:
    • No. 2 replaces "branch must be up to date" with the merge queue.
    • The No. 4.2 evidence wording, No. 4.4 path A ("Merge when ready") and the "when a local build is needed" note now refer to the queue's CI run.
  • din-pr-merge:
    • The path A gate no longer requires CLEAN or gh pr update-branch. Only DIRTY (a conflict) blocks.
    • A3 queues with the GraphQL enqueuePullRequest mutation. gh pr merge fails here with "Auto merge is not allowed for this repository", because auto-merge is off.
    • It covers watching the merge_group run and what to do when a PR is dropped from the queue.
    • The rollback restores the up-to-date requirement as well as turning the queue off.
  • din-pr-review:
    • The review-depth rule and the verification template accept green PR CI.
    • A branch that's only behind develop no longer makes CI "stale" evidence.
  • din-merge-build-test, din-push-develop: one-line wording updates.

Ruleset change (already applied)

On the develop ruleset, "Require merge queue" is on (merge commit, ALLGREEN, 5 PRs built at once, minimum 1, no wait, 60-minute timeout for CI OK) and "Require branches to be up to date" is off. PR No. 296 was the first PR through. The queue's CI (run 41468689673) passed CI OK, and the queue merged it as 8f291c11.

Verification

  • Docs and skills only; no code or workflow changes.
  • grep -rn -i "up to date\|update-branch" Developer/MAINTAINING.md .claude/skills/ leaves only the new queue wording, the rollback note, and one unrelated local merge-base check in din-merge-build-test.
  • The enqueue mutation in din-pr-merge A3 is the call that queued PR No. 296.

Part of Discussion 208.

🤖 Generated with Claude Code

Stage 2 of the merge-queue rollout (Discussion 208, Option 2), after
PR No. 308 added the merge_group CI trigger. MAINTAINING.md and the
din-pr-merge / din-pr-review / din-merge-build-test / din-push-develop
skills now describe merging via the queue instead of the
"branch must be up to date" rule, which the ruleset change drops.

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

Copy link
Copy Markdown
Collaborator

Verification — PR No. 310

Reviewed head 4a575b74d47cfdc8c0ff8f71be44a83c271b6620 against develop at 74a845c9e7328e28fca95f1cdc6ff595bbea17ae.

  • Claimed: docs/skills only, six files. Verified: diff contains only five skill/template Markdown files plus Developer/MAINTAINING.md; +38/-18; no code or workflow changes. git diff upstream/develop...HEAD --check passed.
  • Claimed: CI already supports merge groups. Verified: base .github/workflows/ci.yml includes merge_group: types: [checks_requested]; ci-ok unconditionally aggregates Solidity, Python, and Docs. All four PR checks passed: https://github.com/InfiniteZeroFoundation/DevNet/actions/runs/41462931931 . A real merge-group run for PR No. 296 also passed: https://github.com/InfiniteZeroFoundation/DevNet/actions/runs/41468689673 . That is rollout evidence, not a queue run for PR No. 310.
  • Claimed: green checks can be accepted without a manual branch update. Verified with correction requested: GitHub documents retesting queued PRs with the current base and prior queue entries; the remaining review-skill paragraph still contradicts this policy (see the inline review comment).
  • Claimed: plain gh pr merge <N> queues the PR. Verified: official CLI documentation confirms no merge strategy is required when the target requires a queue; --admin bypasses it. https://cli.github.com/manual/gh_pr_merge
  • Claimed: queue method is merge commit; no manual up-to-date requirement. Verified: read-only live rules inspection returned merge method MERGE, grouping ALLGREEN, required CI OK, strict status checks false, one approval, last-push approval, stale-review dismissal, and only merge allowed.
  • Claimed: rollback is documented. Verified with correction requested: disabling the queue is documented, but restoring strict status checks is missing (see the inline review comment).
  • Claimed: agreed staged rollout. Verified: Discussion 208 comment 19296177 proposes Option 2, with Santiago and Robbert supporting it. Shared maintainer workflow: peer review, merging, and issue/task closure (@Santiagocetran, @robertocarlous) #208 (comment)
  • Conflicts: local git merge-tree --write-tree --name-only upstream/develop HEAD exited 0, yielding tree 086872910fcd08fa6372cad9903590d639e5ab5f; GitHub reported MERGEABLE/BLOCKED at inspection. BLOCKED is not a merge conflict.
  • Peer check: din_peer_check.py pr 310 passed for Santiagocetran; involved author Umer Majeed. No closing keywords in the PR body or its single commit.
  • Local tests: no application suite rerun for this docs-only change; relied on successful PR CI and directly inspected the process claims. Review worktree is clean.

Copy link
Copy Markdown
Collaborator

Files changed (6) — as of 4a575b74d47cfdc8c0ff8f71be44a83c271b6620

Six changed files, as of 4a575b74d47cfdc8c0ff8f71be44a83c271b6620. Merge base equals the inspected develop base, so there is no intervening base drift at that snapshot. Local and GitHub conflict checks agree: clean / MERGEABLE.

.claude/skills/din-merge-build-test/SKILL.md

Field Value
Change Modified
Lines +1/-1
Diff Replaces the manual up-to-date rationale with queue retesting.
Functionality — how & why Accept PR CI for as-is changes because the queue supplies final integration verification.
Diff vs current develop HEAD No intervening changes at inspected base snapshot.
Recommended merge proposal Merge as-is.
Actual merge proposal Soon
Pending proposal None
Local merge conflict No
GitHub merge conflict No

.claude/skills/din-pr-merge/SKILL.md

Field Value
Change Modified
Lines +27/-9
Diff Changes the gate, enqueues via plain gh pr merge, and documents queue outcomes and rollback.
Functionality — how & why Allows behind branches to enter the queue while retaining approval, CI and conflict gates.
Diff vs current develop HEAD No intervening changes at inspected base snapshot.
Recommended merge proposal Restore the up-to-date requirement in the rollback instructions.
Actual merge proposal Soon
Pending proposal Rollback correction.
Local merge conflict No
GitHub merge conflict No

.claude/skills/din-pr-review/SKILL.md

Field Value
Change Modified
Lines +2/-2
Diff Accepts green PR checks in the review-depth rule.
Functionality — how & why Relies on queue integration testing to avoid manual base updates and duplicate verification.
Diff vs current develop HEAD No intervening changes at inspected base snapshot.
Recommended merge proposal Fix the contradictory paragraph at lines 118–120.
Actual merge proposal Soon
Pending proposal Review-evidence correction.
Local merge conflict No
GitHub merge conflict No

.claude/skills/din-pr-review/templates/verification-comment.md

Field Value
Change Modified
Lines +2/-1
Diff Updates the CI evidence wording.
Functionality — how & why Keeps the verification template aligned with the queue-based evidence rule.
Diff vs current develop HEAD No intervening changes at inspected base snapshot.
Recommended merge proposal Merge as-is.
Actual merge proposal Soon
Pending proposal None
Local merge conflict No
GitHub merge conflict No

.claude/skills/din-push-develop/SKILL.md

Field Value
Change Modified
Lines +1/-1
Diff Replaces the up-to-date prerequisite with a green queue run.
Functionality — how & why Explains the normal-path checks that an admin direct push bypasses.
Diff vs current develop HEAD No intervening changes at inspected base snapshot.
Recommended merge proposal Merge as-is.
Actual merge proposal Soon
Pending proposal None
Local merge conflict No
GitHub merge conflict No

Developer/MAINTAINING.md

Field Value
Change Modified
Lines +5/-4
Diff Updates enforcement, evidence, merge path A and local-build guidance.
Functionality — how & why Moves final integration verification to the queue, preserving review and CI requirements.
Diff vs current develop HEAD No intervening changes at inspected base snapshot.
Recommended merge proposal Merge as-is.
Actual merge proposal Soon
Pending proposal None
Local merge conflict No
GitHub merge conflict No

Verification evidence is recorded in the preceding comment. Outcome comment is deferred until a real merge.

@Santiagocetran Santiagocetran left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for putting this together, Umer! This follows the direction we agreed on and should save us the update/reapproval round-trips. PR CI is green, and it’s good to see a real merge queue run passing too.

I spotted two small gaps to address before merging:

  1. Include restoring the up-to-date requirement in the queue rollback instructions.
  2. Update the remaining review-skill paragraph that rejects CI when develop has advanced, so it matches the new queue-based guidance.

Thanks again for carrying the rollout forward!

Reviewed at 4a575b7.

Comment thread .claude/skills/din-pr-merge/SKILL.md Outdated
as usual.
- **`CI OK` never reports on the queue run** (the queue sits waiting): stop
and tell Umer. The rollback is turning the merge-queue rule off in the
`develop` ruleset (Discussion 208).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please include restoring “Require branches to be up to date before merging” in the rollback.

The rollout disables that requirement, so turning off only the merge queue leaves both safeguards disabled. An outdated PR could then merge using green checks that never tested its combination with current develop.

Restoring the up-to-date requirement before allowing direct merges preserves the guarantee we chose in Discussion 208, Option 2.

**Review depth (MAINTAINING No. 4.2).** Required checks green against an
up-to-date `develop` count as evidence for anything CI covers: cite the run
**Review depth (MAINTAINING No. 4.2).** Required checks green on the PR
count as evidence (the merge queue re-runs them on the latest `develop`) for anything CI covers: cite the run

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new wording accepts green PR checks because the queue retests against current develop, but lines 118–120 still say:

If CI on the PR is red, stale against develop, or never ran, CI isn't evidence

That paragraph then asks for a branch update or local test run, preserving the update/reapproval or duplicate-testing work this change is intended to remove.

Please update it to reject missing, failing, or obsolete checks for the current PR head, while allowing develop to advance and relying on the queue for integration testing.

- din-pr-merge rollback now restores "require branches to be up to
  date" along with disabling the merge queue (review item 1).
- din-pr-review no longer rejects green PR CI just because the branch
  is behind develop; the merge queue re-tests on the latest develop
  (review item 2).
- Queue with the GraphQL enqueuePullRequest mutation instead of
  gh pr merge, which fails here with "Auto merge is not allowed for
  this repository" (seen enqueueing PR No. 296). MAINTAINING.md path A
  now says Merge when ready only.

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

Copy link
Copy Markdown
Collaborator Author

Thanks, Santiago. Both items are addressed in 079cacb (reviewed: 4a575b7 → current HEAD: 079cacb):

  1. Rollback: din-pr-merge now says to turn the merge-queue rule off and turn "Require branches to be up to date" back on, then revert the docs wording.
  2. Review-skill paragraph: din-pr-review lines 118–120 no longer treat a branch that's only behind develop as stale CI. The author is asked to merge develop in only for a real conflict, or when the PR depends on something newer on develop.

One more change from the live rollout: gh pr merge <N> didn't queue PR No. 296. It failed with "Auto merge is not allowed for this repository", because auto-merge is off for the repo, even though the CLI docs say it should queue. A3 now uses the GraphQL enqueuePullRequest mutation, which is what actually queued 296, and MAINTAINING.md just says Merge when ready. If we'd rather turn on "Allow auto-merge", gh pr merge would work again.

@robertocarlous

Copy link
Copy Markdown
Collaborator

Reviewed against develop in an isolated worktree (branch applies cleanly on top of current tip, cf802168, 2 commits, no conflicts — confirmed by git merge-tree --write-tree locally (exit 0, no file list) and GitHub's own mergeable: MERGEABLE / mergeStateStatus: BLOCKED (blocked only on missing approval)). CI on 079cacb9: all 4 checks passed at run 41475194544 — CI OK, Python, Solidity, Docs.

Claimed: Docs and skills only; no code or workflow changes.

Verified: git diff 74a845c9..079cacb9 --name-only lists exactly 6 files: Developer/MAINTAINING.md, .claude/skills/din-pr-merge/SKILL.md, .claude/skills/din-pr-review/SKILL.md, .claude/skills/din-pr-review/templates/verification-comment.md, .claude/skills/din-merge-build-test/SKILL.md, .claude/skills/din-push-develop/SKILL.md. No Python, Solidity, or workflow files.

Claimed: grep -rn -i "up to date\|update-branch" Developer/MAINTAINING.md .claude/skills/ leaves only the new queue wording, the rollback note, and one unrelated local merge-base check in din-merge-build-test.

Verified: Running that exact grep against the PR worktree returns 3 lines: MAINTAINING.md:34 ("nobody clicks Update branch" — new queue wording), din-pr-merge/SKILL.md:102 ("don't run gh pr update-branch" — new queue guidance), din-pr-merge/SKILL.md:144 ("Require branches to be up to date before merging" back on — rollback note). The din-merge-build-test mention (echo up-to-date with hyphens at line 78 of that file) is a shell label on a git merge-base --is-ancestor check — correctly called out in the PR description, not caught by the grep pattern due to the hyphen form, and unrelated to the merge-queue gating change.

Claimed: The enqueue mutation in din-pr-merge A3 is the call that queued PR No. 296.

Verified: gh pr view 296 --json state,mergedAt,mergeCommit returns state: MERGED, sha: 8f291c1140580ca67e7895548841bceb800c897e. gh api repos/InfiniteZeroFoundation/DevNet/actions/runs/41468689673 returns event: merge_group, head_branch: gh-readonly-queue/develop/pr-296-74a845c9e7328e28fca95f1cdc6ff595bbea17ae, head_sha: 8f291c11..., conclusion: success — confirming PR No. 296 was the first PR through the queue, landed at 8f291c11 via a merge_group CI run, exactly as the PR description states. The gh-readonly-queue/develop/... naming also matches the queue-branch format described in the new din-pr-merge A3 text.

Claimed: No overlap between this PR's files and what develop picked up since the merge base.

Verified: git diff 74a845c9..upstream/develop --name-only filtered against this PR's 6 files returns nothing — PRs No. 254, 261, 286, 296 that merged into develop since 74a845c9 touched dincli Python, Solidity tests, MECHANISM_DESIGN.md and the Full GI workflow — none of the MAINTAINING.md / .claude/skills/ files this PR changes. Clean merge matches both local merge-tree and GitHub.


No foundry/src/** changes — no second key needed. No mechanism changes. All claims hold. Looks good to merge.

@robertocarlous

Copy link
Copy Markdown
Collaborator

Files changed (6) — as of 079cacb9 (PR head)

Diffed against merge-base 74a845c9 (develop). develop has picked up PRs No. 254, 261, 286, 296 since the branch was cut — none of those touched Developer/MAINTAINING.md or any .claude/skills/ file, so there is zero diff overlap. GitHub agrees: mergeable: MERGEABLE, mergeStateStatus: BLOCKED (blocked only on missing approval). Confirmed with a local git merge-tree --write-tree dry run: clean (exit 0, no file list).

Developer/MAINTAINING.md

Field Value
Change Modified
Lines +9/-5
Diff (what exactly is in this PR) No. 2: removes "branch must be up to date with develop before merging", replaces with a description of the merge queue and what it tests. No. 4.2 evidence wording: "green against an up-to-date develop" → "green on the PR" (the queue re-runs them). No. 4.4 Path A: "CI is green, the branch is up to date, and the reviewer merges with a merge commit" → "CI is green, and the reviewer clicks Merge when ready to add the PR to the merge queue; the queue re-runs CI OK on the latest develop and lands it with a merge commit." Last paragraph: removes "branch has to be up to date" → "merge queue runs it again on the exact commit that lands."
Functionality — how & why How: The four hunks together remove every instance of the old "branch must be up to date" gate from the process document and replace them with the merge-queue equivalent. Why: PR No. 308 enabled the merge_group CI trigger and the develop ruleset was updated to require the merge queue and turn off the up-to-date requirement. MAINTAINING.md previously described a gate that no longer exists on the ruleset, making the process doc wrong for any reviewer following it.
Diff vs current develop HEAD None — MAINTAINING.md not touched on develop since the merge base
Recommended merge proposal Merged as-is
Actual merge proposal Soon
Pending proposal None
Local merge conflict No
GitHub merge conflict No

.claude/skills/din-pr-merge/SKILL.md

Field Value
Change Modified
Lines +43/-5
Diff (what exactly is in this PR) frontmatter description updated. Path A gate table: "CI OK, branch up to date" → "CI OK, then merge queue's own CI OK run". A2: mergeStateStatus CLEAN → not DIRTY (behind is fine; explicitly says don't run gh pr update-branch). A3: replaces gh pr merge --merge with a two-step GraphQL enqueuePullRequest mutation; adds merged/dropped/stalled handling; adds rollback instructions (turn queue rule off and up-to-date rule back on together).
Functionality — how & why How: The most substantive change. gh pr merge with a merge-commit strategy fails when auto-merge is disabled on the repo, so A3 now uses the GraphQL mutation that mirrors the Merge when ready button. The DIRTY-only gate in A2 stops reviewers from running gh pr update-branch (which would reset the approval and make them the last pusher). The dropped/stalled paths close the loop on what to do when the queue doesn't finish. Why: Without this, any maintainer following the old A3 would hit "Auto merge is not allowed for this repository" and either use --admin (wrong) or be stuck.
Diff vs current develop HEAD None — din-pr-merge SKILL.md not touched on develop since the merge base
Recommended merge proposal Merged as-is
Actual merge proposal Soon
Pending proposal None
Local merge conflict No
GitHub merge conflict No

.claude/skills/din-pr-review/SKILL.md

Field Value
Change Modified
Lines +12/-9
Diff (what exactly is in this PR) Section 2: "green against an up-to-date develop" → "green on the PR (merge queue re-runs them on the latest develop)". Removes "stale against develop" as a reason to reject CI as evidence. Adds: don't ask the author to update the branch if it's merely behind; only ask when there's a real conflict or the PR depends on something develop gained.
Functionality — how & why How: Aligns the reviewer's evidence standard with the new queue: a PR that is behind develop is still valid evidence because the queue will test it on top of the latest develop before it lands. Removes the old "stale against develop → CI not evidence" path, which would have been wrong under the queue. Why: A reviewer following the old wording would incorrectly reject green CI on a PR that is simply behind, or ask for a develop merge that would reset the approval.
Diff vs current develop HEAD None — din-pr-review SKILL.md not touched on develop since the merge base
Recommended merge proposal Merged as-is
Actual merge proposal Soon
Pending proposal None
Local merge conflict No
GitHub merge conflict No

.claude/skills/din-pr-review/templates/verification-comment.md

Field Value
Change Modified
Lines +2/-1
Diff (what exactly is in this PR) Template wording: "green against an up-to-date develop" → "green on the PR; the merge queue re-runs it on the latest develop".
Functionality — how & why How: One-line wording update to the verification comment template so the template text the reviewer copies matches the new evidence standard. Why: Consistency — the template would otherwise describe a standard that contradicts MAINTAINING.md No. 4.2 and the din-pr-review skill.
Diff vs current develop HEAD None — not touched on develop since the merge base
Recommended merge proposal Merged as-is
Actual merge proposal Soon
Pending proposal None
Local merge conflict No
GitHub merge conflict No

.claude/skills/din-merge-build-test/SKILL.md

Field Value
Change Modified
Lines +1/-1
Diff (what exactly is in this PR) "As-is" row in the build evidence table: "ruleset requires the branch to be up to date, so that run tests exactly what lands" → "merge queue re-runs it on the exact commit that lands".
Functionality — how & why How: One-line wording update removing the up-to-date gate reference. Why: The ruleset no longer requires the branch to be up to date; the merge queue provides the equivalent guarantee. The cell previously cited a no-longer-enforced requirement.
Diff vs current develop HEAD None — not touched on develop since the merge base
Recommended merge proposal Merged as-is
Actual merge proposal Soon
Pending proposal None
Local merge conflict No
GitHub merge conflict No

.claude/skills/din-push-develop/SKILL.md

Field Value
Change Modified
Lines +1/-1
Diff (what exactly is in this PR) Opening sentence: "approval, CI OK and an up-to-date branch" → "approval, CI OK and a green merge-queue run".
Functionality — how & why How: One-line description update to the path A gate. Why: Same as above — aligns the description of what the ruleset requires with what it actually enforces now.
Diff vs current develop HEAD None — not touched on develop since the merge base
Recommended merge proposal Merged as-is
Actual merge proposal Soon
Pending proposal None
Local merge conflict No
GitHub merge conflict No

Verification

Deep verification detail in the separate verification comment. Summary: all 4 CI checks pass at run 41475194544. The enqueuePullRequest mutation in A3 is confirmed live — it was the call that queued PR No. 296, which merged as 8f291c11 via merge_group run 41468689673 (conclusion: success). Docs and skills only; no code or workflow changes.

Local vs. GitHub agree: git merge-tree --write-tree exit 0 (no file list) matches GitHub mergeable: MERGEABLE.

@robertocarlous robertocarlous left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified at 079cacb: docs/skills only, all 4 CI checks green, clean merge, enqueue mutation confirmed live via PR No. 296 merge_group run 41468689673.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants