commit: projection should surface the diff after the metadata
be commit:?<sha> (keeper projector, see Projector) emits only the commit object body — headers then message — so it shows who/when/why but never what changed. git show folds the diff in; beagle keeps them split, forcing a second be diff:?<sha>. This ticket surfaces the diff from commit:.
commit: is keeper-owned and emits headers + message only; diff: is a separate graf-owned projector. There is no single "show this commit" view.commit: reads like git show.diff:?<sha> (graf's projector) that Bro can follow — keeps commit: single-purpose, reuses graf's diff renderer, no diff code in keeper.commit:, graf owns diff:. Do NOT re-roll diff rendering inside keeper — link to (or invoke) graf's diff:.dog/HUNK stream for Bro; no mutation; all four URI slots still compose.diff:?<sha> for the sha the commit: URI resolved to.KEEPProjCommit (keeper/PROJ.c), diff: query form is the one that triggers graf's commit-show (# fragment renders empty).diff:?<sha40> U tok32 click-target after the headers+message; Bro follows it (existing link primitive, no new dep).test/commit/01-diff-link.diff: shows — now fixed for sub-pin-bump commits by DIFF-001 (landed 018a59c4).dac9dab7 — commit: appends a navigable diff:?<sha> link (query form) via bro's U click-target; keeper gains no diff logic / no graflib dep, dog boundary intact. 289/289 green.