Saphan StudioDocs
Reference/Commands

saphan land

Closes a finished stream (a unit of work on its own branch) as one owner act: the stop-2 acceptance, the review decision, the merge and, if asked, the first teardown step.

Closes a finished stream (a unit of work on its own branch) as one owner act: the stop-2 acceptance, the review decision, the merge and, if asked, the first teardown step. Each step is carried out by the same command you would otherwise type (saphan gate, saphan merge, saphan teardown), with the same checks; nothing is relaxed or bypassed. Each step is checked just before it runs and recorded before the next starts, so if one refuses, land stops, prints that refusal in full and exits with status 2, and running it again resumes where it stopped. ⚠ This is an owner act: the command asks once, printing a one-time code on this terminal on a screen that names every act the run will perform, and waits for you to type it back. It is refused when no terminal is attached (for example from a script or a CI job), and in the console's browser terminal it is refused in favour of the console's passkey prompt. The review decision is never assumed: without --review-decision the review step is skipped, and a stream that needs a review then fails at the merge.

saphan land demo --expand
saphan land demo --review-decision accept
saphan land demo --review-decision accept --through-teardown --return notes.md=consumed

⚠ A step is treated as done when a matching row is on the record, without re-checking what that row measured; if the stream has moved since, run that step's own command by hand and then run land again.

saphan land <stream>
flagtypedefaultwhat it does
--actorstringThe person landing the stream, recorded on every step; defaults to SAPHAN_ACTOR, then the identity in your Saphan configuration. It must name an enrolled, active actor in this workspace's signed actor registry; a spelling that differs only in case or spacing is refused, not corrected.
--expandboolfalseLists the steps and the measured state of each, and performs nothing. Measuring stops at the first step that is not yet recorded; the steps after it are reported as not measured.
--notestringA free-form audit note for the teardown step; it is dropped if that step was already recorded and is skipped.
--provisioned-fromstringArrayPassed to the teardown steps (see saphan teardown); <dest>=<path> applies to every teardown in this run, <stream>:<dest>=<path> to that stream's only. Repeatable.
--reasonstringYour reason for the decisions this landing records, in your own words; it is passed to the stop2 and review decisions. Required unless the installation's signed policy makes reasons optional.
--returnstringArrayA disposition for a returned file, passed unchanged to the teardown step; repeatable, and none is assumed.
--review-decisionstringThe review decision to record: accept, conditions or reject. There is no default; omitted, the review step is skipped.
--review-deliverystringWhich delivered review the decision is about, by its delivery ID or a unique prefix; needed only when no review of the stream's current state is on record.
--review-refstringThe path or ID of the review return the decision refers to; optional, and if given it must match what was delivered.
--through-teardownboolfalseAlso archives the stream's working files and records the teardown, for the stream and for each of its review rounds. Each review round is first closed with a signed stop2 decision closed-without-merge, recorded under your name, because a review round never merges. It does not remove any worktree; that is a separate command, which land prints when it has performed this step.

Global options apply to every command — see Every command.