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
//! Session-attach data-plane wire contract.
//!
//! subc has two distinct channel-0 handshakes. Module registration is the
//! module-to-subc `HELLO`/`HELLO_ACK` handshake that registers the manifest and
//! liveness. Session attach is the client-to-subc-to-module request/response
//! handshake that binds one `(project_root, harness, session)` triple to a
//! route channel.
//!
//! Session attach is vetoed by the module: subc relays an [`AttachRelay`] to
//! the singleton module, commits the route only after an accepted
//! [`AttachRelayResponse`], and returns module rejection as an [`ErrorBody`]
//! `ERROR` frame. The triple binds once at attach time; subsequent data-plane
//! frames carry only the envelope `channel` and opaque body bytes.
//!
//! Config is forwarded as an ordered, provenance-tagged tier list. subc treats
//! every config document as opaque text and preserves `tier`, `source`, and
//! `doc` exactly from [`AttachRequest`] to [`AttachRelay`]; it never parses,
//! merges, partitions, or relabels config in transit.
//!
//! [`ErrorBody`]: crate::ErrorBody
use PathBuf;
use ;
/// One provenance-tagged config tier supplied during session attach.
/// Client-originated channel-0 control RPC body for binding a harness session
/// to a module route.
/// subc's channel-0 response body for an accepted session attach.
/// subc-to-module channel-0 control RPC body asking the singleton module to bind
/// a route channel.
/// Module response body for an accepted attach relay.
///
/// A rejected attach is returned as an [`ErrorBody`] `ERROR` frame.
///
/// [`ErrorBody`]: crate::ErrorBody
/// subc-to-module channel-0 control RPC body telling the module a route channel
/// is gone after client `GOODBYE` or client drop.