Expand description
Public wire DTO for the sealed, content-addressed release plan
(ossctl release plan — ADR-0002 §3).
A ReleasePlan is the read-only pre-image a human approves: the ordered
concrete target set a cut would publish, the invariant phase sequence the
coordinator will drive, the git HEAD it was sealed against, the chosen
release version, and the content-addressed ReleasePlan::plan_id. release cut --plan <plan_id> re-derives the plan from current repo state and
refuses (plan_stale) if the id no longer matches — so a commit, a manifest
rename, a schema bump, or a different chosen version between approval and
execution aborts rather than silently publishing something else.
Consumers read this document under the CLI’s canonical data envelope:
{schema_version, data: <this shape>, warnings} — the same envelope every
ossctl --json command shares (crate::SCHEMA_VERSION versions that wire
envelope). Like facts and audit, the plan is derived, never authored,
so it has no document version of its own; the envelope’s schema_version is
the wire version consumers gate on. ReleasePlan::contract_schema_version
is a content field (the contract-document version the plan was sealed
against, part of the content address), not the wire-envelope version.
The plan reuses Ecosystem, Registry, and Adapter from the
canonical contract model rather than restating their wire strings: the plan,
the contract, and the release adapters must agree on "rust" /
"crates.io" / "cargo-publish" down to the byte, and sharing the one enum
makes that agreement structural instead of coincidental.
Structs§
- Bump
Plan - The engine-owned version-bump phase’s deterministic edit set (
release-rust- workspace-multicratefacet 2) — the content-addressed intent thePlanPhase::Bumpphase applies at cut time. - PinRewrite
- One intra-workspace
=-version pin thePlanPhase::Bumpphase rewrites in lockstep with the workspace version (e.g. the bin crate’slib-core = "=0.1.5"→lib-core = "=0.1.6"). Derived deterministically from the workspace graph. - Plan
Target - One concrete publish destination in a sealed plan.
- Release
Plan - A sealed, content-addressed release plan — the artifact
release planemits and a human approves.
Enums§
- Bump
Level - The semantic version-bump level a human requests with
--bump— the only version input the engine accepts (it computes the number; the human never types it). A wire enum whose kebab string is stable and part of the plan’s content address. - Plan
Phase - One phase of the coordinator’s irreversibility-ordered pipeline (ADR-0002
§2). Every plan drives
PlanPhase::SEQUENCE; a plan that owns a version bump prependsPlanPhase::Bump.