Expand description
Public wire DTO for the deterministic repo-fact report (ossctl facts).
This is the versioned surface /oss-init (config generation) and the
readiness audit both read, so they never disagree on maturity or the gated
core (ADR-0001 §3). Its field names and shape are a faithful port of
homebase’s infer-repo-facts.py JSON — ecosystems, packages, has_ci,
tags, committers_total/committers_recent_year, inferred_maturity, and
the rest — because the prose /oss-init skill already relies on those exact
names (SCHEMA.md §4 “maturity inference signals”).
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). Unlike the contract document, the facts report has no
source-level document version of its own (it is derived, never authored),
so the envelope’s schema_version is the single version consumers gate on.
The report reuses Ecosystem and Maturity from the canonical
contract model rather than restating their wire strings: facts and the
contract must agree on "rust" / "mvp" down to the byte, and sharing the
one enum is how that agreement is made structural instead of coincidental.
Structs§
- Facts
- The deterministic repo-fact report — a pure function of
(repo tree, git HEAD), emitted byossctl factsand consumed by/oss-initandaudit. - Maturity
Signals - The two maturity truth-table outputs (SCHEMA.md §4). Both can be
false(the tie case), which resolves tomvp; they are never bothtrue(productionis checked first). - Package
- One detected package manifest and the name/version parsed from it.