BRO-030: unified quad status reporter (track·base·patch·wt vs root)

Now
DONE

Input

Context

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.

Goals

One reporter module renders quad rows; every verb report (status, get, post, patch) emits through it, and the old vocabularies retire everywhere at once.

Constraints

WIP

Design decisions

TODOs

Blockers and bummers

Outcome

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.