tiffany.systems

Publication policy, as code

These rules run in the build. If one blocks, nothing is published — the rule is not waived and there is no override path in the pipeline.

Each rule is deterministic. None of them consults traffic, downloads, recency, a model's opinion, or a score. A rule that cannot reach a decision fails closed, which here means the object is treated as unpublishable.

R01 — Release classification must be explicit and recognised

Every publishable object carries one classification from the versioned ontology. Absent, unknown or ambiguous classification is treated as INTERNAL.

R02 — No child object may be more restricted than its publication

Evidence and artifacts attached to a published claim must themselves be publishable. A PUBLIC claim may not carry an INTERNAL artifact.

R03 — Qualification must be earned by the epistemic record

QUALIFIED requires controlled repeated evidence, non-incomplete provenance, and at least one executed falsifier. QUALIFIED_AT_CURRENT_SCOPE additionally requires an enumerated tested scope and a stated boundary.

R04 — Replication state requires a matching replication object

A claim may only assert independent replication when a replication object exists whose people, implementation and data are all INDEPENDENT. Full replication additionally requires every claim component covered and the equivalence criterion fixed before execution.

R05 — Causal level requires an intervention with a control

INTERVENTIONAL or stronger requires at least one evidence object of kind EXPERIMENT carrying a named control. Causal verbs in public prose are restricted to claims at INTERVENTIONAL or above.

R06 — Public prose may not exceed the structured record

Title, statement and plain-language text are checked against a fixed restricted vocabulary. A hit is rejected deterministically; no model judgement is involved.

R07 — Plain language may simplify, never strengthen

The plain-language rendering must retain every hedge present in the canonical statement, and must not introduce a certainty term the statement does not carry.

R08 — A claim-level status may not imply support its components lack

If any component is UNSUPPORTED, UNMEASURED or CONTRADICTED, the claim may not sit above EXPERIMENTAL, and the coverage map must be rendered next to the status.

R09 — Anything above EXPERIMENTAL must be falsifiable in public

At least one registered falsifier, stated concretely enough that a third party could execute it.

R10 — Every artifact carries a licence and a content digest

Ambiguous ownership is non-releasable. An artifact without a sha256 cannot be verified and is therefore not evidence.

R11 — Asserted provenance completeness must match the recorded chain

COMPLETE requires every chain step to carry input and output digests. PARTIAL requires at least one recorded step. A sanitised step may never disclose its private input.

R12 — Demo fixtures are unmistakable and excluded from scientific surfaces

A DEMO_FIXTURE object must set demo:true, must be excluded from every real index, feed and API, and must not be reachable from a route that implies scientific release.

R13 — Lifecycle state must match its required companion objects

SUPERSEDED requires superseded_by. WITHDRAWN requires a withdrawal record with reason, authority and time. FALSIFIED requires a falsifier with status EXECUTED_FAILED.

R14 — Every internal reference must resolve

Component evidence_refs, replication evidence_refs, falsifier evidence_refs and evidence artifact_refs must name objects that exist in this version.

R15 — Blocking evidence debt caps the asserted status

Evidence debt is a typed obligation, never a score. Debt that blocks a status component prevents that status from being asserted.

State-machine invariants

Checked across consecutive versions of a claim identity, in addition to the rules above:

Machine-readable rule list. The implementation is tools/lib/policy.mjs in the site repository, and it is the same file that runs in the build — there is no second copy that could drift from this page.