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
//! **The signal vocabulary** (DESIGN §6): which signals exist, and the sentence
//! each one says.
//!
//! Cut off [`super`] at §12's budget on [`roster`](super::roster)'s own seam —
//! that file answers the questions that only exist across a set, this one
//! answers the question that exists before any derivation runs: what are the
//! words. A word is not a derivation, and only one of the two changes when a
//! seat needs a rule stated rather than badged.
/// One firing signal — the per-badge detail (§6, §3.5 badge rendering).
/// **The sentence a queue ROW says** — every firing signal's clause, joined,
/// with rule 2's clause refined by *which way* the conversation came to rest
/// (bl-511d).
///
/// Rule 2 fires on rest and never on the wound (ruled bl-2194), and that is
/// unchanged: a clean turn-end and a failed one both put your turn on the
/// queue. What bl-511d found is that they also **said the same sentence**, so
/// a conversation that finished, one that died in its birth step and one
/// parked on an answer only the operator can give were three conditions
/// reading as one row — *"came to rest — your turn"* over a conversation that
/// never got anywhere near rest.
///
/// The refinement is a WORD, not a signal and not a token: it stands where
/// `Stopped`'s clause would, the way [`AttentionKind::Refused`] stands where
/// the whole kind would (bl-b43b), and the row's `signals` list is byte for
/// byte what it was. That is what keeps this off the wire version — the shape
/// did not move, one derived string did — and it costs nothing at a seat,
/// which reads the sentence it is handed.
///
/// **`state` is the fact, not a second flag.** `Stopped` is litany's own
/// reading of a latest step that failed, was killed, or never ran
/// ([`AgentState`]), and it is already on the row beside the sentence; asking
/// it here rather than storing a `wounded` bool is why the two can never
/// disagree. Round-trip is unharmed for the same reason: `says` is derived at
/// the encoder from `signals` and `state`, and a decoded row carries both.
pub