docs(649): narrow the base-ref headline to what the checkout actually binds #683

Merged
timothy merged 1 commits from docs/649-narrow-base-ref-headline into main 2026-07-27 18:33:24 +02:00
Owner

Docs only, no behaviour change. Refs #649, #672.

ci.shared-pr-file-enumeration's bold sentence claimed the base-ref checkout means the workflow "cannot be rewritten by that same PR to weaken its own judgment". That is true of the scripts the job executes and false of the workflow itself — Gitea resolves a pull_request workflow definition from the PR's own head, so a PR editing review-verdict.yml runs its rewritten copy, which can delete the checkout outright or simply post review-verdict/h10=success and stop. Branch protection requires the context, not an author, and carries required_approvals: 0 (#672).

Why a caveat further down wasn't enough

The scoping already existed under "What is deliberately NOT claimed". That does not fix this sentence: it is bold, it is the paragraph a reader resolving the record from the catalog lands on, and someone who stops there leaves with the opposite of the truth. A caveat only works if it is reached.

So the headline now states what the checkout actually binds — the scripts, from the already-reviewed base — and a following paragraph gives the head-resolution hole directly, quoting the superseded claim so a reader who remembers it can see it was retracted rather than wonder whether two records disagree. The later paragraph drops its now-duplicated opener and points at the new one.

Why it's worth a PR of its own

Same failure class as the rest of #649 — a claim stronger than the code — reached through prose rather than through a test. This record is the artifact the catalog routes people to for "how does the PR-file enumeration work", so its headline is load-bearing in a way ordinary prose isn't.

Verification

  • decisions_validate.py OK — run after committing, since the Decisions-Edit: yes trailer check reads committed history and cannot pass on a working tree.
  • Catalog regeneration is a no-op (frontmatter untouched).
  • scripts/tests 338 green.

Credit where due: the head-resolution hole and the correction to this record's claim were found and filed by the parallel session as #672; this PR fixes the sentence that misled.

Docs only, no behaviour change. Refs #649, #672. `ci.shared-pr-file-enumeration`'s bold sentence claimed the base-ref checkout means the workflow "cannot be rewritten by that same PR to weaken its own judgment". That is true of the **scripts** the job executes and **false of the workflow itself** — Gitea resolves a `pull_request` workflow definition from the PR's own head, so a PR editing `review-verdict.yml` runs its rewritten copy, which can delete the checkout outright or simply post `review-verdict/h10=success` and stop. Branch protection requires the *context*, not an author, and carries `required_approvals: 0` (#672). ## Why a caveat further down wasn't enough The scoping already existed under "What is deliberately NOT claimed". That does not fix this sentence: it is **bold**, it is the paragraph a reader resolving the record from the catalog lands on, and someone who stops there leaves with the opposite of the truth. A caveat only works if it is reached. So the headline now states what the checkout actually binds — the scripts, from the already-reviewed base — and a following paragraph gives the head-resolution hole directly, **quoting the superseded claim** so a reader who remembers it can see it was retracted rather than wonder whether two records disagree. The later paragraph drops its now-duplicated opener and points at the new one. ## Why it's worth a PR of its own Same failure class as the rest of #649 — a claim stronger than the code — reached through prose rather than through a test. This record is the artifact the catalog routes people to for "how does the PR-file enumeration work", so its headline is load-bearing in a way ordinary prose isn't. ## Verification - `decisions_validate.py` OK — run **after** committing, since the `Decisions-Edit: yes` trailer check reads committed history and cannot pass on a working tree. - Catalog regeneration is a no-op (frontmatter untouched). - `scripts/tests` 338 green. Credit where due: the head-resolution hole and the correction to this record's claim were found and filed by the parallel session as #672; this PR fixes the sentence that misled.
timothy added 1 commit 2026-07-27 18:32:02 +02:00
docs(649): narrow the base-ref headline to what the checkout actually binds
PR Gates / CI image pin matches docker/ci (pull_request) Successful in 12s
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 16s
PR Gates / Docs update reminder (pull_request) Successful in 16s
PR Gates / decisions lifecycle (pull_request) Successful in 24s
review-verdict/h10 Exempt: docs-only change (no code, no protected path)
Build ErsatzTV Image / Functional E2E (curl + UI contracts) (pull_request) Successful in 29s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 30s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (pull_request) Successful in 14s
Review verdict / Set review-verdict status (pull_request) Successful in 17s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (pull_request) Successful in 13s
PR Gates / Script tests (pytest) (pull_request) Successful in 52s
c794a48462
The record's bold sentence said the base-ref checkout means the workflow "cannot be
rewritten by that same PR to weaken its own judgment". That is true of the SCRIPTS the job
executes and false of the workflow itself: Gitea resolves a `pull_request` workflow
definition from the PR's own head, so a PR editing `review-verdict.yml` runs its rewritten
copy — which can delete the checkout outright, or just post `review-verdict/h10=success`
and stop. Branch protection requires the context, not an author, and carries
`required_approvals: 0` (#672).

The scoping already existed further down, under "What is deliberately NOT claimed". That
is not good enough for this particular sentence: it is bold, it is the paragraph a reader
resolving this record from the catalog lands on, and someone who stops there leaves with
the opposite of the truth. A caveat only works if it is reached.

So the headline now says what the checkout binds (the scripts, from the already-reviewed
base) and a following paragraph states the head-resolution hole directly, with the
superseded claim quoted so a reader who remembers it can see it was retracted rather than
wonder whether two records disagree. The later paragraph loses its duplicated opener and
points at it instead.

Docs only; no behaviour change. Same failure class the rest of #649 kept turning up — a
claim stronger than the code — reached this time through prose rather than a test.

Refs #649, #672

Decisions-Edit: yes
timothy merged commit ac0f65c743 into main 2026-07-27 18:33:24 +02:00
timothy deleted branch docs/649-narrow-base-ref-headline 2026-07-27 18:33:24 +02:00
Sign in to join this conversation.