Saphan StudioDocs
Reference/Commands

saphan checks

Deterministic checks that run as ordinary processes, never as a model turn, so they cost nothing in model usage and give the same answer every time.

Deterministic checks that run as ordinary processes, never as a model turn, so they cost nothing in model usage and give the same answer every time. The catalog covers build, test, lint, import checks and plugin compilation for a stream; other subcommands check channel files, commit authorship, container runs and the built-in user interface.

saphan checks bridge-author

Counts the commits in a bridge repository (the workspace's shared git record of governance and decisions) per day and per kind of author: a seat identity, the legacy identity pair from the configuration, the gateway's own identity, or anyone else. It reads author strings only and rewrites nothing. With --staged it becomes a pre-commit check that compares the author git is about to record with the committing seat: it warns until the owner has signed the identity cut-over record, and refuses afterwards.

saphan checks bridge-author --repo /path/to/bridge --since 2026-10-01
saphan checks bridge-author --staged --workspace /path/to/workspace
saphan checks bridge-author
flagtypedefaultwhat it does
--rangestringHEADThe revision or range to read, for example origin/main; defaults to HEAD.
--repostringThe bridge repository to read; required for the count, and defaults to the current directory with --staged.
--sincestringThe first day counted, as YYYY-MM-DD, compared with each commit's author date; required for the count.
--stagedboolfalseRun the pre-commit check instead of the count: compare the author git would record with the committing seat, warning before the owner's cut-over record exists and refusing after it.

saphan checks channel-lint

Checks a worktree's channel files (_MASTER_ORDER.md, _EXEC_STATUS.md, _REVIEW_STATUS.md, whichever are present) with the same parser Saphan Studio uses to read them, and exits 2 on any malformed file, unknown state, misplaced heading or mismatched stream. A worktree with none of the three files is also a finding. Run it before reporting work as finished, or before accepting a returned stream.

saphan checks channel-lint
flagtypedefaultwhat it does
--worktreestringAbsolute path of the worktree whose channel files are checked (required).

saphan checks container-contradictions

Checks every recorded run that claims to have run in a container, and refuses any whose exact machine and image were not confirmed by a fresh container-capability probe before the run started. It prints ok when no run contradicts its record.

saphan checks container-contradictions

saphan checks declare

Declares that a stream is ready for its deterministic checks, and records the declaration so saphan checks outcomes can tell a check that never ran from one that was never asked for.

saphan checks declare --stream payments-refactor --actor alice
saphan checks declare
flagtypedefaultwhat it does
--actorstringThe id of the person or agent making the declaration (required); it is recorded, not authenticated.
--classstringArrayA catalog class to declare ready: build, test, lint, importcheck or plugin-compile. Repeat for several; defaults to the whole catalog.
--roundstringA free-form label for the round this declaration belongs to; empty means unnumbered.
--streamstringThe stream declaring readiness (required).

saphan checks landing-author

Refuses a branch carrying a merge commit whose author or committer is not the identity the configuration declares, starting from the point where the engine began setting that identity. Used when developing Saphan Studio; not needed to operate an installation.

saphan checks landing-author
flagtypedefaultwhat it does
--knownstringA range of already-known commits to report without failing, inclusive at both ends.
--rangestringThe revision range to read, for example origin/main; replaces the default range entirely.
--repostringThe repository to check (required).
--sincestringThe commit from which merge commits are judged; replaces the default starting point.

saphan checks list

Prints the check catalog as the exact saphan run --backend proc commands that would run each check for a stream, with each check's time limit.

saphan checks list --stream payments-refactor --actor alice --workdir /path/to/repo
saphan checks list
flagtypedefaultwhat it does
--actorstringThe id of the person or agent the composed runs belong to (required).
--streamstringThe stream the composed runs belong to (required).
--workdirstringThe repository root the checks run against (required).

saphan checks outcomes

Prints one row for every check class a stream declared for a round, with its outcome: green, red or unrun. A declared check with no run reads unrun with the reason "declared, never run"; unrun describes the machine or the vendor, never the code. This command refuses nothing; by default it also stores the reading in the record (see --record).

saphan checks outcomes
flagtypedefaultwhat it does
--recordbooltrueStore the result as a timestamped reading in the record; on by default, so pass --record=false for a read-only look.
--roundstringThe round label whose results are shown; empty means unnumbered.
--streamstringThe stream whose results are shown (required).

saphan checks ui-assets

Checks that every screen in the user interface built into this binary has its text in both language catalogs, prints the counts, and exits 2 naming each missing key. Useful as a CI step, since the same warning is otherwise printed only by the commands that serve those screens.

saphan checks ui-assets

saphan checks vendor-attribution

Refuses a branch whose commits since its merge base carry a Co-authored-by trailer with an e-mail address that is not already a commit author's in the repository, which is how attribution to an AI vendor is detected. An address that has ever authored a commit there passes. Only the trailer is read, never the commit message text. The trailer has to be removed before the branch passes its gate.

saphan checks vendor-attribution --repo . --base origin/main
saphan checks vendor-attribution
flagtypedefaultwhat it does
--basestringThe base branch to compare against, for example origin/main (required).
--branchstringHEADThe branch to check; defaults to HEAD.
--repostringThe repository to check (required).

Global options apply to every command — see Every command.

On this page