Incident 2026-07-19, work/WORK-004 (spine 85587f18 → d0a4784e → f168d856, jab diff EMPTY, byte-clean): jab status | cat renders .vv. view/bro.js, .vv. views/work/work.js, .vv. test, ..v. views/diff/diff.js, summary 3 base, 4 patch (ahead 2). Per Status the 3rd column is "refs absorbed by PATCH since the base, pending for the next post" — this wt's only patch row (patch #896ed3d8) was consumed by the very next post (?#d0a4784e), then another post followed; nothing is pending, the patch column must be all-. and the summary patch segment omitted. gritzko read the clean tree's "patches applied" summary as dirt — exactly the misread the quad was meant to kill.
The wtlog rows (work/WORK-004/.be): ... patch #896ed3d8 → put view/bro.js → put views/work/work.js → put test#31a0c06a → post ?#d0a4784e → put views/work/work.js → put test#882cc3ed → post ?#85587f18. Status still buckets 4 files into the patch column two posts later.
2e02815a → f168d856, diff empty) shows .v.. test, .v.. view/bro.js, .v.. view/render.js, .v.. views/work/work.js, 4 base (ahead 1) — per-spec (committed-ahead reads .v..), so the base axis is fine; only the patch axis leaks.views/diff/diff.js reads ..v. yet was NOT in #896ed3d8's delta AND is byte-identical to base (verified via jab cat 'views/diff/diff.js?f168d856'). It was checked out by the divergent get ///be/#f168d856 minutes before the patch — suspect the DIS-057 mtime stamp-band consult (shared/classify.js:180-192 patchStamps, mtime→{pat,mrg,cnf} buckets) catching a bystander mtime, or the same stale-scope walk.post row, so the band outlives the post.A patch row consumed by a subsequent post contributes NOTHING to status: no patch-column v, no N patch summary segment; byte-parity with a never-patched wt otherwise.
views/diff/diff.js bystander leg: a file checked out by get, untouched by the patch, byte-equal to base must read .... (omitted) — pin it, whatever the mechanism turns out to be.wtlog.boundaries().patch
(via patchFloor) advanced only on a GET or a commit-all POST — a SELECTIVE post
(a put staged before it, as WORK-004 has: patch → put… → post) did NOT advance it,
so the consumed patch row stayed in scope. patchTheirs() then kept feeding the
absorbed theirs tree to quad.patchUlog, lighting column 3 for every path where
theirs ≠ root (incl. the byte-clean views/diff/diff.js bystander). The ..v./.vv.
are ALL the theirs-tree comparison; the DIS-057 stamp band was NOT the culprit (it
rides the wt column, and WORK-004's wt is clean).boundaries): the patch floor = the latest
get/post ts, same as pd. Justified by PATCH "records the absorbed sha(s) …
for the next POST to consume" + verbs/post/post.js:809-816,955 — EVERY committing post
folds ALL in-scope patchOrigins() into the commit's parents (no selective/narrow
guard), so any post consumes the patches. Bare-advance / //wt / host posts write NO
local post row (they advanceRef/append to the target's bePath), so a local post row
is always a committing post → safe to end the scope there. Removed the now-dead
postIsCommitAll helper; pd and patch are one ts.patchFloor) end at the consuming post....post ?) then commits ahead
of it, all in ONE wt — no clone (the file:// clone path hits the retired keeper here).UNCOMMITTED — staged in work/STATUS-016 (jab put, no post), user to commit.
Changed (staged):
shared/wtlog.js — boundaries() patch floor advances on ANY get/post (was
get / commit-all-post); removed dead postIsCommitAll; comment refresh.test/status/patchpost/run.sh — NEW case (patch #F1 → put → selective post): pre-post
..vv fileA + 1 patch; post-post .v.. fileA, patch column + N patch segment gone,
byte-par with a never-patched wt; bystander fileC .... throughout.Evidence: RED at tip (.vv. fileA + 1 base, 1 patch) → GREEN. Suites green:
test/status/* (13), test/work/* (2), test/bro/pager, test/patch/* (26), patchband.js,
statusfast.js. Pre-existing unrelated reds: test/bro/{color,view} (readdir-order goldens).
LIVE flip (read-only, my code on work/WORK-004): patchTheirs=[], 3 base only, rows
.v.. {test,view/bro.js,views/work/work.js}, bystander views/diff/diff.js omitted —
matches the WORK-005 control.
Suggested commit message:
STATUS-016: end patch scope at the next post, not commit-all