1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
//! **The start family's two receipts** (yog's `docs/REMOTE.md` §8.1, §9.8;
//! yog's `docs/DESIGN.md` §3.4, §8.1) — the staged body, and the name the
//! engine minted for what it started.
//!
//! Starting a conversation is **two acts, not one**. `prepare` stages the
//! start — the seed, the workspace if it has to be founded, the ball rung's
//! `bl` steps — and answers a [`Prepared`] body: the fire-time parameters, as
//! the engine settled them. `prompt` hands that body straight back with a goal
//! and fires the detached driver, answering the minted conversation name. So a
//! seat has to hold a reply between two gestures, which is the one shape
//! nothing else on this surface has.
//!
//! # The body crosses back verbatim, and that is the whole design
//!
//! [`Prepared::body`] is the object exactly as it arrived, and
//! [`crate::verbs::prompt`] hands *that* back rather than a re-encoding of the
//! two fields below. It is [`super`]'s rung 4 read in the **write** direction:
//! an unknown field rides through untouched, so a start staged with a work
//! target, a birth lineage or a banner origin this build does not paint still
//! fires with all three. A seat that re-encoded its own reading would silently
//! drop every parameter it had not learned yet — and the dropped parameter is
//! not a missing badge, it is a conversation born in the wrong directory off
//! the wrong config.
//!
//! **So only two fields are read, and the rest is carried.** The workspace,
//! because a fire is addressed and §8.2's mapping has to be spent on it; and
//! the goal, because a rung with a prefill composed one and the operator edits
//! it. `binding`, `lineage` and `origin` are carried and unpainted — each
//! belongs to a control the seat's start pane does not have (a work target
//! picker, a birth policy, the ops banner), and each arrives with the surface
//! that paints it.
use ;
use fields;
/// The staging act's reply kind.
pub const PREPARED: &str = "prepared";
/// The fire's reply kind.
pub const STARTED: &str = "started";
/// The field the minted conversation name rides under.
const CONVERSATION: &str = "conversation";
/// The two fields of the body this build reads. Everything else is carried.
const WORKSPACE: &str = "workspace";
const GOAL: &str = "goal";
/// **A staged start**: what the fire will carry, as the engine settled it.
///
/// It is deliberately *not* `Eq` — [`body`](Self::body) is arbitrary JSON, and
/// the reply vocabulary gives up an equality nothing in this crate spends to
/// keep the carry lossless.
/// Read the staging receipt: the envelope, then the body nested inside it.
pub
/// Read the fire's receipt — the minted conversation name, and nothing else.
///
/// **The name is a barrier**: it is what the reply just made addressable, so
/// every gesture after it may name that conversation (REMOTE §8's live-enumeration
/// barrier, read one noun down).
pub