get already RENDERS the quad (/blog/status.mkd, shared/quad.js) but does not DECIDE by it: verbs/get/get.js:1465 quadReport() calls quadOf on the POST-get tree as a report only, in a try/catch that downgrades failure to a warning, while the D5 leaf and shared/checkout.js apply() roll their own oldMap/dirty/isBinary logic with a trackUpdate flag bolted on by /todo/GET/GET-040. Same vocabulary on output, different mechanism on the deciding side — which is why cells drift (/todo/GET/GET-056, /todo/GET/GET-057, the DIS-082-jab loss). RULED (gritzko 2026-07-31): the per-file verdict is a 13-cell track x work table in the status letters against the root; and /todo/GET/GET-053 is RULED FF-ONLY, so the diverged branch is deleted, not rewritten.
shared/quad.js already computes every input the table needs: root = dag.mergeBase(track, base), four columns . same / x removed / o created / v advanced, and the wt column measured vs BASE not root (gritzko 2026-07-17) — one require away from get, nothing to re-derive.///be/#978b8a52, 2026-07-31 12:16, main tree tip) added the diverged TRACK UPDATE path: trackUpdate at get.js:453,475,536,794, divMerge (6 uses, ~:628-636), local-only-add and ours-deleted special cases at :1031,:1068, and the merge-base-blob weave leg at :1079. All of it serves the diverged case ONLY..), ahead (root = track, track column all . so every row is a no-op), same (all .), diverged (REFUSE on non-force; get! is the any-ref reset and consults no table).get.js shared/checkout.js quadOf the wt BEFORE the checkout, not only after; each row's track+base+wt chars pick THEIRS / OURS / WEAVE3 / DELETE / no-op.dag.mergeBase survives demoted to that test.quadReport stays, and now reports in the same terms the decision was made in; conflicts print in the glyphs status already prints (/todo/DIS/DIS-080).be/, run via jab. Do NOT run native be; do NOT open beagle/.ctest -j16, 328/328 at 978b8a52).weave3 from be/shared/weave.js, isBinary from be/views/diff/diff.js, quadOf/quadModel from be/shared/quad.js, URI/hash via be/core/resolve_hash.js. No new mechanism, no new deps.///be/ at 978b8a52 (it holds the code being deleted). Norms: 2-line GET-058 comments, 1-line 64-char ticket-coded commit.T. W. no-op / T. Wv OURS / T. Wx stays deleted
- in base: Tv W. THEIRS / Tv Wv WEAVE3 / Tv Wx THEIRS
- in base: Tx W. DELETE / Tx Wv OURS keep file / Tx Wx no-op
- not in base: To W- THEIRS / To Wo WEAVE3 (add/add) / T- Wo OURS untracked / T- W- no-opTv Wv, To Wo) → OURS + conflict: binary is never woven, a dirty binary is never reset. The six clean cells are byte-agnostic.Tv Wx is THEIRS regardless of bytes (gritzko 2026-07-31): a local delete carries no content, so nothing is destroyed, only an intent that costs one rm to reassert; a local EDIT carries content and wins.o/x, so the 12 illegal presence combinations of a bitmask cannot be written down, and edited-vs-locally-deleted stop sharing one "dirty" bit — the two defects of the current oldMap model.T., so it needs no special case.get! bypasses the table entirely: unconditional THEIRS plus the untracked sweep — force stays the SOLE cleaning path (/todo/GET/GET-040's invariant).quadOf the PRE-get wt; thread the model into the D5 leaf and checkout.applyverdict(track, base, wt, binary) helper; both paths call it, nothing else decidestrackUpdate (:453,:475,:536,:794), divMerge, :1031, :1068, :1079status glyphs (/todo/DIS/DIS-080); quadReport unchangedctest -j16, no regression in get/sub/patch/status/post bucketsquad.js THROWS on "no common ancestor" by design and get's clone/bootstrap path has no base at all — that path must BYPASS the table, never acquire a degenerate root.Tv W. → THEIRS satisfies it by construction. Close it against this ticket, do not fix it separately.root→base committed + base→work dirty, same table applied twice) is what comes back....V → ...v demotion is that ticket's, not a table cell.5c0d5c21 runs its own pre-fix jsrc during its first get and still clobbers dirty exec files — back the wt up before the first update of any stale clone.GET-058: get decides by the quad table, no diverged path