Skip to main content

Module plan

Module plan 

Source
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§

BumpPlan
The engine-owned version-bump phase’s deterministic edit set (release-rust- workspace-multicrate facet 2) — the content-addressed intent the PlanPhase::Bump phase applies at cut time.
PinRewrite
One intra-workspace =-version pin the PlanPhase::Bump phase rewrites in lockstep with the workspace version (e.g. the bin crate’s lib-core = "=0.1.5"lib-core = "=0.1.6"). Derived deterministically from the workspace graph.
PlanTarget
One concrete publish destination in a sealed plan.
ReleasePlan
A sealed, content-addressed release plan — the artifact release plan emits and a human approves.

Enums§

BumpLevel
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.
PlanPhase
One phase of the coordinator’s irreversibility-ordered pipeline (ADR-0002 §2). Every plan drives PlanPhase::SEQUENCE; a plan that owns a version bump prepends PlanPhase::Bump.