Skip to main content

Module schema

Module schema 

Source
Expand description

The ONE canonical serde model for OSS-RELEASE.md (ADR-0003 §1).

These types are the single normalization model that contract show, contract validate, audit, the facts consumers, and release planning all use — no second parser anywhere. Their serialized form is the canonical JSON contract every /oss-* member reads (SCHEMA.md §4, preserved byte-for-shape by the migration rule). Public wire access goes through crate::protocol::contract, which re-exports these types and owns the wire-version declaration so internals and wire can diverge under the migration rule (ADR-0001 §2).

Hot file (ADR-0001): a change here ripples to every family member. Every enum’s as_str form is the wire string; a change to one is a schema_version bump, never silent.

Structs§

Changelog
The changelog block of the contract (SCHEMA.md §1). fragment_dir is always present, even for non-fragment modes.
Contract
The canonical, fully-defaulted, targets-expanded OSS-RELEASE.md contract.
Distribution
The binary-distribution block: multi-platform GitHub-Release binaries, a generated installer set, and an optional Homebrew tap — produced by a tag-triggered release workflow (cargo-dist / goreleaser).
Release
The release block of the contract (SCHEMA.md §1).
Target
One concrete ecosystem → package → registry publish destination.

Enums§

Adapter
The release tool pinned for a Target so it is not re-inferred each cut.
ChangelogMode
How the changelog is produced (SCHEMA.md §1).
ChangelogSource
The changelog’s structured input (SCHEMA.md §1).
ContributionProvenance
Contributor sign-off requirement, read by /oss-contributing.
DependencyBot
Which dependency-update bot /oss-ci emits.
DistributionAdapter
The binary-distribution engine that produces multi-platform GitHub-Release artifacts plus a generated installer set (distinct from a registry Adapter). Owned by a tag-triggered release.yml the family must NOT regenerate — hence first-class in the contract.
DocsSite
Optional documentation-site generator (SCHEMA.md §1); production-tier.
Ecosystem
A packaging ecosystem. homebrew is a distribution target, never an ecosystem. Listed in the canonical order used for stable de-dup/expansion.
HealthBadge
A README health badge (SCHEMA.md §1). Every badge needs its producer enabled (floor 4).
Installer
An installer flavor a Distribution emits. homebrew requires a Distribution::homebrew_tap (floor).
Maturity
Master maturity dial that gates every member’s output (SCHEMA.md §1). Required — inference is /oss-init’s job, not the normalizer’s.
ProvenanceLevel
Build-provenance level (SCHEMA.md §1). slsa-l3 is production-only (floor).
Registry
A publish destination for a Target (SCHEMA.md §1).
ReleaseLayout
Repository release layout (SCHEMA.md §1). monorepo drives per-package versions/tags and flips the node adapter default to changesets.
ReleaseModel
Release trigger model (SCHEMA.md §1). auto installs an on-merge workflow; it never publishes from a chat turn.
Status
Machine-readable approval gate (SCHEMA.md §1). /oss-init writes draft and stops; a human flips it to approved. Mutating members refuse a draft (they pass --require-approved).
VersioningBase
Base versioning scheme (SCHEMA.md §1). A calver:<pattern> config splits into Calver + a separate Contract::versioning_pattern; the wire form never carries the calver: prefix.

Constants§

DEFAULT_CROSS_PLATFORM_TARGETS
The cross-platform default Distribution::platforms set materialized when a distribution block omits platforms: macOS (aarch64 + x86_64) and Linux (aarch64 + x86_64). This is the KEYSTONE of the cross-platform install requirement — a distribution that OMITS platforms covers Linux by default, so a repo that never thinks about it still ships Linux binaries. (A repo that sets platforms explicitly owns its own coverage; the cross-platform audit — not this default — flags a Linux-less explicit set.) musl over gnu for Linux: for a pure-Rust CLI a musl target links statically and sidesteps the glibc-version cliff — though choosing a musl target does not by itself guarantee a static build, and a repo with C/native dependencies (openssl-sys, libgit2, …) may need to override to gnu. Windows is a deliberate omission (a bonus a repo opts into by listing it explicitly, never the default). The set always contains at least one Linux triple.
DEFAULT_FRAGMENT_DIR
The changelog fragment directory materialized when the config omits it.
KNOWN_SCHEMA_VERSION
The contract schema_version this build knows how to read.