unk, not one mount row
A 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/.
puts. Don't touch test/CMakeLists.txt / test/put/* (live WIP there).
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 isrecorded 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.