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
//! **One sign-in run, as the engine is streaming it** (yog's `docs/REMOTE.md`
//! §8.3; PROTOCOL 13).
//!
//! The act and the read answer one kind, which is upstream's own decision and
//! not a coincidence: *"an act's receipt and a lane's first frame are the same
//! value at the same moment"*. So `login` and `login-tail` are one reading here
//! too, and the pane paints the same rows whichever gesture produced them.
//!
//! # A frame is an APPEND, exactly as the live tail's is
//!
//! `Query::LoginTail` hands over what the run has said **since the last frame**
//! — the engine's lane advances a per-read cursor — so the first frame of any
//! read is the whole buffer and a seat that lost its connection re-asks and is
//! whole again. [`Signin::absorb`] is that fold, and it is
//! [`super::stream::Stream::absorb`]'s rule one noun over: lines accrete in
//! order, and the settled facts of the last frame win.
//!
//! # Both streams are here, tagged, because bz writes the flow to stderr
//!
//! The authorize URL, a device code, and a failure's exact reason and remedy
//! are all stderr. A reader that kept only stdout paints a blank pane and
//! leaves the operator with nothing but a command to retype (yog bl-b4e5).
//!
//! # The two settled facts are absent while it runs, and absence is a reading
//!
//! `outcome` is the terminal exit status, and `fallback` is set **only** on a
//! non-zero one — the command to run by hand, in the workspace-bound spelling
//! the engine composes because it is the end that knows the wall. Neither is
//! `null` on the wire while the run is live, so neither is a gap here: a run
//! with no outcome is a run that has not finished.
//!
//! # A pair nobody has signed in to is one empty frame, never silence
//!
//! Upstream opens the lane on a `LoginView::default()`, which reads here as a
//! [`Signin`] with no lines and no outcome. That is *nobody has signed in to
//! this row in this workspace* and the pane says so in words — the honesty rule
//! REMOTE §10 states for every held read.
use ;
use fields;
/// The kind token both the act's receipt and the lane's frames answer to.
pub const KIND: &str = "login";
/// One line the sign-in printed, and which stream it came down.
/// What one read of a sign-in run says, folded.
/// The key the lines ride under. Not [`super::fields`]'s `rows`: this listing
/// is one run's output rather than a table, and upstream spells it as what it
/// is.
const LINES: &str = "lines";
/// Read one line, strictly.
/// Read the reply: the lines, and the two facts a settled run carries.
pub