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
//! **The pending echo at the ROW altitude** (§3.4, §7.2; REMOTE §9.7, bl-44e9)
//! — the same optimism [`super::compose`] folds into a snapshot, folded instead
//! into an answered §11 conversation list.
//!
//! Why there are two projections of one fact, and why that is not two sources.
//! The §11 list reads a `Reply::Conversations` since bl-44e9, so it never sees
//! the composed snapshot — and bl-adcb's *"optimism is a seat's, and a seat that
//! reads over a wire has none"* would, taken as the last word, silently delete
//! §3.4 from the one surface it exists for: the operator's typed goal would
//! again have no representation in yog until the detached driver wrote a branch
//! (bl-915e, which is the defect this whole mechanism is). So the ruling is
//! narrower than the sentence read: **a seat's optimism reaches whatever that
//! seat actually reads**, and what this one reads is rows.
//!
//! Both projections live in [`super`] for the single-source reason [`compose`]
//! states about itself: one module owns every fold of the echo, so *"what does a
//! frame see that disk does not say?"* still has one place to read. Its own
//! file only because §12's cap says so.
//!
//! [`compose`]: super::compose
//! [`super::compose`]: super::compose
use Path;
use ;
use crate;
/// The list a seat paints: `rows` as the boundary answered them, with `echo`
/// folded on. Nothing pending, or an echo belonging to another workspace, hands
/// the answer straight back.
///
/// Two cases, which are [`compose`](super::compose)'s own two read at this
/// altitude:
///
/// - **the target is in the answer** — the send is an action on a conversation
/// the world already carries, so its row is *freshened* to the echo's own age
/// and nothing else moves. The reorder `compose` earns by bumping
/// `last_action_unix` is deliberately not made here: the answer arrives
/// sorted, and a seat that re-sorted it would be deriving rather than
/// selecting. The derivation carries the true order one ask later.
/// - **it is not** — a start whose branch does not exist yet, which is the whole
/// of what the operator could not see. Its row is minted from the same
/// synthetic agent `compose` appends and **leads** the list, because a start
/// is by construction the newest thing that has happened.
///
/// A [`Target::Agent`] the answer does not carry adds nothing: the conversation
/// it named is gone, and inventing a row for it would be a false definite.
pub
/// Where the echo's target sits in the answer — by the minted §3.3 name while a
/// start has no id, by the id once it has one. The same two-armed identity
/// [`index_of`](super::index_of) reads off a snapshot.
/// Date the echoed row by the send rather than by the last thing the derivation
/// saw. Clamped at zero for the same reason every other age is: a clock that
/// went backwards is not a row from the future.
/// Put the pending conversation at the head of the list. A [`Target::Agent`]
/// with no row is left alone.
/// The pending conversation projected exactly as a derived one is — through
/// [`forest_rows`], the one row derivation, over a forest of the single
/// synthetic agent [`compose`](super::compose) appends. Nothing about the row is
/// hand-built here, which is what keeps a faded row and a real one the same
/// anatomy (§11).
///
/// It hands back a **list**, which is a one-row list, because that is what the
/// derivation hands back and unwrapping it would be a case to answer where there
/// is none: a forest of one root is one row, and chaining says so without a
/// branch.
///
/// The two injected readers are **named rather than inlined**, because neither
/// is reachable from a pending conversation and a lambda nobody calls is a claim
/// nobody checks. Stated as functions, each is a total answer this module's own
/// tests hold it to.
/// The §6 watermark reader a pending conversation gets: **nothing is
/// acknowledged**. It has no evidence oid to have been acknowledged *about*, so
/// its attention count is zero whatever this says — and `false` is the honest
/// answer to "has the operator seen this?" about a thing that does not exist.
/// The §3.5 ball resolver it gets: **the stray-id answer**, which is
/// `answer::conv_ball`'s own miss arm — the id renders, the join supplies
/// nothing. A start stamps no ball on the row until the driver writes its
/// `goal.md`, so this is never asked; if it ever is, it says what every
/// unjoinable stamp says.