Skip to content

Trust model & tiers

binder maps corpus-native provenance into the OKF v0.2 trust vocabulary, preserves existing trust frontmatter losslessly where it recognises the fence, and derives trust tiers and staleness on demand. It never stores a credibility score, and where the fence is recognised it never fabricates provenance (spec §5.1).

That preservation is bounded, and the bound matters if you depend on binder for provenance. Lossless preservation is scoped to files whose frontmatter binder recognises and that need no read-boundary normalization: the fence opens with --- and a newline, LF or CRLF, at the very start. A leading UTF-8 BOM or a lone-CR (classic-Mac) fence is now recognised via read-boundary normalization (#124), so the verified: attestation it guards is preserved rather than demoted to body — but because that normalization (BOM strip, lone-CR to LF) does not preserve the original encoding, it is disclosed non-optionally rather than passing as a silent round-trip: a normalized signal plus a top-level advisory in the run report. That advisory never gates, under --strict or otherwise (Strict mode). A file with no frontmatter fence at all is still read as plain and synthesized over. See Lossless frontmatter round-trip.

Field Shape Notes
generated { by, at } Provenance of the producing run. by follows the actor convention; at is an ISO 8601 datetime. binder stamps { by: "binder/<ver>", at } only when absent.
verified { by, at } or a list of them Verification events. A bare mapping is treated as a one-element list. Drives the trust tier.
sources list of { id, resource, title, author, usage_count, last_modified } resource is required within an entry; author follows the actor convention; last_modified is a YYYY-MM-DD date.
status draft | stable | deprecated Absent ⇒ stable (spec §5.4).
stale_after YYYY-MM-DD Absolute date; drives staleness.
usage_window { from, to } A date range; both bounds are YYYY-MM-DD.
Attested-Computation family runtime, parameters, computation, executor, attester Preserved and shape-checked. A concept of type Attested Computation requires runtime (advisory). binder does not execute attestations (no runtime).

The actor convention (spec §7): "<producer>/<version>" for tools/agents (e.g. binder/0.3.0, reference_agent/gemini), or one of the human:, process:, team: prefixes for people, processes, and teams (e.g. human:alice).

Tiers are computed from verified, never stored:

Tier Condition
human-reviewed at least one verified[].by uses the human: prefix
machine-confirmed one or more verified events, none by a human: actor
unverified no verified events

A concept is stale when today >= stale_after (using --today, else now; SOURCE_DATE_EPOCH honoured). A concept without stale_after is never stale.

All mapping is off by default, deterministic, and additive (original keys are preserved):

  • --source-keys "source,url,author" — each named frontmatter key becomes a sources entry. The author key maps to a source author; every other key maps to a source resource.
  • --map-citations — list items under a body # Citations heading (any level) become sources entries: a markdown link yields { title, resource }, a bare URL yields { resource }, other text yields { title }.
  • --map-draft — a draft: true marker sets status: draft, but only when status is absent (it never clobbers an existing status).

Mapped sources are de-duplicated against existing sources by (resource, title, author).

For the full trust surface (declarative lifecycle flags, writing a verified stamp, status canonicalization, and trust well-formedness advisories), see the user guide.