Repository navigation
Commit 0fe38a9
docs(devx): state check-bash32-floor's BOUNDARY — the axis is the bash interpreter, not the userland binaries (#18464)
Part of #17141
Comment-only change to one file: `scripts/check-bash32-floor.mjs` gains
a header section stating the **boundary** it already keeps. No rule
added, no sibling gate built, no per-script pin removed.
## What landed
One new header section, inserted between *"What this gate is NOT"* and
*"The exemption rule"*. Verbatim (41 added lines, nothing removed):
```
* ## The BOUNDARY: the axis is the bash INTERPRETER, not the userland binaries
*
* A gate that states its class but not its boundary can be widened by a
* well-meaning row, so the boundary is written here rather than left to be
* re-derived. This gate's axis is the VERSION OF BASH THAT RUNS A SCRIPT, and
* the row schema says so by construction, not by convention: every
* `CONSTRUCTS` row carries a `since:` that is a bash version, and every `kind`
* is a bash category — a builtin, a piece of syntax, a variable. There is no
* value for "an external binary", and a row about one has nowhere to put it.
*
* So a difference between the GNU and BSD USERLAND BINARIES a script calls —
* `mktemp` and where it will accept the `XXXXXX`, `sed -i` and whether it
* demands a suffix argument, `readlink -f`, `date` and its flags — is a
* DIFFERENT AXIS, and ⛔ it is not a row here. Such a row could not be written
* honestly: `mktemp` has no bash version, so its `since:` would have to be a
* lie or a special case, and the verdict line this gate prints ends
* "constructs checked, floor bash 3.2" — which becomes false advertising the
* moment a coreutils-vs-BSD rule joins the table it counts. Widening here
* would silently convert a gate that means "this script needs bash 4" into one
* that means "this script behaves differently on a Mac": a strictly larger
* claim, made by adding a row.
*
* ⇒ That class wants a SIBLING gate, not a row here — and ⛔ not yet. The
* measured population of real userland defects in this repo is ONE: an
* `mktemp` template whose `XXXXXX` was not last. It is already fixed and
* guarded by a per-script pin, which ⛔ stays — nothing here replaces it. A
* shared gate for a population of one is not warranted, and the evidence that
* would change that is a SECOND real instance; the place to land it is the
* boundary card this paragraph came from (#17141).
*
* 1 parent 8fe5cb8 commit 0fe38a9
1 file changed
Lines changed: 41 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
43 | 84 | | |
44 | 85 | | |
45 | 86 | | |
| |||
0 commit comments