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_diris always present, even for non-fragmentmodes. - Contract
- The canonical, fully-defaulted,
targets-expandedOSS-RELEASE.mdcontract. - 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 → registrypublish destination.
Enums§
- Adapter
- The release tool pinned for a
Targetso it is not re-inferred each cut. - Changelog
Mode - How the changelog is produced (SCHEMA.md §1).
- Changelog
Source - The changelog’s structured input (SCHEMA.md §1).
- Contribution
Provenance - Contributor sign-off requirement, read by
/oss-contributing. - Dependency
Bot - Which dependency-update bot
/oss-ciemits. - Distribution
Adapter - 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-triggeredrelease.ymlthe family must NOT regenerate — hence first-class in the contract. - Docs
Site - Optional documentation-site generator (SCHEMA.md §1); production-tier.
- Ecosystem
- A packaging ecosystem.
homebrewis a distribution target, never an ecosystem. Listed in the canonical order used for stable de-dup/expansion. - Health
Badge - A README health badge (SCHEMA.md §1). Every badge needs its producer enabled (floor 4).
- Installer
- An installer flavor a
Distributionemits.homebrewrequires aDistribution::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. - Provenance
Level - Build-provenance level (SCHEMA.md §1).
slsa-l3is production-only (floor). - Registry
- A publish destination for a
Target(SCHEMA.md §1). - Release
Layout - Repository release layout (SCHEMA.md §1).
monorepodrives per-package versions/tags and flips the node adapter default tochangesets. - Release
Model - Release trigger model (SCHEMA.md §1).
autoinstalls an on-merge workflow; it never publishes from a chat turn. - Status
- Machine-readable approval gate (SCHEMA.md §1).
/oss-initwritesdraftand stops; a human flips it toapproved. Mutating members refuse a draft (they pass--require-approved). - Versioning
Base - Base versioning scheme (SCHEMA.md §1). A
calver:<pattern>config splits intoCalver+ a separateContract::versioning_pattern; the wire form never carries thecalver:prefix.
Constants§
- DEFAULT_
CROSS_ PLATFORM_ TARGETS - The cross-platform default
Distribution::platformsset materialized when a distribution block omitsplatforms: macOS (aarch64+x86_64) and Linux (aarch64+x86_64). This is the KEYSTONE of the cross-platform install requirement — a distribution that OMITSplatformscovers Linux by default, so a repo that never thinks about it still ships Linux binaries. (A repo that setsplatformsexplicitly owns its own coverage; the cross-platformaudit— 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_versionthis build knows how to read.