ADR-083: The Model → Pokémon Registry and Swarm Operational Tasks

Field Value
Decision ID ADR-083
Initiative unsorry — broadening swarm work beyond proofs; gamifying the model distribution
Proposed By unsorry maintainers (companion to guild issue agenticsnz/unsorry-guild#20)
Date 2026-06-22
Status Accepted

Context

The leaderboard publishes a model distribution (docs/metrics/leaderboard-ui.jsonmodels[]): one row per provider/model that has run proofs (e.g. claude / opus, python / sympy). Today those rows are anonymous strings — no identity, no depth, nothing to click through to. The guild wants to gamify them: give each model a memorable Pokémon identity (sprite, description, a researched profile) and a model page.

More interestingly, the swarm has only ever done one kind of work — discharge an open Lean goal. Producing and maintaining these identities is not a proof; it is operational work (research a model, pick a unique Pokémon, write a record). This ADR introduces that second class of work and the artifact it produces.

The fixed end of the funnel the guild consumes is the existing metrics-artifact contract: a JSON file under docs/metrics/, served by Pages and read by the guild with a raw-GitHub fallback.

WH(Y) Decision Statement

In the context of a swarm that publishes an anonymous model distribution and performs only proof work,

facing a request to give each model a unique, researched Pokémon identity and a desire to let the swarm take on maintenance work it can pick up like any other task,

we decided for a new class of operational work package — a swarm/housekeeping.sh script that run.sh runs first, before the proving arms, which for each unnamed model researches it (open/closed source, publisher, country, parameter size, canonical link) and assigns it a unique Pokémon, publishing the result to docs/metrics/model-registry.json as the single source of truth the guild reads — with the atomic unit being one Pokémon for one model = exactly one PR, gated by a deterministic validator (schema · Pokémon validity · uniqueness · completeness),

and neglected (a) hand-curating identities in a static file (does not scale, goes stale, not swarm work); (b) a live frontend-side PokéAPI lookup per render (couples the guild to a third-party API at request time and cannot carry the researched profile); (c) modelling naming as a claimable proof-style goal with claims/ + Gate B (heavyweight; naming is not a proof and needs no claim TTLs); (d) per-record registry files aggregated by a generator (the operational task is operator-driven and serial, so a single committed file with a one-entry-per-PR gate is simpler and race-free),

to achieve a self-maintaining, swarm-generated registry that broadens what the swarm does, keeps the guild a pure read-only consumer, and assigns each model a durable, unique identity with a human-legible rationale,

accepting that the registry is a single committed file edited one entry per PR (so naming is serialised — by design, one Pokémon per work packet); that a Pokémon name, once assigned, is permanently reserved (uniqueness is monotone); and that the appropriateness of a choice depends on the agent’s research and is not machine-checkable (only validity, uniqueness and completeness are).

Decision detail

Consequences

Dependencies