be post recursion — global mode + wt-target file merge-- gritzko (spec author)
The post recursion (submodules) is flawed and buggy: mode is
decided per-repo, and a wt-target post never touches the target's
files. This reworks the whole descent to gritzko's plan against
the recovered be/verbs/post/post.js + be/shared/subs.js. Two
axes: (1) the submodule recursion mode, (2) the //WT target post.
See worktree for the wt-post semantics.
The recursion was recovered from source and cross-checked with the plan; the code diverges on mode-scope and wt-materialization.
postSubs decides selective-vs-all per-repo via a local
anyStaged(wtl) — no whole-tree scan.advanceWorktree only appends a base-advance row to the
target wtlog; it never materializes/merges the target files.s.bucket === "adv" force-includes an out-of-band-advanced
sub even with no put under it.Post-order recursion with a globally-decided mode, plus a
get-style file update on a //WT target.
put/delete ⇒ selective; zero ⇒ post-all.adv), then post-order commit the parent.put OR any
file under it is put/deleted (transitive); else untouched.//WT post: FF-only; materialize/merge the dirties into the
target wt like get, THEN advance its base (retain track).FF-only stays; refuse before the first store write (POST-017).
resolve_hash, relate)
and the get merge path; no hand-rolled dag/checkout.//WT target must not be clobbered — merge or refuse.The mode is a single tree-wide predicate computed once, then threaded into the recursion (not recomputed per level).
anyPutDeep(info) over parent + every
mounted descendant wtlog; result picks selective vs post-all.subInParentScope (gitlink/file put
or delete under the sub) transitively; drop the adv
force-include in selective mode.advanceWorktree grows a get-style merge stage before the
base-advance row; dirty-target policy = merge, refuse on
conflict. See DIS-062 wt-target resolution.adv sub's gitlink//WT post leaves target files stale (only base moves)anyPutDeep whole-tree scan + thread mode into postSubsadv includeadvanceWorktree get-style materialize/merge + dirty policy//WT targetpost from a SUBDIR of a clean wt that is ahead of
trunk misfires POSTNONE: //WT is this worktree — the context
resolved to the wt-target self-post arm instead of the DIS-074
track-advance arm; must FF the tracked branch (trunk) to cur's tip.
ctest -j16; update be/verbs/post index if API shifts//WT may need a get helper
not yet factored out of the get verb — confirm before wiring.