Skip to content

Commit c271570

Browse files
committed
docs: unify B3 around the no-silent-pin-moves invariant
1 parent b984299 commit c271570

1 file changed

Lines changed: 11 additions & 10 deletions

File tree

docs/build-requirements.md

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,16 @@ the pinned revision or fails saying why. Nothing substitutes a different
6363
revision silently — no tip fallback, no cache shadowing. Any checkout rebuilds
6464
the dependency set its CI run used.
6565

66-
**B3 — The pin moves only deliberately.** The sync job is the normal mover.
67-
A human bump is an explicit, reviewed act (CODEOWNERS on the pin file, or an
68-
equivalent guard). Trying a different revision must not require editing the
69-
tracked file — a developer testing against another moxygen locally should have
70-
an environment/command-line path that leaves no change to accidentally commit,
71-
so their PR diff stays exactly their change. (Deliberately pinning a PR to an
72-
unmerged moxygen is different: there the file edit is the point, and review
73-
covers it.) And an override that is ignored must say so rather than being
74-
silently swallowed.
66+
**B3 — The pin moves only deliberately, and never silently.** Three channels
67+
move or bypass it, each visible in its own way: the sync job (routine, via
68+
reviewed PR); a hand edit of the pin file, for PRs deliberately coupled to an
69+
unmerged moxygen (CODEOWNERS routes it to review); and a build-directory
70+
override for local experiments (`-DMOQX_MOXYGEN_REV_OVERRIDE` — cached on
71+
disk in the build directory, never in the source tree, warning on every
72+
configure, so nothing can leak into a PR). The invariant across all three: no
73+
build runs off-pin quietly. The natural-but-wrong knob (`-DMOXYGEN_REV`,
74+
which the pin file deliberately wins over) must say it did nothing; the right
75+
knobs announce themselves.
7576

7677
**B4 — Coupled changes stay one-step.** A moqx PR pinned at an unmerged
7778
moxygen sha builds and tests in CI unaided. The follow-up (rebase after the
@@ -103,7 +104,7 @@ update or doesn't happen.
103104
|---|---|---|
104105
| B1 | **verified** | fallback exercised in a trial worktree: stale pin → 3s explanatory error → announced fallback → source build at the pinned rev. Fallback off switch present. Docker uses the same ladder. The release path stays deliberately strict — see gaps. |
105106
| B2 | **verified** | Stale pin cannot resolve to anything else; `-DMOXYGEN_REV=` override is ignored (file wins). Ignored silently — see B3. |
106-
| B3 | open | No guard on the pin file, no sanctioned experiment path, swallowed override warns nothing. |
107+
| B3 | open | no guard on the pin file, no sanctioned experiment path, and an ignored `-DMOXYGEN_REV` warns nothing. |
107108
| B4 | **verified** | Same ladder: unmerged sha → no tag → source build at that sha, automatic in CI. |
108109
| B5 | open | Repo setting, not the PR: `strict_up_to_date` off, no merge queue. |
109110
| B6 | open | `print-pin.cmake` reports top-level pins only. |

0 commit comments

Comments
 (0)