Full name: coop.lexicon.draft.credential
A verifiable credential: an issuer's signed statement about one record in its subject's repo.
Stored by its subject, signed by the issuer (author ≠ signer). Field names follow community.lexicon.attestation and badge.blue: subject, record, issuer, notBefore, notAfter, signature. There is no kind field: the attested record's collection is the kind. With fields, digest is the CID of the canonical DAG-CBOR map of exactly those fields of the attested record, so an edit to any other field (a label) leaves the credential valid; without fields, cid pins the whole record. The signature covers dagcbor({$type, issuer, subject, record, fields?, digest?, cid?, notBefore, notAfter, revocation}) (ES256K, low-S, over sha256, 64-byte r||s, base64url without padding), never createdAt or where the credential is stored. For an outside verifier it binds only when its author is subject, the signature verifies under signature.key in the issuer's DID document, the issuer is endorsed by a root the verifier trusts (coop.lexicon.draft.issuerEndorsement), no record exists at revocation, and digest or cid match the attested record now. notAfter is metadata: a credential past it is not void by that alone. An issuer's own identity index is its operational binding ledger, kept from its issuance log; it is not derived from wallet records, and a copy of a credential in another repo binds nothing. Placed only in its subject's coop.lexicon.draft.space.credential at skey = the record key.