be / be post SNOROOM on a large sub aborts the parent commit
Bare be (full-repo status) and be post recurse into the html submodule (483 files on disk, 481 tracked); AFTER html's clean 481 ok summary a cumulative status/HUNK buffer overflows → Error: SNOROOM → Error: BEDOGEXIT, and be post then ABORTS the parent commit ("sub recursion failed — worst=BEDOGEXIT"). Crucially be status:html ALONE is fine (rc=0, 481 ok), so the overflow is in the AGGREGATE recursion, not html's own scan. A clean/unchanged big sub wedges all landing. Method: Issues.
html sub present): bare be →
status:html / ?91ae5b53… 481 ok then Error: SNOROOM / Error: BEDOGEXIT, then it continues to status:be/test, … — so SNOROOM fires at the html→parent aggregate boundary, not fatally to the scan.
be post '<msg>' → on the html sub: Error: SNOROOM / Error: BEDOGEXIT /
be: post: aborting parent commit — sub recursion failed (worst=BEDOGEXIT) — the whole commit aborts even though html is UNCHANGED (nothing to stage).
be status:html standalone → rc=0, 481 ok, NO SNOROOM (verified).So html's per-sub status fits; the OVERFLOW is the parent accumulating sub results across many subs (parent 31 + be/test 17 + beagle 6 + html 481 + …).
SNOROOM (abc/01.h:124) is returned by an abc slice feed (abc/Sx.h/BUF.h)
when the caller's into slice is too small — a FIXED buffer, not grow-on-room.
beagle/BE.cli.c:237 a_carve(u8, cbuf, 1UL<<20) (1 MiB) and :322 a_carve(u8, sbuf, 64UL<<10) (64 KiB) — the 64 KiB one is the likely cumulative overflow once a 481-row sub piles onto the aggregate.
cd be && be status → SNOROOM/BEDOGEXIT (no
ok count) — be/'s own tracked set overflows the same buffer. So be/ can't be statused or be post-ed standalone EITHER, and it drops from the parent submodule list (BE-009). No be post workaround exists for be/ until fixed.
be post for any tree containing a large sub AND blocks landingthe be/ code-review fixes (JS-065..091) entirely; surfaced this session.
be and be post handle a large sub (≥481 entries / large cumulativeoutput) WITHOUT SNOROOM; an unchanged/clean sub NEVER aborts the parent commit.
passes after the fix; full beagle ctest stays green.
_grow-on-
SNOROOM pattern / a_carve+retry) over a bigger fixed cap — a fixed bump just moves the cliff. Don't regress small-repo status/post output bytes.
BE.cli.c:322 sbuf 64 KiB and theHUNK-table sink the sub-recursion writes into); size it to the cumulative row/ byte count or grow it on SNOROOM and retry, mirroring git.pack's NOROOM grow.
no-op (an UNCHANGED sub must not contribute a fatal BEDOGEXIT).
dog/test/ULOG.c::T_open_over_1024_rows (a >1024-row logthat overflowed the fixed scratch index; RED pre-fix).
dog/ULOG.c ulog_idx_scan_cap sizes the
scratch index to content (log_size/16 + 1024, capped at the sidecar ceiling) — the BE.cli.c carves were a red herring.
be over the journal tree rc=0 (no SNOROOM), `cd be && bestatus` rc=0; beagle 464/464 + be 65/65 green; small-repo output unchanged.
(PUT-003) both appear in the same be post recursion — fix independently.
be89684d / beagle pin e5071f32 "ULOG-003: ensure ulog index
has the capacity" (the commit rode the ULOG-003 label; dog/ULOG.c's ulog_idx_scan_cap comment cites STATUS-003). Audit 2026-07-07: sizing + repro test verified in-tree. CLOSED.
dog/ULOG.c — the fixed 1024-row scratch
index in ULOGOpenRO/ULOGOpenBooked/ULOGOpenIdx now sizes to content (log_size/16 + 1024); be/.be (1030 wtlog rows) overflowed it. The dispatcher carve (BE.cli.c:237/:322) was a red herring (diff:-only). Repro dog/test/ULOG.c::T_open_over_1024_rows. Verified: bare be over the journal tree rc=0 (6 status: blocks, no SNOROOM); cd be && be status rc=0; beagle 464/464 + be 65/65. The BEDOGEXIT-decouple WIP item is moot (SNOROOM gone).