ROWS (dog/ROWS.{h,c}) is an unnecessary typed subsystem — 195 refs across 18 files (rows, rows_row, ROWSnav, ROWSdiscipline, ROWSOpen/Close/FeedRow/FeedRec) — for what is just serializing a ULOG event sequence into ONE H hunk as a token stream. Replace it with a single utility FUNCTION in HUNK or ULOG, with NO new data types (operate on existing ulogrec/hunk/u8b/u8cs). Delete ROWS entirely, repoint every caller, and restore correct verb output. It is also currently BROKEN (bannerless hunks get rebased into per-row labels — the POST-022 wreckage). This REVERSES and supersedes BE-005 (and the ROWS wiring its children POST-018/ GET-026/STATUS-001 landed); it subsumes POST-022.
ROWS adds types and a builder for a job that is one serialization function.
(ts, verb, uri) → tokens appended to ONE hunk (the
<date> <verb> <path> table with per-column toks + a hidden nav URI per row), flushed via HUNKu8sFeedOut. No state object is needed.
keeper/{WALK,KEEP.exe}, beagle/BE.cli, + their tests.
that HUNKu8sRelay rebases to the mount path → a bare label per row (POST-022).
Delete ROWS; one utility fn; identical (correct) output.
HUNK/ULOG utility that serializes a ULOG event (or a slice of them) into a
hunk token sequence — NO new types; nav scheme passed as a plain param/ron60, not a ROWSnav enum or rows_row struct.
dog/ROWS.{h,c}; repoint all 18 callers to the utility fn.per-row-label / full-history wreckage fixed by construction.
behavior via fn params, not a struct. The tty-stream vs one-hunk --tlv modes come from HUNKMode, already global.
(pending)
output: u8b/hunk). No rows/rows_row/ROWSnav/ROWSdiscipline.
dog/ROWS.{h,c} + its tests; update INDEX.md, CMake.output (assert bounded, prefixed sub-push output) — confirm failing pre-change.
BASS-carve fix in keeper/WALK.c) — leave its walk/BASS logic alone, only remove ROWS from the output path; expect a reconcile.