# description
A post — the primary content type in DFOS. Covers short posts and long-form posts via the format discriminator.

# properties.format.description
Immutable content format — set at creation, never changes. Determines rendering and interaction semantics. Comments and replies are deliberately NOT post/v1 surface — threaded content arrives as its own schema (with signed target linkage), not as additional format values.

# properties.publishedAt.description
Asserted original publication time of the content (ISO 8601). Distinct from the operation's createdAt, which records when the operation was signed: a chain anchored after the fact carries the original publication time here while its genesis operation truthfully records the later anchoring time. Assertion-tier like credits — the operation signer asserts it; the protocol verifies the signer, not the claim. Author-revisable: a later revision may change it (deliberate back-dating or correction) — the operation log preserves every previously committed value, so re-dating is always auditable.

# properties.title.description
Post title. Typically used for long-post format.

# properties.body.description
Post body content — markdown (CommonMark) text. May embed attachment://<id> refs inline; each should have a corresponding attachments entry carrying the verifiable reference.

# properties.credits.description
Ordered authorship credits. Array order is display order; the first entry is the primary author. Omit entirely for unattributed content. Credits are the assertion tier of the authorship lattice — the operation signer asserts them; a credited DID may upgrade its credit to proof via a claim operation.

# $defs.media.properties.uri.description
Canonical reference to the media — an attachment://<id> ref (opaque, host-scoped) or any other URI. Always present.

# $defs.media.properties.cid.description
Optional content commitment — CIDv1, raw codec (0x55), sha2-256, base32 lowercase, computed over the media bytes exactly as stored/served. May be absent when no cid has been computed for the media.

# $defs.media.properties.href.description
Optional resolution hint — a plain URL where the bytes may currently be fetched. Implementation-dependent and non-normative; carries no integrity promise.

# $defs.credit.properties.label.description
Free-text role label — display vocabulary, not an enum (e.g. "author", "editor", "photography").