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
//! **The one capture this process is holding** (yog's `docs/REMOTE.md` §5.6,
//! ruling 1).
//!
//! A `complete` that fails on the WIRE leaves this foot standing with a capture
//! nobody else has: the tool ran here, the engine's slot still holds the lease
//! it handed out, and the driver is waiting. Dropping it — which is what this
//! crate did until this file existed — lets that lease re-run the tool on the
//! next dial, so the box pays for the work twice and the asker waits for the
//! second run of something already computed.
//!
//! **So it is carried out with the ending and posted first on the next dial**,
//! after the advertisement and BEFORE that channel's first follow-class read.
//! The order is the whole mechanism: the read is what releases the lease
//! (REMOTE §5.3), so a capture posted ahead of it lands on a slot the engine is
//! still holding with no capture of its own.
//!
//! **This is not the id ledger bl-9261 refused, and that refusal still
//! stands.** Nothing here is a remembered SET, nothing is compared, nothing
//! outlives the process, and no redelivered invocation is suppressed: a foot
//! handed an invocation it has no held capture for runs it, undeduped, exactly
//! as DESIGN §3.8 says. What this holds is **one** capture, on this process's
//! own stack, for an interval with a name — until the next channel's first act
//! is answered, landed or refused. bl-9261's second reason was that the
//! interval had no name; posting rather than waiting gives it one, and that is
//! the whole of what is narrowed.
//!
//! **A refusal of the re-post is dropped and the channel reads on.** An engine
//! that refuses it has swept the slot, restarted, or already handed the driver
//! an answer — all ordinary — and a foot that ended its channel over a capture
//! nobody was waiting for would be turning the ordinary case into the terminal
//! one. Only the wire swallowing it again keeps it held, because a wire failure
//! is not an answer: it says nothing about whether the slot is still there.
use crateChannel;
use crategestures;
use crate;
use ;
/// **Post one capture back**, at the moment it is computed.
///
/// **The receipt is read rather than discarded.** An engine that refused the
/// completion — an expired handle, a slot addressed to another machine — is
/// saying that this foot and that engine disagree about what is in flight, and
/// a foot that kept answering into that would be posting captures nobody is
/// waiting for.
pub
/// **A capture the wire swallowed**, and the handle it answers.
///
/// The id is the engine's own, quoted back exactly as an ordinary completion
/// quotes it — this is the same gesture on the same lane, sent one channel
/// late, and not a second spelling of anything.
pub