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
//! Where a session's process runs, as that process reported it.
//!
//! A session is a process, and a process runs somewhere the supervisor wants to
//! look at: for a pi session that is the Orca pane its plugin was spawned in,
//! which the plugin inherits as `ORCA_PANE_KEY` (beside `ORCA_TAB_ID`,
//! `ORCA_LEAF_ID` and `ORCA_TERMINAL_HANDLE`) and reports back over the adapter
//! protocol. The reducer never reads this: `project` derives the public
//! lifecycle from the state dimensions alone, and `is_legal` constrains none of
//! it. It travels with the observation because the observation is what the
//! client mirrors and what every reader of a session row sees — the supervisor
//! board (`integrations/orca-plugin`) needs the pane on the *session* axis, and
//! the session axis is the observation.
//!
//! Absent fields are the honest answer and never an error: a plugin outside a
//! pane, or an Orca build that exports only some of the ids, reports what it
//! has. A reader filters on what is there rather than on a placeholder.
use ;
/// The host kinds a session process can name. One variant today; the type is a
/// wrapper rather than a bare pane so a second substrate adds a sibling field
/// without renaming what is already on the wire.
/// The Orca pane a session process lives in, as the process itself reported it.