Saphan StudioDocs
Reference/Command reference

saphan say

Compose a validated owner-block-v1 alert, open item, or explicit none

saphan say

Compose a validated owner-block-v1 alert, open item, or explicit none

saphan say <stream> [flags]

Compose exactly one alert, open item, or explicit none element inside the existing owner-block-v1 envelope. The finished fence is judged by the same validator that judges a leg return; no second envelope grammar is maintained here.

Both emitted fence markers start in column 0. Without --channel the validated fence is written to stdout. With --channel it is appended below the leg channel's existing bullets; the file must already exist, and a refusal writes nothing.

Every field is TEXT and cannot become structure: the emitted bytes must read back, through the envelope reader's own boundary grammar, as exactly the one statement that was said. A field carrying envelope boundary bytes is refused as owner-block-say-field-opens-envelope, which names the carrying field.

--channel is judged on the FILE, not only on those bytes. After the append the channel is re-read and asked the same predicate: every envelope boundary it already carried, unmoved, plus exactly one more — the appended statement, its own boundary carrying its own element. A channel that reads back as anything else is refused as owner-block-say-channel-does-not-read-back and the append is undone, because bytes that are inert on their own become an envelope the moment a later append supplies their missing half.

The kind vocabulary is closed: alert | open | none. Every refusal is named and carries a tagged form remedy with that complete vocabulary, the field budget, and an example that this verb itself accepts. Run saphan grammar owner-block to read the complete validator-generated kind glossary from this binary.

Options

OptionTypeDefaultDescription
--abstractstringunsetalways-rendered summary (at most 5 lines)
--afterstringunsetwhat the fleet does after this statement
--bodystringunsetreference to longer context; never inline secret content
--channelstringunsetappend the validated fence to this existing leg-channel file instead of stdout
--idstringunsetoptional stable element id
--kindstringunsetelement kind: alert | open | none

On this page