PATCH: absorb another branch's work into the worktree

PATCH absorbs commits from another branch into cur's worktree and records the absorbed sha(s) in .be/wtlog for the next POST to consume; it never commits on its own. The cycle is patch → test → post — run once per merge, cherry-pick, or squash, or looped per commit for rebase — so every commit that lands is a tested commit, never a chain of unverified work. PATCH is one verb in the Beagle Verbs vocabulary, and unlike GET it weave-merges theirs rather than overwriting the worktree.

Three shapes

The PATCH URI form selects scope only — the bang ! on ?br is the whole-branch toggle — and every shape takes the usual extras (//host to fetch first, ./path to scope). The operation (merge/rebase/squash/cherry) is scope-at-patch plus provenance-at-POST per the dirty-words post; PATCH never carries a #message.

CLI use

PATCH chooses scope; the named op is PATCH-scope plus POST-provenance — rebase-one = ?br + post #!, merge = ?br! + post '#msg', squash = ?br! + post '#msg!', cherry = #sha + post #!.

Ancestor-skip walk

A whole-branch ?br! replays only the commits cur doesn't already have; a one-commit ?br finds the next un-absorbed commit by walking the source's first-parent chain.

Merge base: full stack vs single commit

The scope splits by merge base, which lets one verb be git's merge, rebase, and cherry-pick: whole-branch ?br! weaves the full fork..tip stack against auto-LCA(cur, theirs), while a named commit or one-commit ?br weaves one commit against its parent.

Weave merge

PATCH never refuses on dirty files: it runs a 3-way WEAVE with the absorbed commit on the theirs side and the wt's current bytes on the ours side, so PATCH-on-PATCH composes by construction.

Path-scoped PATCH

A non-empty path slot scopes the absorption to those paths, but records no provenance — a partial absorption is not a faithful DAG commit.

Reporting and status

Every PATCH prints a ULOG-style report — one line per applied commit and touched file, <verb> <status> <path-or-uri> — so the patch-test-post loop stays auditable.

Open questions

Two PATCH-side formats are still unsettled, both about how downstream tools read PATCH's output.