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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
//! **The §8.1 start family's two doors, posted and held** (DESIGN §3.3, §3.4,
//! §8.1; REMOTE §9.8, bl-1747) — split from [`super`] per §12's budget, on the
//! seam that file's doc draws: everything there is the hold, and this is the one
//! pair whose landing is itself a step in a longer gesture.
//!
//! A start is two gestures — `Prepare` (seed/create/claim/ensure, answering the
//! composer's [`Prepared`]) and the deferred `Prompt` that fires it — and every
//! rung's aftermath used to ride the answer *in the same frame*. That is
//! precisely why the pair was §9.8's residual: the §3.4 workspace adoption, the
//! §3.3 mint-seed spend and the §3.4 start claim are frame-side facts gated on
//! a reply.
//!
//! **Fire-and-hold was already the shape** (§9.8 answer 4): the start claim and
//! the pending echo have always held state across frames awaiting a derivation.
//! What is new is only what retires the hold — an answer arriving rather than
//! the world catching up — and the general handle for that is the ticket. The
//! world's catch-up still retires the claim itself
//! ([`AppModel::adopt_started`]).
use ;
use crateAppModel;
use crateDraftKey;
use crateAction;
use crateShellState;
use crate;
use Path;
/// Post the §8.1 prepare for `inputs` — §3.4's two axes and nothing else, the
/// same pair the boundary's `Prepare` variant carries, because the rest (the
/// roots, the occupied names) re-derives inside the chokepoint from the sources
/// every frontend fills it from.
///
/// This is the rung that **stops at the goal box**: ▶ Start, ▶ Continue, the
/// new-ball form, the §11 raise. Nothing composed it, so nothing clears.
pub
/// The composer's own Enter (§3.4's bare and path rungs): the typed text **is**
/// the goal, so the `Prepared` that comes back is chained straight into a
/// `Prompt` and the box empties when *that* lands — the whole gesture, judged
/// once, exactly as the synchronous pair was.
pub
/// The post both rungs make.
///
/// **One start at a time** (§3.4, bl-56c6). A second fire while the pair is
/// still in flight is refused outright — not held, not replaced — because the
/// two facts a start carries are both spent by the *first* one's landing: the
/// §3.3 mint seed and the §3.4 claim. Replacing the hold left the first
/// `Prompt`'s receipt with nobody waiting on it, so its aftermath never ran
/// while its detached driver launched anyway, and the replacement chained a
/// second `Prompt` **with the same unspent seed against the same occupied
/// set** — two roots wearing one minted name, which is "ambiguous
/// conversation" for as long as both exist.
///
/// Nothing is lost by refusing: the draft is untouched, and DESIGN §3.4's
/// always-the-second ruling is what the very next frame does with it — the
/// landed start makes its minted name the selection, so that same Enter is a
/// message to the conversation now being started, held by
/// [`AppModel::hold_send`] until it has an address.
/// Post the deferred prompt (§8.1) with **this seat's own §3.3 seed** — the one
/// the greyed prediction was drawn off, so the preview and the fired `--name`
/// are one draw (bl-28ba). The seed is spent when the fire *lands*, not here: a
/// launch that failed minted no name, so its prediction still stands.
pub
/// The post itself, with the seat the caller is carrying — the chain below
/// hands the composer's own draft forward, so the box empties when the *prompt*
/// lands rather than when the prepare does.
/// A landed `Prepare`: **adopt the workspace it resolved** (§3.4 — a start
/// focuses what it started), then either chain the prompt the composer's Enter
/// carried or open the goal box on the prefill. `true` when it chained.
///
/// The adoption is unconditional because it is never a second decision:
/// `prepare` resolves exactly one target workspace, and the rungs that name one
/// deliberately other than the focus (▶ Continue, the raise) are exactly where
/// it is the correction (bl-2826).
pub
/// A landed `Prompt`: retire the seed the prediction spent (bl-28ba), drop the
/// pane the fire consumed, and hold the §3.4 start claim on the minted name.
///
/// The claim is held by the **minted conversation name**, which is all the fire
/// knows — a root has no agent id until the detached driver writes one — and it
/// carries the goal with it, so the operator's text has a row from the moment
/// the engine says it launched (§7.2, bl-915e).
pub