Beagle SCM
BE — the be/ JS project (dispatcher + kernel + verbs + views)
be's front-end (verb/projector dispatch, bareword routing, the error/UX surface) plus the be/ JS kernel/verbs/views the 2026-07-07 review covered (BE/REVIEW). One topic dir, Plan-shaped tickets cleared by the Issues fix-and-land loop.
Review 2026-07-07 (BE-010..025)
Parallelized 5-dimension review of be/ (54 confirmed, adversarially verified) — full record in BE/REVIEW. Grouped by root cause:
- BE-010 CRIT — PATCH weaves the COMMIT tree as "ours", clobbering dirty wt edits (JS twin of native PATCH-002/JGET-004).
- BE-011 HIGH — wtdir SRC_ROOT confinement is lexical;
//../name escapes the root (JS twin of DOG-009).
- BE-012 HIGH — emitPack 256B deflate slack overflows on >4MB incompressible blobs → every such push aborts.
- BE-013 HIGH — wire.js child/fd lifecycle: push() finally leaks stdin → reap HANGS; curlRun/curlPost leak.
- BE-014 HIGH — DELETE ignores the Host slot:
be delete //origin?feat tombstones the LOCAL branch.
- BE-015 HIGH — POST
#/#!/#msg! message forms unimplemented (reuse missing, forget-! dropped).
- BE-016 HIGH — pager emits file-content control bytes to the tty (ANSI/OSC injection).
- BE-017 HIGH — io.mmap-and-never-unmap leak class at 4 sites (ignore/diff/gitmodules/why); gated on JAB-006.
- BE-018 MED — hunk-body tok32 end field wraps at 16 MiB (log/why) → large-file views corrupt.
- BE-019 MED — thin-pack buffer sizing: silent object drop + >1GB balloon on corrupt input (store.js).
- BE-020 MED — verb URI-slot gaps: HEAD drops Path, pathless PUT force-pushes, host decoded 3 ways.
- BE-021 MED — classify: exec bit ignored, dir/merge baseline mismatch, nested
.be DIR floods unk.
- BE-022 MED — helper duplication sweep (~9 sites: head/get tip-peek, ZERO_SHA×3, pager/spell, status isMount, …).
- BE-023 MED — view semantics: multi-arg grep/spot drop args, theme bold sticks, pager escape-split leak.
- BE-024 MED — robustness/doctrine: unguarded parse aborts walk, non-crash-safe _book, wrong-target rollback, +4.
- BE-025 LOW — perf/style: repeated full-wtlog scans, double hunk retention, redundant re-encode, whitespace.
Active tickets (dispatcher/UX)
- BE-003 — every dog must print name + verb + URI + error code on an error exit (one uniform line, single-sourced) — today error exits are contextless (
Error: SNIFFFAIL, bro: cannot open …: FILENONE); general form of BE-002.
- BE-006 — one unreachable-remote
be post prints FIVE lines for one failure (raw ssh: leak + be: remote unreachable + Error: WIREUNRCH + Error: BEDOGEXIT ×2, one per spawned be level); collapse to a single uniform error line. Concrete instance of BE-003.
- BE-008 —
be put/be post leak a sub's empty-put cascade (sniff: put: no changes + empty put put: + Error: PUTNONE + Error: NONE) when recursing into an UNCHANGED submodule. PARTIAL: the be post arm landed (quiet captured gitlink bump); the bare be put arm (BEActSubsRelay, no -q) still sprays. Evidence in the ticket dir; kin of POST-019 (closed).
BE-007 (root out ROWS — deleted dog/ROWS.{h,c} + 4 types, 18 callers repointed to the typeless HUNKu8sFeedRow ULOG→HUNK serializer; fixed POST-022's wrecked output) landed 1a006d08; retires BE-005 (the ROWS-banner umbrella).