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
//! thrall — the **foot**: a tool-execution client for a yog server.
//!
//! A thrall holds an operator-issued, foot-grade certificate and dials in to
//! an engine it does not administer. Its entire wire surface is three acts:
//! advertise what this box offers, wait on its mailbox for work, post the
//! captures back. It asks nothing, it acts on nothing, and it never listens —
//! the engine never speaks first.
//!
//! `docs/DESIGN.md` states the role and the inherited invariants. yog's
//! `docs/REMOTE.md` is the protocol authority thrall implements against; where
//! this crate and that document disagree, one of them is a bug.
//!
//! **What is built** (DESIGN §4): the command line; the [`channel`] — the mTLS
//! dial, the version preface, the framing, the foot-grade check on this box's
//! own leaf, and the entries an operator filed (bl-a4a5); and the [`config`]
//! this box offers from, with [`tools`] the element it advertises and
//! [`json`] the strict reads both spend (bl-05fe); the [`gestures`] a foot may
//! send with the [`run`] loop that spends them, over the
//! [`invocation`](crate::invocation) nouns the routing leg carries (bl-a2ea);
//! and the [`exec`]utor behind the loop's hand-off, with the [`serve`] read
//! that starts the whole thing from a data root [`paths`] names (bl-4cda).
//!
//! **thrall is complete as a foot at that point** — advertise, wait, execute,
//! answer — and what remains is what it deliberately is not: it holds no world,
//! it never listens, it never asks and it never acts.
/// **The spawn boundary** — every child process is built and forked here.
pub
/// **The confined `unsafe` file** — every raw process effect in the crate.
pub
/// **The engine's conformance corpus, vendored as literal text** (REMOTE §3):
/// the protocol number and the frames of every shape a foot speaks, copied from
/// yog rather than derived from anything here. It is what the stand-in engine
/// states and what the decoders are judged against, so a drift on the far end
/// is a red test rather than a channel that will not open (bl-e0f0).
pub
/// Scaffolding the suite shares. Never compiled into a released binary.
pub
/// **The publication guard**: what `cargo publish` would upload, judged against
/// the classes `Cargo.toml`'s `include` allowlist rules in. The name carries
/// the `tests.rs` suffix the assert carve-out keys on — the file is nothing but
/// tests, and a module of tests declared from here has no other way to say so.