Skip to content

Commit 8b37a09

Browse files
hotlongclaude
andauthored
docs(agents): stacked PR series are not a supported working form (#16743)
* docs(agents): stacked PR series are not a supported working form Record the maintainer's ruling (director seat, decision batch #66): a stacked series -- each PR branched off the one below -- is not a supported working form in this repository, and no gate rule or merge-policy change is made for it. A multi-card change uses a trunk branch and pays the two recorded workarounds. The paragraph is self-contained rather than a pointer: AGENTS.md is in check:pm-skill-id-lint's scan set (pattern /#[0-9]{3,}/), so the card number cannot be cited in the file. The three tooling blind spots are stated in one clause each so the rule is actionable without dereferencing history. Fold payment for the 1068/1068 line ratchet: the ADR-0087 marker block in the Post-Task Checklist listed 4 of the gate's 7 disposition categories -- a drifted copy of output the same paragraph already calls "the authority". Replaced by a pointer to the gate's own FIXIT, which prints the full set. Net 0 lines. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P58euzUXCVJNwmhuPC9DXY * docs(agents): drop the heavy-CI clause from the stacked-series paragraph Seat review: the ruling grades that cost as "a defect independent of stacking" and splits it out to its own devx card, so it is a defect being fixed -- not a price of an unsupported form. Stating it in AGENTS.md as an inherent property of stacking contradicts the ruling, and the clause goes false the moment that card lands, rotting in place like any other restated fact. The paragraph now carries only the two structural costs the ruling did assign here: squash landing destroys the ancestry link, so every descendant pays a rebuild lap per landing; and a breaking changeset's ADR-0087 disposition is base-relative, so a stacked card's two bases demand contradictory markers. No pointer to the split-out card: AGENTS.md is in check:pm-skill-id-lint's scan set, and any wording like "CI does not run on these yet" would itself go false when that card lands. AGENTS.md 1068 -> 1067; the ratchet is a cap, so a net decrease is legal and nothing was restored to pad it back. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P58euzUXCVJNwmhuPC9DXY * docs(agents): keep the stacked-series paragraph inside the 120-byte budget check:pm-skill-ratchet enforces a per-LINE byte budget alongside the per-file line ceiling, and the reflow left L469 at 121B. Rewrapped to five lines, each under 120B, with the closing boundary shortened to "No gate or merge-policy change is made for it" to fit without an orphan line. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P58euzUXCVJNwmhuPC9DXY --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent cf33adb commit 8b37a09

1 file changed

Lines changed: 9 additions & 10 deletions

File tree

AGENTS.md

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,12 @@ Even inside your own worktree, operate defensively:
461461
The issue number is what makes in-flight work *discoverable* — `git ls-remote --heads
462462
origin | grep issue-<n>` is a one-command pre-check, and the Duplicate Fix Guard
463463
workflow warns on fix PRs whose branch names no declared issue.
464+
465+
**Off `main` is literal — a stacked series, each PR branched off the one below, is NOT a supported form.** No
466+
tooling represents it: squash landing destroys the ancestry link, so every descendant rewinds behind what landed and
467+
pays a rebuild lap per landing; and a breaking changeset's ADR-0087 disposition is base-relative, so a stacked card's
468+
two bases demand contradictory markers. A multi-card change uses a **trunk branch**: correct the trunk's disposition
469+
to `registered` before it merges, and pay the rebase laps. ⛔ No gate or merge-policy change is made for it.
464470
3. **Never `git push --force` / `--force-with-lease`, and never push `main`.** A
465471
force-push can clobber a parallel agent's work; `main` is shared — land all via PR.
466472
4. **Verify the current branch before every commit/push**
@@ -1037,16 +1043,9 @@ registry? Add it to `OPEN_CAPABILITY_REGISTRIES` in the same PR that fixes it.
10371043
schema is `.strict()`. The changeset is one of fourteen surfaces a retirement touches — follow the
10381044
`spec-property-retirement` skill (`.claude/skills/`) rather than reconstructing the kit, and note the two routes
10391045
imply **opposite** liveness-ledger dispositions.
1040-
**A breaking changeset must also state its ADR-0087 disposition, in writing.** Add exactly one marker to the
1041-
changeset body — `pnpm check:adr-0087-registration` enforces it, and the CI step is *Require an ADR-0087
1042-
disposition on a declared-breaking changeset*:
1043-
```
1044-
<!-- adr-0087: registered SOME-MIGRATION-ID -->
1045-
<!-- adr-0087: not-required (unpublished) why -->
1046-
<!-- adr-0087: not-required (already-registered SOME-MIGRATION-ID) why -->
1047-
<!-- adr-0087: not-required (no-migration-prescription) why -->
1048-
```
1049-
The gate prints the argument when it fails — that output is the authority.
1046+
**A breaking changeset must also state its ADR-0087 disposition, in writing** — exactly one marker in the
1047+
changeset body, enforced by `pnpm check:adr-0087-registration` (CI step *Require an ADR-0087 disposition on a
1048+
declared-breaking changeset*). ⛔ The categories are NOT copied here — the gate prints the full set when it fails.
10501049
4. **A removal that breaks the pinned sibling checkout ships together with the sibling fix and the pin bump — or it
10511050
does not ship.** The `Console Pin Gate` job builds objectui at the pinned `.objectui-sha` against **current** `main`,
10521051
so a removal or rename the pinned sibling still imports turns `main` red for every PR in the repo the moment it

0 commit comments

Comments
 (0)