Canonical records
Thepresschain-models repository provides Rust records that are useful at API, projection and integration boundaries. They translate lower-level protocol state into named fields while preserving the identifiers and relationships applications need.
CapsuleRecord
Current fields include:EvidenceRecord
Current evidence projections include:ContributorRecord
Current contributor projections include:share_bps as an integer. Convert to a display percentage only at the UI boundary.
Metadata envelope versus projection record
Canonical Capsule metadata is publication input. It is normalized and hashed before or during publication.CapsuleRecord is a read model that may include convenient title, summary, canonical URL and cover fields.
Do not attempt to reproduce an on-chain metadata hash by serializing a transformed projection. Use the canonical metadata envelope and canonicalization rules.
JavaScript serialization
Large EVM integers and 256-bit identifiers require careful JSON handling. A practical boundary representation is:Add projection provenance
When an API must be auditable, attach chain coordinates beside the semantic record:Compatibility discipline
Treat changes to canonical records as versioned API changes when they affect serialized shape or meaning. Adding a convenience UI field and changing the semantics ofstatus are not equivalent changes.
A strong projection layer makes those distinctions explicit instead of depending on every client to infer them.