docs(runbooks): retire the 2026-07-22 PR-landing runbook - #473
Merged
Conversation
Every PR the runbook sequenced — the 20-PR chain plus the #376 and #385/#386/#387 follow-ups — is closed with mergedAt=null. The work reached main through the integration branch and the PRs were closed as redundant, and the integration branch it referenced, integration-dev/v1.0.0-2026-07-22, has been deleted. That kills the phase order, the per-PR loop, the pre-flight sweep, the #355 close decision, the A-I conflict resolutions and the definition of done. Replace the body with a tombstone recording what happened and where the still-true content went, and lift the two repo-wide CI traps into docs/troubleshooting.md (the two jest traps were already there). Conflict J is obsolete for a separate reason: those Podfile.lock checksums encode the checkout path and are now dropped by scripts/reset-podfile-lock-path-noise.sh. Its one post-merge action — make i18n a required status check — is done, along with Unit tests and Integration tests, which had never been required either. [skip-ci]
RonenMars
added a commit
that referenced
this pull request
Aug 1, 2026
) Follow-up to #473, which retired `docs/runbooks/2026-07-22-land-open-prs.md`. These are the stale artefacts that survived it. > **Note:** an earlier version of this description reproduced the literal bracketed skip tag while asserting the suite would run for real. That sentence tripped the gate and skipped this PR's own suite. The description now avoids the literal tag; see item 2. ## 1. `KICKOFF-landing-runbook.md` — deleted It was the prompt that commissioned the runbook #473 retired. Everything it references is gone: the worktree it tells you to run from (`integration-dev/v1.0.0-2026-07-22`, deleted), the 20-PR chain, and the `#355` close decision. Nothing links to it — verified with `git grep` across `*.md`, `*.yml`, `*.json`. Its analysis survives in [`docs/integration-merge-report-2026-07-22.md`](docs/integration-merge-report-2026-07-22.md) and in the retired runbook's tombstone. ## 2. `.github/workflows/test.yml` — gate comment corrected (two wrong claims) **Which contexts are required.** The comment named four (`Type check`, `Unit tests`, `Integration tests`, `Lint`). Two of those were never required, and `i18n` has been required since 2026-08-01, so the true set is five: `Lint`, `Type check`, `Unit tests`, `Integration tests`, `i18n`. It also said "branch protection". This repo uses a **ruleset** (`main protection`), which is why `GET /repos/:owner/:repo/branches/main/protection` answers `"Branch not protected"` — a 404 already misread once as "protection is off". The comment now points at `/rulesets`. **What bracketing actually protects against.** The comment claimed the tag is bracketed "so prose that merely mentions it does not accidentally trip the skip". That is false, and this PR proved it: the haystack is the commit message plus the PR title and body, matched with a literal `grep -F`, so writing the bracketed tag in a description skips that PR's suite. Bracketing only stops an *unbracketed* mention. The comment now says so, and the hazard is recorded in `docs/troubleshooting.md` → "CI signals". Comment-only in the workflow; no behaviour change. ## 3. `CLAUDE.md` — base-branch rule points at `main` It instructed opening PRs against `integration-merge-354-355-376`. That branch **does not exist** on the remote (only an `integration-merge-354-355-376-v2`), and all three open PRs target `main`. ## Self-destruct notes The `CLAUDE.md` note and the superseded runbook both exist only to cover the in-flight `land/integration-prep` landing, so each now carries an explicit instruction to delete it once [`LANDING-integration-to-main.md`](LANDING-integration-to-main.md) is done — including which row in `docs/runbooks/README.md` to remove with it. Same failure mode #473 documented: a doc tied to a moving branch set outlives its subject unless it says when to die. ## Verification - `test.yml` parses; all nine jobs intact (`gate, setup, typecheck, unit, integration, lint, i18n, native-deps, e2e-maestro`). - Every relative link in the changed files resolves. - No remaining references to the deleted file. - The suite below is a genuine run — check the durations, not just the colour.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The runbook described itself as a "live procedure — edit it as PRs land", but the chain it sequenced is gone.
Verified 2026-08-01 — every PR it orchestrated is
CLOSEDwithmergedAt=null, i.e. closed, not merged:The work reached
mainthrough the integration branch instead, and the PRs were closed as redundant.The integration branch the runbook treated as proof the set could coexist,
integration-dev/v1.0.0-2026-07-22, has been deleted.That invalidates the phase order, the per-PR loop, the pre-flight sweep, the decision to close
#355, the conflict A–I resolutions, and the definition of done.The only PR row still accurate is
#291, which is still open and still excluded by standing request.What changed
The body becomes a tombstone: what the runbook was for, what actually happened, and a table pointing at where each still-true trap now lives.
The file is kept rather than deleted so inbound links resolve and nobody rebuilds the same plan from the merge report.
Two of its four traps were already in
docs/troubleshooting.md(the.claude/worktree gotcha and serialSessionScreenverification). The other two are lifted there now under a new "CI signals" section, because both are repo-wide facts rather than properties of those branches:[skip-ci]head commit reports every required context green in seconds having run nothingmain) still gets full CI here, sincetest.yml'spull_requesttrigger has nobranches:filterConflict J is obsolete for a separate reason: those
ios/Podfile.lockchecksums encode the checkout's absolute path, so resolving it was never meaningful. #469 addedscripts/reset-podfile-lock-path-noise.sh, which drops that drift.Two live findings, one already fixed
The runbook's
[skip-ci]section claimed the required contexts wereType check,Unit tests,Integration tests,Lint. The ruleset actually required onlyLintandType check— unit and integration tests could not block a merge at all, which makes the[skip-ci]trap worse than documented, not better.Its one outstanding post-merge action (add
i18nto required checks, never done since #368) is now complete:Unit tests,Integration testsandi18nwere added to themainruleset on 2026-08-01. Confirmed safe first — all three reportpasson a realchore/bump-**version-bump PR (#472), so the deploy pipeline's bumps are not deadlocked.Note:
.github/workflows/test.yml:25carries the same wrong claim about which contexts are required. Left alone here to keep this docs-only.