pub struct Manifest {
pub schema_version: u32,
pub workflow: String,
pub workbook_hash: Option<String>,
pub ratified: bool,
pub ratified_by: Option<String>,
pub ratified_at: Option<String>,
pub cells: Vec<CellRole>,
pub loop_block: Option<LoopDecl>,
pub governed_data: Vec<GovernedDatum>,
pub changelog: Vec<ChangelogEntry>,
pub capability_calls: Vec<CapabilityDecl>,
pub annotations: Vec<AnnotationDecl>,
}Expand description
Re-export of the verified runtime bundle the served tools operate on (loaded
fail-closed via pmcp_workbook_runtime::load_bundle).
The logical manifest — the source of truth for cell roles + metadata that
REPLACES colour as canonical (DIA-03). Synthesis builds a CANDIDATE
(ratified = false); BA ratification (Plan 05) makes it conformant.
Derive note: Eq is relaxed to PartialEq-only because the
Manifest::governed_data table carries a CellValue (f64-bearing).
Fields§
§schema_version: u32The manifest schema version.
workflow: StringThe workflow name this manifest describes.
workbook_hash: Option<String>The source workbook content hash (when stamped; round-trip is Plan 05).
ratified: boolfalse for a synthesized CANDIDATE (D-06); true only after BA
ratification (Plan 05). Roles are canonical only when ratified.
ratified_by: Option<String>Who ratified the manifest (when ratified).
ratified_at: Option<String>When the manifest was ratified (ISO-8601 string; when ratified).
cells: Vec<CellRole>The per-cell roles table.
loop_block: Option<LoopDecl>The declared loop block — None until a confirmed Rooms named range is
read (D-10; synthesis only hints).
governed_data: Vec<GovernedDatum>The BA-owned governed-data table (Phase 10 Plan 02, D-03): the SOLE route
by which the reconciliation classifier may change a constant. Default
empty; each entry carries a typed CellValue value + provenance.
changelog: Vec<ChangelogEntry>The manifest changelog (ART-02): version/workbook-hash/note entries.
capability_calls: Vec<CapabilityDecl>Declared capability calls (ART-02 — DECLARE-ONLY seam).
annotations: Vec<AnnotationDecl>Additive output/cell annotations (D-18): purely descriptive metadata the
served tools may surface. #[serde(default)] so old manifests without the
key deserialize to an empty Vec; skip_serializing_if keeps existing
manifest.json snapshots byte-stable when empty (the allowed_values
additive-serde precedent).
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Manifest
impl<'de> Deserialize<'de> for Manifest
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Manifest, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Manifest, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for Manifest
impl JsonSchema for Manifest
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl Serialize for Manifest
impl Serialize for Manifest
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for Manifest
Auto Trait Implementations§
impl Freeze for Manifest
impl RefUnwindSafe for Manifest
impl Send for Manifest
impl Sync for Manifest
impl Unpin for Manifest
impl UnsafeUnpin for Manifest
impl UnwindSafe for Manifest
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more