Skip to the content

Vocabulary

Every record says what it rests on.

https://pansofica.com/vocabulary/record-status

The record status is a flag any system can carry beside a record about a person. It says what the record rests on, whether the person it is about has confirmed or disputed it, when it was last reviewed, and which document backs it.

Every term on this page has a stable address: the address of this page, then the term as a fragment. A value is never renamed and never reused.

The terms

One property, one shape, three members.

  • recordStatus

    The property a record carries, or one fact on a record. Its value is one record status flag.

  • RecordStatusFlag

    The flag itself: one status, the instant of the last review, and the document behind it.

  • status

    One of the five values of this vocabulary. A reader that meets any other value ignores the flag.

  • lastReviewed

    The instant of the newest review behind the status, in ISO 8601: the reading of the document, the subject’s confirmation, or a reviewer’s ruling on a correction. Empty when none is on file.

  • document

    The document the status rests on: the address it was published at and the SHA-256 digest of the bytes that were read. Empty for a status that has no document.

The five values

Each value has one meaning, and one phrase a page shows for it.

  • verified

    The fact was read from a document that a registry published.

    A page shows
    Verified from the commission's document
    Rests on
    The registry’s own document, held by its address and by the digest of its bytes.
  • reported

    The fact was published on the open web and is not yet backed by a registry document.

    A page shows
    Reported on the open web
    Rests on
    The page that published it. Reported facts are carried apart from verified ones and are never summed with them.
  • subject_confirmed

    The person the record is about claimed the record and confirmed this fact.

    A page shows
    Confirmed by the athlete
    Rests on
    The registry’s document and the subject’s own confirmation, which is kept with its date.
  • subject_corrected

    The subject filed a correction to this fact and a reviewer accepted it.

    A page shows
    Corrected at the athlete's request
    Rests on
    The correction the subject filed and the ruling of the person who reviewed it.
  • disputed

    A correction or a doubt is open. The fact stays on the record while it is reviewed.

    A page shows
    Disputed
    Rests on
    An open correction from the subject, or an open doubt about the fact. The status says that a dispute exists and nothing of what it contains.

The rules

  1. 01

    Derived, never declared.

    Nobody types a status in. It is worked out when the record is read, from what is on file: the document, the subject’s confirmations and corrections, a reviewer’s rulings.

  2. 02

    A dispute never removes a fact.

    A disputed fact stays where it is, marked as disputed, until a person has reviewed it.

  3. 03

    Only the subject can confirm or dispute.

    Only the subject of a claimed record can confirm it or dispute it, and only on their own record.

  4. 04

    Every change leaves a receipt.

    A confirmation, a correction and a ruling are each kept with who, what and when. Nothing is overwritten.

  5. 05

    The status says that, never what.

    A status says that something is disputed. It never carries the private detail of the dispute: not the note, not the reason.

How a system embeds it

Three forms of the same flag. Use the one your system already speaks.

A JSON member

Put one member beside the record, or beside each fact on it. The label is the status in words, ready to show.

JSON
{
  "recordStatus": {
    "status": "verified",
    "label": "Verified from the commission's document",
    "lastReviewed": "2026-03-16T09:30:00.000Z",
    "document": {
      "url": "https://registry.example/results/2026-03-14.pdf",
      "sha256": "5b1f0c9a7d3e4f6281a0b9c8d7e6f5a4b3c2d1e0f9a8b7c6d5e4f3a2b1c0d9e8"
    }
  }
}

A reader that does not know the member ignores it, so adding it breaks nothing.

A JSON-LD property

On a page that already carries JSON-LD, add this vocabulary to the context as a prefix and put the property on the person, or on each event.

JSON-LD
{
  "@context": [
    "https://schema.org",
    {
      "pf": "https://pansofica.com/vocabulary/record-status#"
    }
  ],
  "@type": "Person",
  "name": "Fixture Alpha",
  "pf:recordStatus": {
    "@type": "pf:RecordStatusFlag",
    "pf:status": {
      "@id": "pf:verified"
    },
    "pf:lastReviewed": "2026-03-16T09:30:00.000Z",
    "pf:document": {
      "@type": "CreativeWork",
      "url": "https://registry.example/results/2026-03-14.pdf",
      "sha256": "5b1f0c9a7d3e4f6281a0b9c8d7e6f5a4b3c2d1e0f9a8b7c6d5e4f3a2b1c0d9e8"
    }
  }
}

Every term resolves to its entry on this page. The vocabulary itself is published as JSON-LD at https://www.pansofica.com/vocabulary/record-status.jsonld

A signed link is a short signed statement of one record’s status, made by the service that holds the record. The badge is an image that reads the link and prints the live status in words.

Ask the service for a signed link by the slug of the record’s page:

GET https://api.pxl8.io/sports-data/fighters/record-status/link?slug=SLUG
HTML
<a href="https://pxl8.io/SLUG?rs=SIGNED_LINK" rel="noopener">
  <img src="https://www.pansofica.com/record-status/badge.svg?t=SIGNED_LINK" alt="Record status" referrerpolicy="no-referrer">
</a>

The signed link goes in twice: on the page address, which resolves to the subject’s page and carries the signed statement for anyone who wants to check it, and on the badge.

The image asks for no referrer, so the address of the page that embeds it is not sent with the image request.

The link is a compact JWS signed with EdDSA. Its claims are iss, sub, slug, status, lastReviewed, doc, iat, exp, where iss is the address of this vocabulary, sub is the id of the record and doc is the digest of the document.

How anyone verifies a link

  1. 01Fetch the public keys and pick the one whose kid matches the header of the link.
  2. 02Check the EdDSA signature of the link with that key.
  3. 03Check that exp has not passed.
  4. 04Compare slug and sub with the record you are looking at. A link for another record says nothing about this one.

Or ask the service: send the link to the verify address and read valid, expired and current, which is the status of the record right now.

What the badge never does

  • It sets no cookie.
  • It carries no tracking pixel and loads nothing from a third party.
  • It runs no script. It is an image of typeset words.
  • The application stores nothing per view.

Like any web server, the edge that serves the image keeps standard access logs for operations.

An expired link prints "link expired" and a link that does not verify prints "link not valid", so an embed degrades in words and never into a broken image.

The public key

Links are signed with an Ed25519 key. This is the current public key, read from the service that signs.

Ed25519 public key, SPKI PEMKey id: v1-05728ef0
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEA5qsoDWRA7V87ygLAqz+Uo2y9NPxu9ehPbZZebDwot5M=
-----END PUBLIC KEY-----

The full key set, as a JSON Web Key Set: https://www.pansofica.com/.well-known/record-status-keys.json

Stable addresses

These do not move. Each one sets no cookie and needs no key.

GET https://www.pansofica.com/.well-known/record-status-keys.json
the public keys
GET https://www.pansofica.com/record-status/badge.svg?t=
the badge, an SVG image
GET https://www.pansofica.com/record-status/verify?t=
a verdict on a link, and the live status
GET https://www.pansofica.com/vocabulary/record-status.jsonld
this vocabulary as JSON-LD

A reader on a server may use either host of this site, with or without www: one redirects to the other. A browser calling from another origin must use the host printed here, exactly. It is the one that answers without a redirect, and it answers any origin.

Tell us which records you keep.

We reply by email, from a person who can answer questions about the vocabulary.