dev.malpercio.cards.witness

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.

Details · record, key tid
Kindrecord
Record keytid
Authoritycards.malpercio.dev
Indexed

Record

record · key tid

Properties

detail

string

Rejected only. Human-readable specifics, e.g. the URI of the item that won.

  • maxLength: 512

from

string · did

Sender of the transfer, if any.

give

requiredstring · at-uri

Root give this observation concerns.

holder

requiredstring · did

Repo owner of item. For accepted witnesses, the recognized holder after this hop.

hop

integer

Accepted only. 0 = received from provider, n = nth transfer.

  • minimum: 0

item

requiredref

The claimant's item as seen. Pinned so the observation stands even if the item is later deleted.

prev

ref

Accepted only. The accepted witness for hop-1.

reason

string

Rejected only. superseded: another item was already accepted at this hop. not-holder: the transfer's sender was not the recognized holder. expired: transfer.expiresAt passed before the item appeared. invalid: the records fail structural verification (recipient, CID, revoked give).

  • knownValues: superseded | not-holder | expired | invalid

seenAt

requiredstring · datetime

status

requiredstring
  • knownValues: accepted | rejected

The transfer as seen, absent at hop 0.

Similar lexicons

semantic match

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • 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).

  • 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.