File status and divergence reporting is a per-verb zoo: status prints /wiki/Dirty nouns, PATCH prints applied/merged/mod/conflict (/wiki/PATCH §Reporting), GET/POST print their own rows, and ahead/behind is a separate post/miss listing. The unified model is specced in /wiki/Status: per path a quad of relations . X + ↑ — columns track/base/patch/wt, each vs root = LCA(track, base) — colored blue/green/yellow/orange; bold = staged, red = conflicted; commit ahead/behind uses the same relations one level up.
One reporter module renders quad rows; every verb report (status, get, post, patch) emits through it, and the old vocabularies retire everywhere at once.
status shows a quad for every non-.... path plus commit divergence in the same vocabulary.| cat path stays fully readable uncolored..v.., never .v.v; only uncommitted work lights the 4th char.. same, X removed, + created, ↑ advanced; columns blue/green/yellow/orange; bold staged, red conflicted.[ \ ] ^ _ <backtick>) = track/base/patch/wt glyph colors + staged-inverted + con-inverted.● created / ∅ removed / ↑ advanced, and ✔ for a COMMIT row's o ("present in this line" — never the file ●); the GLYPH carries the column truecolor (blue/green/amber/orange RGB — 256-cube orange too muddy); staged wt INVERTS (color bg, RGB-white fg — basic 97 is theme-remappable), con inverts to red; plain stays the .xov canon; no bold, digit-counts idea DROPPED.shared/quad.js (ULOG columns, k-way merge, LCA root, commit quads) + view/quadrender.js + theme.QUAD_SGR; unit test test/quad/model.js green (in work/BRO-030)src#dst (quadrender.fileRow).xov, staged wt char UPPERCASE, conflict !; tty may use Unicode (✗ + ↑) + bold/red — model+renderer+model-test converted--quad: status / patch / post / get all landed green, one e2e test each?<sha> (no !); 8 WHOLE goldens debanged; arg-side alignment split to PATCH-015.o.. commit row (track=pin) — keep a fallback confirmation row? needs a ruling (pinned in test/post/file golden meanwhile)?<sha>! rows were invisible to refOf/patchTheirs (blank patch column); read-side fix landed in the worktree, verified.miss shown for an absorbed commit) sit on the classifier side and gate correct quads._jstatus still parsed 3-char nouns (emptied every status golden section), 8 goldens never regenerated, report-arms asserted retired words; plus two PATCH.mkd rulings applied late — conflict exits non-zero, patch stages nothing (no sub gitlink put bump).All work sits UNCOMMITTED in work/BRO-030 (per the no-VC-ops rule) awaiting inspection/merge: new shared/quad.js, view/quadrender.js, test/quad/model.js; modified shared/wtlog.js (PATCH-014 read fix), verbs/{get,patch,post}, views/status/status.js, view/theme.js, test/CMakeLists.txt (+quad/model), ~45 test files converted to the quad default.