Publish an honest GSPC status for a Hugging Face model

The global board badge is a link to the GSPC catalogue, not a measurement of the model whose README contains it. A model-specific score is allowed only when a VALID signed cell names that exact model and immutable revision. Otherwise the model stays UNMEASURED or UNSIGNED.

Global board · 22 axes · 22 measured · 14 model-comparison · 8 deterministic-fact · live

unsigned model records staged
pipelines covered
HF models enumerable
22
axes (lid)

Two links with different scopes

The board link is safe to use now because it says what it is: the global board. The signed-cell badge is model-specific and must not be used until its card names the exact subject and revision.

Global board — navigation only

This dynamic badge pulls totals.public_count from GET /api/gspc. Its label says GSPC board; it does not grade or sign the model carrying the link.

[![GSPC board](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fcouncilof.ai%2Fapi%2Fgspc&query=%24.totals.public_count&label=GSPC%20board&color=0B1F33)](https://councilof.ai/gspc-scoreboard)

Subject-bound signed cell — conditional

Use a card badge only after the signed card body names the same model and immutable revision as the README. The badge reports the indexed signature state; quote a score only from the verified card itself.

![GSPC signed cell](https://councilof.ai/api/badge?card=<SIGNED_CARD_SHA256>&subject=<URL_ENCODED_OWNER%2FMODEL%40COMMIT_SHA>)

Add the honest status to your model

  1. Pin the subject as owner/model@revision. A display name or mutable branch is not enough.
  2. Look for a signed measurement card whose body names that exact subject, axis, instrument and run.
  3. If no run exists, publish UNMEASURED. If a run exists without a VALID subject-bound signature, publish UNSIGNED. Do not borrow the global board count.
  4. Only after the card verifies may you add its hash-bound badge and quote the score carried by that cell.
---
library_name: transformers
tags:
  - text-generation
---
[![GSPC board](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fcouncilof.ai%2Fapi%2Fgspc&query=%24.totals.public_count&label=GSPC%20board&color=0B1F33)](https://councilof.ai/gspc-scoreboard)
This link describes the global board, not this model.

Status: UNMEASURED

<!-- Only after a VALID card names this exact owner/model@revision:
[![GSPC signed cell](https://councilof.ai/api/badge?card=<SIGNED_CARD_SHA256>&subject=<URL_ENCODED_OWNER%2FMODEL%40COMMIT_SHA>)](https://councilof.ai/gspc-verify)
-->
# Your model README...

Get measured — the only path to MEASURED

A badge that says UNMEASURED is honest. A badge that says MEASURED requires:

  1. A frozen item bank of n ≥ 30 items published to a HF dataset.
  2. A run that scores one pinned owner/model@revision subject on the named bank and instrument.
  3. An Ed25519-signed card that binds that subject, axis, run and score (sha256(canonical body) == id, verify_signed_card VALID).
  4. Upload of the card under did:web:csoai.org#card-attestation-1.

Until then, the subject is UNMEASURED (no admitted run) or UNSIGNED (a run exists but no VALID subject-bound card does) — never 0.000 and never the global board score. GET /api/gspc is the global board authority; the signed cell is the model authority.

The badge enroller — the lane that scales to every model

The badger walks the public HF models API, writes an unsigned UNMEASURED discovery record per model, and stages it under scripts/badger/_queue/. Staging creates neither a score nor a badge entitlement. Promotion requires a subject-bound run and VALID signature; the signed-card ceiling is 3KB.

# Stage 10,000 text-gen UNMEASURED badges (already done 2026-09-03)
python3 scripts/badger/hf-eat-all.py --limit 10000 --pipeline text-generation

# Stage 5,000 VLM badges
python3 scripts/badger/hf-eat-all.py --limit 5000 --pipeline image-text-to-text

# All 4 pipelines + a full sweep is one cron entry away.
# The existing mill_hub_queue.py signs + uploads once HF_TOKEN is wired.

Want a checkable GSPC status for your model?

The badger is open-source. The signed card schema is public. Unknowns stay visible until a subject-bound measurement exists.

scripts/badger/hf-eat-all.py · harness/gspc-top100/mill_hub_queue.py

Does the badge mean a certificate?
No. Measurement, not certification. A model may say MEASURED only when a VALID signed cell binds its exact subject and revision to the run and score. UNMEASURED and UNSIGNED are honest; borrowing the global board count is not.
Who pays for this?
No one. Verification is free forever. Paid SKUs (insurer packs, EU AI Act packs, x402 signed evidence) fund the rail — they don't replace it.
What about my proprietary model?
The board link and verifier are public and free. A MEASURED claim still requires a pinned subject, a named instrument and bank, a captured run, and a VALID subject-bound card. Private evidence can remain private, but then the public result may be UNCHECKABLE rather than scored.
How do I dispute a result?
Open an issue at github.com/CSOAI-ORG/councilof-ai/issues with the card sha256. The corrections ledger is public at /api/corrections.