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
//! Core library for `ossctl` — the deterministic engine behind the `/oss-*`
//! Claude Code skill family.
//!
//! All logic that must be exact and identical for every caller lives here so it
//! is unit-testable without spawning the binary. The `ossctl-cli` crate is a
//! thin clap + I/O shell over this library (ADR-0001 §2).
//!
//! The founding architecture is fixed by the accepted ADRs under `docs/adr/`;
//! this crate realizes their module layout. At founding these are **module
//! stubs** — the compiling shape, no domain logic yet:
//!
//! - [`contract`] — `OSS-RELEASE.md` schema + normalizer (port of
//! `check-oss-release.py`); [`contract::schema`] is the ONE canonical serde
//! model (ADR-0003).
//! - [`facts`] — deterministic repo-fact detector (port of
//! `infer-repo-facts.py`), behind the repo ports.
//! - [`audit`] — readiness scoring over the normalized contract + facts.
//! - [`release`] — the resumable per-ecosystem release-cut engine (ADR-0002):
//! sealed plan, phase-barrier coordinator, event-sourced journal, reconcile.
//! - [`protocol`] — the versioned public JSON/JSONL envelopes + DTOs (§10/§12),
//! versioned independently of the internal domain types.
//! - [`ports`] — the injected effect seam (`CommandRunner`, `Clock`, `IdGen`,
//! `RegistryQuery`, `Fs`, `GitRepo`) so each domain is testable without
//! touching the real filesystem, git, network, or clock.
//!
//! `ossctl-core` is the canonical library surface, so public items must carry
//! doc comments (`#![warn(missing_docs)]`); level policy otherwise lives in the
//! workspace `[workspace.lints]` table.
pub
pub use ;