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
//! **The §4.2 trail row, both directions** (§8.5, §7.3; bl-4d81) — the one
//! answered row whose derived readings *are* the answer.
//!
//! Every other listing row spells a fact somebody else's type already holds.
//! This one spells the durable `ops.jsonl` line **and** the three readings §7.3
//! names — is it a failure, what its `exit` says in words, and where it stands
//! now — because the failure banner §7.3 mandates is otherwise five derivations
//! re-implemented per seat (the sentinel table, the `128+n` reading, the
//! `(cwd, verb)` retirement key, the ack watermark scan and the origin
//! grouping), whose failure mode is silent divergence rather than a compile
//! error. That is the seam this file is cut on, and it is why the two
//! directions sit together here rather than one in [`super::rows`] and the
//! other in [`super::rows::decode`].
use ;
use crate;
use crate;
use crate;
/// The wire's five words for [`Standing`] — [`Standing::token`]'s other half.
/// Two spellings of one vocabulary is this codec's standing shape: the match is
/// the compile gate, the table is the parser, and the round trip over every arm
/// is what holds them together.
const STANDINGS: = ;
/// One trail row on the wire: the durable line verbatim, then the derived facts.
///
/// The line is `ts`/`argv`/`cwd`/`exit`/`stdout`/`stderr` plus the stamped
/// `origin`, which crosses because it cannot be derived (bl-48f8). Beside it:
/// `failed` — §7.3's own predicate, `OpRow::failed`; `exit_label` —
/// `ExitKind::label`, so no seat ever paints a bare `-3`; and `standing` —
/// `opslog::Standing`, §6's retirement folded with §4.2's ack watermark. "One
/// banner per origin" is then the `live` rows grouped by `origin`.
///
/// `failed` rides beside `standing` rather than being read off it because it is
/// the **row's own** question, answerable of a single row held alone — an
/// expanded detail, a banner quoting one line — while `standing` is a fact
/// about that row's place in a tail. Two questions, and only the second needs
/// the tail present to ask.
pub
/// The same row read back. `standing` is read **strictly** — it is the one
/// derived field a reader cannot recompute, since it is a fact about the row's
/// place in a tail this frame may hold only part of.
///
/// `failed` and `exit_label` are deliberately *not* read into anything: they
/// are recomputable from the line the row already carries, and the encoder
/// above recomputes them, so a round trip returns the frame exactly while the
/// crate keeps one home for each reading. That is the same discipline
/// `conv_row`'s `display` is decoded under (bl-7067) — the wire states a
/// derivation so a seat need not do it; it does not thereby gain a second
/// authority for it.
pub