- 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.
From the GPT review of R3 (row211-r3-gpt.md, R1 to R3 and Check 5):
- slot-busy.sh: every ancestor status read must give a numeric PPid. A
failed ancestor or cmdline read counts as gone only when a listing of
the proc root succeeds and lacks the pid; anything else is exit 2 with
no CLEAR. The [ -d ] and [ -e ] tests, which can't tell a denied lookup
from a missing one, are gone.
- slot-busy.sh: a shell-snapshot wrapper whose text sources (source or .)
a gate, test or mutant script is BUSY; one that only runs children is
still skipped.
- install-git-hooks.sh: the hook is staged in a mktemp file in the hooks
directory, not a pid-named path.
- mutants.sh: exit 1 on a survivor, NO MATCH, COPY FAILED or a timeout;
nine new mutants, 30 of 30 killed.
test-git-guard.sh: RED 90/14, GREEN 105/0. BUILD.md R4 has the details,
including a correction to the R3 bind-mount note.
scripts/git-hooks/pre-push refuses a delete, a remote tip missing locally and
any update whose remote tip isn't an ancestor of the local tip; a new branch
and a fast-forward pass. scripts/install-git-hooks.sh puts it in the common
.git/hooks, refuses a set core.hooksPath or a different hook without
--force-install, and runs a canary through git hook run. scripts/slot-busy.sh
exits 0 CLEAR, 1 BUSY, 2 error. scripts/test-git-guard.sh (61 cases) and the
mutant runner in agents/darkwing/work/queue-211; TOOLS.md gets the usage.
Not run yet: written during Gander's slot (sage-2801).
(cherry picked from commit 20e885dc35)
Source-candidate: poe d9a564e6d20f5f0fd75ce45b12cbbf8bb4c9d568\nSource-candidate: magica38ba5762b06716db1dee00d0afec162656488f5c\nValidated321whole-file phase plus whole bus1349/model-proxy100/webui490; final gate tooling checks pending, not landed.
A builder's whole-file run list for a row comes from imports, not a text
grep, and goes in the builder's report before the run. Files on the
mos-1592 list stay off unless Mos approved the run. Row 329 round 2's
path grep matched fixture text and reran case1-accept.
Mos approved the P4 brief with upstream API keys added: a human-only write-only verb, z.ai-only allowlist, apikey-invalid and provider-not-allowed refusals, a canary test and an echo mutant. Account ids hash the proxy's own credential identifier, never a token or key value. Account removal stays out of P4.
Jason's Q46 and Q47 (DECISIONS Q250, mos-1606): accounts are entered in the Console's own proxy page and D8's /proxy/ forward to the upstream panel is dropped. The new P4 brief is its own file so the rows doc blob that rows 329 and 331-333 pin stays unchanged. Design D5-D8, D10, D20, migration step 4, J3-J5, the rows table and the Mos rulings list are amended.