unk, not one mount rowA submodule that is declared, mounted, and gitlink-staged (be put <sub>) but
not yet committed has all its internal files listed individually as unk by
be status, instead of being filtered behind one staged-gitlink (new <sub>)
row. Real case: the journal's be sub (?/beagle-ext) shows 29 be/* files as
unk. html/beagle don't, because their gitlinks are already committed.
Method: Issues. Relates to SUBS-013 (the be put staging side).
beagle-journal: be is in .gitmodules, mounted (be/.be anchor),
gitlink staged via be put be (put be#c828169707… in .be/wtlog), NOT yet
posted. be status → 29 be/* lines as unk + ? …, 29 unk; recursion
status:be separately shows ? 29 ok. So the files are double-counted.sniff/CLASS.c class_merge_step records a submodule prefix
(which drops the sub's internal wt rows via class_under_submodule) ONLY when
a COMMITTED baseline gitlink row exists: base != NULL && ok64Lit(base->verb,
0) == RON_s (CLASS.c:188). A staged-only gitlink put (base == NULL, a put
<path>#<40hex> row) is not recognized → be/* surface as CLASS_WT_ONLY.html/beagle are filtered because their 160000 gitlinks are in the
committed baseline tree; be's gitlink is only staged.put <path>#<40hex>) but uncommitted is
treated as a submodule boundary: its internal files are filtered and it
surfaces as one staged-gitlink row. Matches git add <submodule>.be status in beagle-journal shows new be and zero be/* unk.sniff/CLASS.c; reuse class_remember_submodule. Repro-first
(CLAUDE.md §17), as a case in a registered table/dir test under beagle/test/.test/CMakeLists.txt / test/put/* (live WIP there).put != NULL &&
u8csLen(put->uri.fragment) == 40 (a staged gitlink bump). Discriminator: a
gitlink put row carries a 40-hex fragment; a regular file put has none.be < be/…), so the prefix is
recorded before any descendant row arrives — ordering already holds.be put <sub>, assert be status lists no
<sub>/* unk — test/all/03-staged-sub-unk (fails pre-fix, passes post).ctest green (398/399; lone fail be-post-relpath is a
pre-existing ssh/PATH env issue, unrelated to sniff/).ab4519af (trunk vs the
?/beagle/.beagle-journal dot-branch the journal pins); reconciled by weave.707bbbbe — SUBS-033 fix landed on beagle trunk ? (CLASS.c staged-gitlink
detection + test/all/03-staged-sub-unk). Verified: journal be/ unk → 0.0b60bf6a — weave-merge of 707bbbbe into the journal's beagle line
(?/beagle/.beagle-journal, over 121a98ae); clean, content-conflict=0.0b60bf6a STAGED (put beagle#0b60bf6a);
awaiting the human's journal post.707bbbbe on beagle trunk, all TODOs green;
the journal-post residual is bookkeeping outside this ticket.