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
//! Help (§8.5): **a query, and a higher-order one** — it is asked *about* a
//! gesture, and it is the same question at every seat.
//!
//! It belongs to the §8.5 taxonomy exactly where the others do: it populates
//! rather than mutates, it returns typed data both frontends render, and it has
//! a headless spelling ([`Query::Help`](super::Query::Help)). What sets it apart
//! is its subject — **the derivation is over the interface, not the world** —
//! and that has one consequence worth stating: help is the only query with no
//! snapshot to read, so any seat can answer it *in place*, with no consumer, no
//! deposit and no wait. The deposit path still answers it (parity is not
//! optional), but nothing has to go that way to learn what a verb does.
//!
//! [`table`] is the single source: the line reader's refusals, the roster a
//! bare `/` prints, the per-verb detail, and the parity test that no spelling
//! drifts from a gesture all read this one list. A verb here that the reader
//! does not answer — or the reverse — is a test failure, not a doc bug.
/// The whole verb roster — the acts on a conversation or a ball, then the
/// standing/settings verbs, then the queries, then the follow-class reads
/// whose answer is a sequence (bl-73e7), in that order. Six lists rather than
/// four since bl-c088, on the same terms: `driving` is a prefix of the acts and
/// `world` a prefix of the queries, each joined back where it stood. A **function**,
/// not a const, because the list outgrew one file at §12's cap (bl-dc0c,
/// bl-2d19) and const slices cannot be concatenated in a const: the split is a
/// line budget, so it must not become a second list anyone can read half of.
/// Cheap: `HelpRow` is `Copy` over `'static` strs.
/// **Who owes this op a control** (`docs/PARITY.md` §2, bl-8758) — the one fact
/// the interface-parity contract needs, kept here because the roster is already
/// the suite's single list of what a client can do, and a second list would
/// drift from it within a week.
///
/// Two values, deliberately: a third is added when a row honestly needs one,
/// not speculatively.
/// One command, as help states it: how it is typed, what it does in a line, and
/// the paragraph an operator reads when they ask about it specifically.
/// Whether `verb` names a gesture. The reader, the codec and every seat ask
/// this one question rather than carrying a second list.
/// The help asked for: one row when a verb is named, the whole table when it is
/// not. An unknown verb is refused before it reaches here (the codec's strict
/// decode, the reader's unknown-command refusal), so this is total.
/// Help as text — the one rendering every seat prints (the composer's note, the
/// terminal's stdout, a TUI's pane). **One row is a page, many are a roster**:
/// asking about a verb earns its paragraph, asking about everything earns the
/// list, because a wall of paragraphs answers no question anyone asked.
/// The roster, as the tail of a refusal that has just named an unknown verb.