.git official-url sub-push behind --force (default skip + notice)
SUBS-020's POST mirror case 2 makes be post <git-parent ending .git> AUTO-push each mounted submodule to its official .gitmodules URL (an independently-hosted remote). User ruling (2026-06-22): pushing a sub to its OFFICIAL url should be MANUAL. Default be post must SKIP the official-url sub-push and print a one-line notice; be post --force performs it. Cases 1 (beagle→same peer) and 3 (git non-.git→parent-relative) stay automatic — the sub is reachable there. Net: only the independent-official push is opt-in. This is the LAST blocker for URI-006 St.2 (its lone red test post/43). Method: Issues.
3eba8e76: the git-.git→official arm is bepushgit_recurse_cb
in beagle/BE.cli.c (the previously do-nothing git-peer arm of BEActSubsPost), plus keeper/KEEP.exe.c branch-strip for the synthetic ?/<sub>/.<parent>→git-default map.
test/post/43-sub-push-git-official-url asserts the AUTO official push (bare sub.git
holds the sub tip after a .git-parent post). It must be rewritten to the new policy.
its be:-local fixture clone work; St.2 must not depend on the removed file:-clone.
be post <.git parent>: post the parent gitlink but DO NOT push the sub to its
official .gitmodules URL; print one line, e.g. sub <name> not pushed to official <url>; use --force. The parent may reference a sub sha the official remote lacks (the accepted trade — the notice warns).
be post --force <.git parent>: perform the official-url sub-push (today's behavior).--force needed.be post --force flag (same one POSTCFLCT uses); add no new flag.post/38) or case 3 (post/44); don't touch the GET resolver..git→official) on --force; cases 1/3 send to a destinationthat tracks the parent, so they stay automatic. The notice is one line per skipped sub.
post/43 to assert BOTH arms: default ⇒ official sub.git does NOT receive the
sub tip + the notice prints; --force ⇒ it does. Use be:-local fixture setup (no file:-clone) so St.2's file:-removal needs no further post/43 edit.
bepushgit_recurse_cb behind --force; default skip+ one-line notice. Cases 1/3 untouched. (BE.cli.c:3767 gate, :3930 flag wire)
post/43 for both arms (default-skip+notice, --force-pushes), be:-local setup.post/38 (case 1) and post/44 (case 3) still green; full ctest green.60cf0b10 (post/43 owned here, be:-local).60cf0b10 — case-2 official sub-push gated on --force in bepushgit_recurse_cb
(BE.cli.c): default skips + prints sub <name> not pushed to official <url>; use --force; --force performs it. Cases 1/3 unchanged. post/43 rewritten to both arms (be:-local fixture); post/38/44 green; ctest 483/484 (be-post-relpath ssh aside + 2 net tests).