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.
Parallelized 5-dimension review of be/ (54 confirmed, adversarially verified) — full record in BE/REVIEW. Grouped by root cause:
//../name escapes the root (JS twin of DOG-009).be delete //origin?feat tombstones the LOCAL branch.#/#!/#msg! message forms unimplemented (reuse missing, forget-! dropped)..be DIR floods unk.
BE-011 landed segment path helpers (shared/util/path.js split/merge/resolveInTree/wtJoin) + the unified discover.resolve(). A codebase-wide audit of worktree-file opens then surfaced THREE more live ..-escapes of the same class, each its own ticket (fix in progress, same tree):
core/recurse.js composes wt paths from UNVALIDATED .gitmodules path=; a crafted submodule escapes via stat/be.find._fsCompletions Tab-completion raw-concats an uncollapsed ../ stem into readdir/lstat (enumerates ABOVE the wt).classifyDir opens the ls nav scope via relDir's lexical prefix that .. defeats (ls:../../etc).
Then a universal wtJoin routing pass (P2/P3) confined the remaining wt-file opens: cat/why/diff untrusted URI paths, a LIVE destructive delete --force ../x unlink escape, get's raw-concat + sub sites, and defense-in-depth leaf guards in checkout/submount/stage. All six landings share the shared/util/path.js wtJoin/resolveInTree chokepoint; final combined suite 136 pass / 10 skip / 0 fail.
The hive ruling (worktrees → <meta>/work/, scheme-less //name = worktree, remotes always scheme-ful, --at retired) landed in the wiki 2026-07-09; a two-agent be/ audit against the settled model produced the migration plan and four conformance bugs:
work/beagle-ext-tests minted, //name + hop + meta-blind status all pass); open: S4 tests/prose, S5 self-hosting ruling, drop the SRC_ROOT=~/src shell export.cd MAIN/src && be cat main.c reads MAIN/main.c); pager sees the sub-path, CLI doesn't.//X = wtdir hit or NAVNONE everywhere (loop/get/head/put); cached tests dropped (head-cached, get-cached deleted; nav-navnone part b flipped to assert NAVNONE); suite = baseline. Pending land only.be get //name FFs the NAMED wt to its branch tip; spec: checkout, in the context wt, the rev that wt is ON (curTip); compounds BE-030.?rev context (live wt shown at a pinned rev); _snapBe omits authority/verb, leaking spell scope past reentry..be/ (the rs_fresh_wt/rs_shield shape every test worktree uses) makes the FIRST jab get throw ToBigInt in hashlet60FromBytes ← locate ← fanoutWholeTree; a second get into the same wt succeeds. Found by TEST-004.curlRun calls io.spawn with an argv missing argv0, so curl never receives -sSf: no --fail (HTTP errors return success) and the progress meter leaks to stderr. Same function as BE-013. Found by TEST-004../ canonicalized in diff/cat/why (+ diff ./file wholly-added bonus leg); // = topWt in resolve/wtdir (memoized launchTop, matches navCwd); authorityRepo NAVNONEs every miss; new cases diff/15-dot-dir-scope + uri011/nav-empty-host-top. Pending land.todo view verb: :todo open-ticket board / :todo TOPIC topic list / :todo TOPIC-123 one ticket; titles, ticket ids and wiki links are click-targets (requested 2026-07-09, iterate till NICE).done verb LANDED 9dad5857 (header [DONE] flip incl multi-mark collapse, README delist); residual: round-3 [done] buttons in :todo rows staged in wt work/BE-040, pending land.[put] buttons on pager status rows (unk/mod/new): visible Y label + hidden O put <path> spell, plain byte-unchanged; DONE in wt work/BE-041, pending land.// + first segment as authority, ~/src/journal/wiki → //wiki; hive wt → //N; sub → parent+mount); two //X rulings open; sequences URI-010 merge + BE-032 sweep.//-empty-host nav anchors rootTop, not the tree you stand in: from a nested worktree (work/*) a ///path mutation arg0 / // context silently rescopes to the OUTER repo. Needs the //X ruling (BE-042); spin-off of PUT-008.authorityRepo anchors on arg0's FULL path (be.find climbs from the file, lands on the SUB), raw rest args then resolve in the wrong tree; delete can mis-target same-named sub files. RULED 2026-07-10: pager passes context + RAW args (arg0 too — no ctx-merge); put/delete resolve each arg via resolve(context,base,rel) (BE-030). Repro in the ticket dir; found exercising BE-036.put *.c, delete src/*): today the literal pattern reaches the verb (FILENONE); reuse the Tab-completion confined FS walk (BE-027), pager multiplies raw words, verbs still resolve (BE-030).get anchors its write/clone on raw io.cwd() (a :get under a //parent nav context with cwd in a SUBMODULE writes the sub's wtlog + clobbers it), and discover.resolve(base,ref) lets a //authority in the ref slot escape the context tree; unify onto resolve(context,base,rel) confined to $SRC_ROOT/<name>. Continues BE-011.be/ shard (html/be publication verbs) is found while core/shared inherit up-tree; registry.verbFile/resolveVerb + repro landed in the BE-029 wt, pending land into journal/be (prereq for MARK mark).Error: SNIFFFAIL, bro: cannot open …: FILENONE); general form of BE-002.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).