Cardano Library Conformance Constitution
Core Principles
I. Falsification Before Trust (NON-NEGOTIABLE)
Every check MUST be shown able to fail before it is trusted. Each check is
exposed as an app accepting FALSIFY=1, which mutates a required
expectation into one that cannot be satisfied; the check MUST be observed
failing under that mutation and passing again without it, and the
observation MUST be journalled. A check that has never been seen red is not
evidence, whatever colour it currently reports.
II. Frozen Evidence Is Immutable
Raw probe handoffs, gap matrices, and audit reports under static/ are
preserved byte-for-byte. They MUST NOT be edited, reformatted, corrected,
or regenerated. New understanding is added by wrapping: a new file, a new
page, a new check that supersedes the reading. The record of what was
observed, and when, survives the conclusions drawn from it.
III. Pinned Claims, Explicit Unknowns
Every claim MUST name the version or commit it was established against, and
flake.lock MUST fix that source and its content hash. What was not probed
is stated as NOT-PROBED, and a surface whose evidence cannot support an
executable check is marked static-only with the reason given. Absence of
evidence MUST NOT be presented as verified capability, and a limitation is
recorded as a limitation rather than omitted.
IV. Ledger Validity, Not Byte Equality
Byte equality between libraries is an explicit non-goal. Cardano admits legitimate encoding differences, and the minimum fee is a function of each transaction's actual bytes. The conformance claim is that each produced transaction independently satisfies the applicable ledger-level structural, fee, and value rules, re-derived by independently pinned code.
V. Two Kinds of Conformance
Interface conformance is established by pinned checks over source evidence; behavioral conformance is established by runnable examples. Neither substitutes for the other: a present declaration does not prove the loop converges, and a converging example does not prove the declaration is the documented one. A claim states which kind of evidence supports it.
VI. The Default Gate Stays Light
nix flake check MUST remain runnable by any skeptic without special
infrastructure. Source-evidence checks stay cheap inspections of pinned
input store paths. Heavy closures — compilers, toolchains, runtimes, and
anything requiring a live node — live behind an explicit tier that is named
and documented, never silently attached to the default gate.
VII. Neutrality: Capabilities, Not Rankings
The matrix classifies capability shapes — SUPPORTED,
EXPRESSIBLE-WITH-EFFORT, NO-HOOK, NOT-APPLICABLE, NOT-PROBED — and
MUST NOT rank, score, or recommend libraries. NOT-APPLICABLE is a
statement about intended scope, not a defect. A cell flips only by PR with
a check as proof; maintainers are welcome to contribute their own cells on
the same terms.
VIII. Floating Mode Is the Drift Detector
Pinned mode answers whether the documented claim still matches its evidence pin. Floating mode answers whether current upstream still has the same capability shape. A failing absence check means the capability may now exist: inspect upstream, then update the skill and the matrix. A failing presence check means a possible breaking regression. Floating red is review evidence, and MUST NOT be resolved by weakening the check.
IX. Record Primacy (NON-NEGOTIABLE)
Documentation, specifications, vision, and acceptance outrank implementation, always. Code is regenerable from a good record; the record is not regenerable from code. Every PR MUST ship the documentation needed to explain and verify its change in the same diff. Scope cuts land on implementation, never on the record that defines the intended outcome and its acceptance.
Evidence and Tiers
- One root Nix flake is the unified gate for every domain.
- Each domain owns its evidence, examples, and cross-validation, and keeps its claim map, falsification protocol, floating-drift commands, and known limits in its own README.
- Checks are exposed both as flake checks and as strict-shell apps, so any single claim can be run and falsified in isolation.
- Cross-validation is performed by independently pinned code, not by the library that produced the artifact.
- Human judgment that a source-string check cannot establish — wording, corpus policy, caveats, cross-artifact consistency — is preserved as static audit evidence and labelled as such.
Change Workflow
- A capability claim or matrix cell flips ONLY in the same PR as the check that establishes it. The corresponding gap-matrix documentation page MUST update in that same diff; documentation and matrix cells follow the check, never lead it.
- New checks land with their falsification observation.
- Scheduled floating runs open or update a drift issue with the full log; drift is triaged as review evidence and closed by updating claims, not by relaxing expectations.
- Removing or weakening a check requires stating in the PR what evidence replaces it.
Governance
This constitution supersedes conflicting practice in this repository. Every PR is reviewed against it, and a deviation MUST be justified in the PR description rather than absorbed silently.
Amendments are made by PR editing this file. Versioning is semantic: MAJOR for removing or redefining a principle, MINOR for adding a principle or materially expanding guidance, PATCH for clarifications and wording. The version line below is updated in the same PR as the change it describes.
Version: 1.1.0 | Ratified: 2026-08-19 | Last Amended: 2026-08-20
The canonical copy of this constitution lives at
.specify/memory/constitution.md in the repository; this page renders it
unchanged. Amendments are made there, by PR.