- BUILD.md: an R5 section covering N1 to N3, the fixes, the tests, the RED and GREEN counts, the 57-mutant table, the 13-shape live probe, the false BUSY and miss checks, and the known limits after R5. N3 corrects the R4 bind-mount note: a same-filesystem bind mount keeps st_dev, so a detector needs mount metadata such as /proc/self/mountinfo. No code changed for N3. Earlier sections are untouched. - docs/TOOLS.md: the busy check's flat form, span rule, exit 2 on text it can't classify, the literal listing, and 153 cases. - BUILD-LOG.md and docs/SESSIONS.md: one appended entry each.
This commit is contained in:
1 parent
afc176de02
commit
794f4c4a24
4 files changed
+419
-6
No files matched your search
@@ -1882,3 +1882,4 @@ are never rewritten or removed; corrections are new entries.
|
||||
|
||||
2026-11-02 | Sage implementation sub-agent (Claude Opus 5.5, child of T3 c5c1e8ba) | row 211 (#1709/#426) R3 from the GPT review, on t3/row211-push-guard-r3-fix over 09a847eda (picks 5734c1a80, c8f2cb70c) | F1-F5 and the object-name length check fixed with tests; suite RED 67/18, GREEN 85/0; 21 of 21 mutants killed; one local commit, not pushed
|
||||
2026-11-02 | Sage implementation sub-agent (Claude Opus 5.5, child of T3 c5c1e8ba) | row 211 (#1709/#426) R4 from the GPT review of R3, on t3/row211-push-guard-r4-fix over 09a847eda (picks bcd74ec33, 3a121885c, 7d03f212d) | R1-R3, runner exit status and installer mktemp fixed with tests; suite RED 90/14, GREEN 105/0; 30 of 30 mutants killed, runner exit 0; one local commit, not pushed
|
||||
2026-11-02 | Sage implementation sub-agent (Claude Opus 5.5, child of T3 c5c1e8ba) | row 211 (#1709/#426) R5 from the GPT review of R4, on t3/row211-push-guard-r5-fix over 09a847eda (from fd1aa8cc8) | N1-N3 fixed (literal ls listing under LC_ALL=C, flat form and awk word walk for sourced tests, bind-mount note corrected) with tests; suite RED 119/34, GREEN 153/0; 57 of 57 mutants killed, runner exit 0; 13 of 13 live shapes BUSY; two local commits, not pushed
|
||||
+15
-6
@@ -166,7 +166,7 @@ resolved through the CLI.
|
||||
| `scripts/test-conductor.sh` | Auto-apply selftests (sandboxed) | 17 cases |
|
||||
| `scripts/test-auth.sh` | Auth checkpoint selftests (no Docker) | 13 cases |
|
||||
| `scripts/test-land-work.sh` | Land-work selftests (sandboxed, fake Docker) | 84 cases |
|
||||
| `scripts/test-git-guard.sh` | Push guard, its installer and `slot-busy.sh` (scratch bare remote, fake `/proc`) | 105 cases |
|
||||
| `scripts/test-git-guard.sh` | Push guard, its installer and `slot-busy.sh` (scratch bare remote, fake `/proc`) | 153 cases |
|
||||
| `scripts/install-git-hooks.sh [--repo DIR] [--force-install]` | Install the push guard as `pre-push` in the common `.git/hooks` | Refuses a set `core.hooksPath`, a symlinked hooks directory or a different installed hook; exit 0 ok · 1 failed · 2 refused · 4 usage |
|
||||
| `scripts/slot-busy.sh` | Busy check: one `BUSY` line per gate or test process, or `CLEAR` | Exit 0 CLEAR · 1 BUSY · 2 error, including a process or an ancestor it can't read that isn't confirmed gone; chain on the exit code |
|
||||
| `scripts/gitea-api.sh <METHOD> <path> [body]` | Gitea API helper; reads the JSON credential file or a raw per-seat token file | Token never on argv/stdout |
|
||||
@@ -199,11 +199,20 @@ Never `bash scripts/slot-busy.sh | tail -1 && gate`: `tail` exits 0, so the
|
||||
gate runs while BUSY. It matches `node ... --test`, a `*gate*.sh`, `mutant`, a
|
||||
`test-*.sh` and `docker compose` command lines, skips itself, its ancestors
|
||||
and agent shell-snapshot wrappers (a shell whose `-c` text starts by sourcing
|
||||
`.../shell-snapshots/snapshot-*.sh`). A wrapper whose text also sources
|
||||
(`source` or `.`) a gate, test or mutant script is BUSY, because that script
|
||||
runs in the wrapper's own shell. It reads only `/proc/<pid>/cmdline`, the cwd
|
||||
link, its own and its ancestors' `status` and, after a failed read, the proc
|
||||
root's listing. A process or an ancestor it can't read makes it exit 2, never
|
||||
`.../shell-snapshots/snapshot-*.sh`). Each rule runs on the command line as it
|
||||
is and on a flat form with the quotes and backslashes removed and every run of
|
||||
blanks, newlines and the operators `; & | ( ) { } < >` and backtick turned into
|
||||
one space, so quoting and spacing don't hide a match. A wrapper is BUSY when
|
||||
any word after a `source` or `.`, up to the next `;`, `&`, `|` or newline
|
||||
outside parentheses and backticks, names a gate, test or mutant script,
|
||||
because that script runs in the wrapper's own shell. Quoted text, an `eval`
|
||||
string for one, is read the same way. That rule can call a wrapper BUSY that
|
||||
runs no test; row 211's BUILD.md (R5) lists the cases. A command line it can't
|
||||
classify, quoting more than 32 levels deep for one, makes it exit 2. It reads
|
||||
only `/proc/<pid>/cmdline`, the cwd link, its own and its ancestors' `status`
|
||||
and, after a failed read, the proc root's listing, which it takes from GNU
|
||||
`ls --quoting-style=literal` under `LC_ALL=C` so the caller's environment
|
||||
can't change it. A process or an ancestor it can't read makes it exit 2, never
|
||||
CLEAR, unless a listing of the proc root succeeds and no longer has that pid.
|
||||
|
||||
## Seat launch with registration (`scripts/mosaic`)
|
||||
|
||||
Reference in new issue
Block a user