diff --git a/AGENTS.md b/AGENTS.md index 22f11869af..1430f5d56a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -461,6 +461,12 @@ Even inside your own worktree, operate defensively: The issue number is what makes in-flight work *discoverable* — `git ls-remote --heads origin | grep issue-` is a one-command pre-check, and the Duplicate Fix Guard workflow warns on fix PRs whose branch names no declared issue. + + ⛔ **Off `main` is literal — a stacked series, each PR branched off the one below, is NOT a supported form.** No + tooling represents it: squash landing destroys the ancestry link, so every descendant rewinds behind what landed and + 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. A multi-card change uses a **trunk branch**: correct the trunk's disposition + to `registered` before it merges, and pay the rebase laps. ⛔ No gate or merge-policy change is made for it. 3. **Never `git push --force` / `--force-with-lease`, and never push `main`.** A force-push can clobber a parallel agent's work; `main` is shared — land all via PR. 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. schema is `.strict()`. The changeset is one of fourteen surfaces a retirement touches — follow the `spec-property-retirement` skill (`.claude/skills/`) rather than reconstructing the kit, and note the two routes imply **opposite** liveness-ledger dispositions. - **A breaking changeset must also state its ADR-0087 disposition, in writing.** Add exactly one marker to the - changeset body — `pnpm check:adr-0087-registration` enforces it, and the CI step is *Require an ADR-0087 - disposition on a declared-breaking changeset*: - ``` - - - - - ``` - The gate prints the argument when it fails — that output is the authority. + **A breaking changeset must also state its ADR-0087 disposition, in writing** — exactly one marker in the + changeset body, enforced by `pnpm check:adr-0087-registration` (CI step *Require an ADR-0087 disposition on a + declared-breaking changeset*). ⛔ The categories are NOT copied here — the gate prints the full set when it fails. 4. **A removal that breaks the pinned sibling checkout ships together with the sibling fix and the pin bump — or it does not ship.** The `Console Pin Gate` job builds objectui at the pinned `.objectui-sha` against **current** `main`, so a removal or rename the pinned sibling still imports turns `main` red for every PR in the repo the moment it