arcature-cli 2026.2.0

Developer lifecycle CLI for Arcature applications.
Documentation
//! The publish engine (RV2.9) and tag/release policy (RV2.11).
//!
//! Executes a committed, validated Release Plan in topological order.
//! The engine is idempotent and resumable: an already-published target
//! version is verified and skipped; a partial run resumes from the
//! first missing crate; 429 is retried with bounded backoff; 401/403/
//! build errors fail fast (ADR-0005 invariant 11).
//!
//! Crate version tags are created only after publish success (ADR-0005
//! invariant 19). They are outputs, never the selection source. The
//! three tag kinds (crate tags, Platform `v*` tags, transaction
//! `release-*` tags) are distinct and non-triggering across workflows
//! (RV2.11 / ADR-0005 invariant 20).
//!
//! Registry inspection and publishing are abstracted behind narrow
//! testable boundary traits so the engine's pure logic can be
//! unit-tested without a network (ADR-0005 invariant 15).
//! `CARGO_REGISTRY_TOKEN` is never logged (AGENTS.md §17 / program
//! Security section).
//!
//! - [`plan`] — load a committed Release Plan from TOML.
//! - [`validate`] — validate a loaded plan against the current commit
//!   and cargo metadata.
//! - [`registry`] — the registry inspection boundary.
//! - [`retry`] — retry policy (429 retriable, 401/403/build fail-fast).
//! - [`tag`] — crate version tag naming and classification.
//! - [`report`] — publish report types.
//! - [`executor`] — the publish executor (topo order, idempotent
//!   resume, fail-fast).
//! - [`policy`] — tag and release policy (RV2.11): the three tag kinds,
//!   trigger actions, and post-publish tag verification.

pub(crate) mod executor;
#[cfg(test)]
mod onboarding_tests;
pub(crate) mod plan;
#[allow(unused_imports)]
pub(crate) mod policy;
pub(crate) mod registry;
pub(crate) mod report;
pub(crate) mod retry;
#[cfg(test)]
mod security_tests;
pub(crate) mod tag;
pub(crate) mod validate;

pub(crate) use executor::{Publisher, TagCreator, execute_plan};
pub(crate) use plan::{LoadedEntry, LoadedPlan, PlanLoadError, load_plan, parse_plan};
#[allow(unused_imports)]
pub(crate) use policy::{
    TagKind, TagPolicyError, allows_prepublish_tagging, classify_tag, platform_trigger_action,
    transaction_trigger_action, verify_crate_tag,
};
pub(crate) use registry::{RegistryInspector, RegistryStatus};
pub(crate) use report::{CrateResult, PublishReport, PublishStep, build_publish_steps};
#[allow(unused_imports)]
pub(crate) use retry::{PublishOutcome, RetryDecision, classify_status, decide_retry};
pub(crate) use tag::{
    CrateTag, is_crate_tag, is_platform_tag, is_transaction_tag, parse_crate_tag,
};
pub(crate) use validate::validate_plan;