Skip to content

Commit b708969

Browse files
lilyshen0722claude
andcommitted
docs(ax): separate the paths axis from the base axis with a controlled middle point
@sprint-review supplied the measurement that isolates them: #1122 is docs-only on `main`, holding content constant against the stacked #1132 and varying only the base. Measured live 2026-08-25: #1170 backend/ base main 11 #1122 docs/ base main 10 #1132 docs/ base stacked 4 #1170 → #1122 moves exactly one check, `E2E Tests` — the paths axis. #1122 → #1132 moves six: the four CodeQL-family jobs plus the two base-scoped merge guards, which are correctly filtered rather than lost. So what stacking costs is the CodeQL family, entire and nothing else. That is sharper than "seven missing" and, unlike it, falsifiable — and it is the form the practical rule below already assumes. Replaces the two-point version from 6abe8e6, which stated the right conclusion from a pair that could not distinguish the two axes. Docs-only. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 6abe8e6 commit b708969

1 file changed

Lines changed: 29 additions & 11 deletions

File tree

‎docs/development/agent-experience-audit.md‎

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2535,17 +2535,35 @@ scanned. That is a second reason the retarget is load-bearing, alongside the
25352535
auto-close hazard.
25362536

25372537
**Not every absence is a stacking absence, and E2E is the one that fools you.**
2538-
Measured on a second pair (#1170 at 11 checks, the stacked #1132 at 4), seven
2539-
are absent rather than six, and the extra one is `E2E Tests`. It is tempting to
2540-
add it to the stacking gap; it does not belong there. `playwright.yml` carries
2541-
no `branches` filter on `pull_request` — the line above it says so outright,
2542-
*"No branches filter: stacked PRs must get E2E too"* — so E2E is absent from
2543-
#1132 because that PR touches only `docs/`, which the path filter excludes.
2544-
@sprint-review made exactly this attribution and retracted it, which is the
2545-
evidence that it is worth writing down: the stacking gap is **four**, and any
2546-
other absence has to be traced to a filter before it is counted. Two absences
2547-
with the same appearance can have different causes, and the count is only
2548-
portable if each one is attributed.
2538+
Two axes move the denominator independently — **paths** and **base** — and
2539+
folding one into the other is how a count stops being portable. Three PRs
2540+
measured 2026-08-25 separate them, because the middle one holds content
2541+
constant and varies only the base:
2542+
2543+
| PR | content | base | checks |
2544+
|---|---|---|---|
2545+
| #1170 | `backend/` | `main` | 11 |
2546+
| #1122 | `docs/` | `main` | 10 |
2547+
| #1132 | `docs/` | stacked | 4 |
2548+
2549+
`#1170 → #1122` isolates the **paths** axis and moves exactly one check:
2550+
`E2E Tests`. `playwright.yml` carries no `branches` filter on `pull_request` —
2551+
the line above it says so outright, *"No branches filter: stacked PRs must get
2552+
E2E too"* — so E2E is absent from a docs-only PR whether or not it is stacked.
2553+
2554+
`#1122 → #1132` isolates the **base** axis and moves six: the four CodeQL-family
2555+
jobs plus the two base-scoped merge guards (`Source changed ⇒ version bumped`,
2556+
`Stale-base merge guard`). The guards are correctly filtered rather than lost,
2557+
so **what stacking actually costs you is the CodeQL family, entire and nothing
2558+
else** — which is a sharper claim than a raw "seven missing", and a falsifiable
2559+
one.
2560+
2561+
@sprint-review first decomposed #1132's seven as "4 analysis, 1 E2E, 2 by-design
2562+
guards" and put the E2E in the stacking gap, then retracted it and supplied the
2563+
#1122 measurement that settles it. Worth recording because the misattribution
2564+
was made by the person who found the CodeQL scoping in the first place: two
2565+
absences render identically in the checks list, so an absence has to be traced
2566+
to its filter before it is counted.
25492567

25502568
**The scoping of those three cannot be checked from inside a checkout.** The
25512569
entry above notes there is no `codeql.yml`; the sharper form is that the

0 commit comments

Comments
 (0)