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
//! One-call confined execution: [`run_confined`].
//!
//! Callers otherwise wire the [`BackendRegistry`] → [`BoundaryPlanner`] →
//! [`BoundaryRunner`] pipeline by hand for the common single-backend case. This
//! collapses that boilerplate into one call while keeping the same fail-closed
//! semantics — no new policy, no hidden defaults.
use crateBackend;
use crate;
use crate;
use crateBoundaryReport;
use Arc;
/// Plan `spec` against `backend`, execute it, and return the sealed
/// [`BoundaryReport`] — the one-call form of the `registry → plan → run`
/// pipeline.
///
/// The backend is registered into a fresh single-backend [`BackendRegistry`],
/// the spec is admitted by a [`BoundaryPlanner`] (fail-closed), and the plan is
/// driven + sealed by a [`BoundaryRunner`]. Controlled *execution* terminals
/// (unsupported cell, guest trap, timeout, fail-closed setup) are not errors:
/// they are encoded in the returned report's outcome, exactly as when the
/// pipeline is driven by hand.
///
/// For multi-backend selection or reuse of a registry across many runs, use the
/// [`BackendRegistry`] / [`BoundaryPlanner`] / [`BoundaryRunner`] pipeline
/// directly — this wrapper deliberately owns a single-backend registry per call.
///
/// # Errors
///
/// Returns [`PlanError`] when `spec` cannot be admitted against `backend` — an
/// unknown backend id, an unsupported required capability or host control, an
/// unsatisfiable evidence/budget floor, or an admission-shadow divergence.
/// Execution terminals are *not* errors; they ride the returned report's outcome.