At this level
dev.malpercio.cards ยท 6- dev.malpercio.cards.deck record An owner-curated collection of their own cards (binder, deck, showcase). Purely user-side; a verifier checks each item resolves to a valid give held by this DID.
- dev.malpercio.cards.give record Issuance of a single card instance or a sealed pack, written by the provider into its own repo. This record is the root of a card's provenance chain and its at-URI is the card's permanent identity. The rkey is a TID, so issuance order is implicit.
- dev.malpercio.cards.item record A card (or sealed pack) held by the repo owner. Not authoritative on its own: validity comes from the chain of strongRefs back to a provider give whose recipient matches the current owner at each hop. Blobs are the owner's local copies and must hash to the CIDs on the root give.
- dev.malpercio.cards.set record A card set manifest, published by a provider. Declares every card in the set with its rarity, supply cap, and canonical art. Print runs are auditable against this record.
- dev.malpercio.cards.transfer record Written by the current owner to hand a card to another DID. The recipient completes the transfer by writing a dev.malpercio.cards.item whose 'via' strongRefs this record. Repos are mutable, so an appview indexing the firehose resolves conflicting transfers of the same give (first seen wins).
- dev.malpercio.cards.witness record An appview's signed observation of a card changing hands, written into the appview's own repo. Triggered by a dev.malpercio.cards.item appearing on the firehose. Accepted witnesses form a prev-linked chain per give; exactly one accepted witness exists per (give, hop). Rejected witnesses explain why a claimant's item is not recognized. The chain is durable against player-side deletions and auditable by replaying the firehose.