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
//! Platform-facing cluster orchestration services.
//!
//! This namespace is intentionally thin. It is where Studio, project lifecycle flows, and
//! control-plane policy interact with the lower-level cluster and execution abstractions from
//! `crate::infra`.
//!
//! What belongs here:
//!
//! - worker registration and presentation logic for the product UI
//! - project placement defaults and policy orchestration
//! - cluster bootstrap flows and role-aware startup helpers
//! - project runtime bundle preparation and sync orchestration
//!
//! What does *not* belong here:
//!
//! - mTLS certificate machinery
//! - control-stream protocols
//! - shared state bus internals
//! - storage-engine specifics
//!
//! Those lower-level mechanics live under `crate::infra::cluster` and `crate::infra::io`.
pub use ClusterBootstrapService;
pub use ;
pub use ;
pub use ClusterPlacementService;
pub use ClusterRegistryService;
pub use ClusterRuntimeSyncService;
/// Normalizes an office address, refusing one that names nothing.
///
/// `kinds/office-topology/README.md`, Rejections: "An office without a
/// `base_url` — an office nothing can reach is not an office." Every writer of
/// a `PlatformOffice` row comes through here, so a directory entry nothing can
/// address cannot be created by minting, by registering, or by a heartbeat.
///
/// The check is presence, not shape: the contract names the missing address as
/// the rejection and says nothing about scheme or host, and an operator's
/// `ZEBFLOW_ADVERTISE_URL` is theirs to spell.