{
  "claim": "There is no cardinality limit in the System One shape. There are five numbers in five repositories, produced by five unrelated mechanisms, and one of the five is the absence of a limit. The often-repeated explanation for the smallest of them — that 16 is how many letters survive as single tokens — is wrong, and the committed artifacts say so.",
  "method": "Each ceiling is read out of the source that enforces it: a constant, a validator, a model card, a vendor doc, or a safetensors shape. The openjev entry is checked against its own committed predictions: across all 814 rows the answer-slot token ids run 32, 33, 34 … 39 for A through H, consecutive and with no gaps. Eight letters is as far as the committed rows go, so anything past H is inference — but the readout's own _slot_ids guard refuses to run unless each letter is one exact round-trip token, so nothing about the vocabulary needs the constant to stop at 16.",
  "captured": "2026-09-19",
  "note": "The last row is the interesting one. A head whose final layer is Linear[..., 1] has no cardinality at all: the softmax is taken over however many options the caller sent, and nothing in the weights moves when that number changes. Any project that hit a ceiling chose to have one.",
  "columns": [
    {
      "key": "who",
      "label": "model or repo"
    },
    {
      "key": "cap",
      "label": "ceiling",
      "align": "right"
    },
    {
      "key": "cause",
      "label": "what actually enforces it"
    },
    {
      "key": "check",
      "label": "how to check"
    }
  ],
  "rows": [
    {
      "who": "openjev (vocabulary readout)",
      "cap": "16",
      "cause": "LETTERS = \"ABCDEFGHIJKLMNOP\" — a 16-character string constant, and a validator twenty lines later that reads its length",
      "check": "src/semif_phase1/core.py, lines 11 and 32"
    },
    {
      "who": "Laya 421M",
      "cap": "~20",
      "cause": "a recommendation, not a check: all options live in one 512-token sequence, and markers past the limit are silently dropped",
      "check": "BENCHMARKS.md \"Keep choice questions under ~20 options\"; laya/common.py truncates markers"
    },
    {
      "who": "Jev 1.13",
      "cap": "255",
      "cause": "a served product limit, with a documented two-stage fallback above the point where one pass is too slow",
      "check": "docs.typesafe.ai — the Choice primitive, plus the Wikiracing note in the launch post"
    },
    {
      "who": "system-one-mini",
      "cap": "fixed K",
      "cause": "the answer set is welded into the head at training time: final layers of [2, 768], [2, 768], [5, 768], [5, 768], [2, 768]",
      "check": "the safetensors header; the card says so too"
    },
    {
      "who": "CUA-S1, open-jev-deberta",
      "cap": "none",
      "cause": "one scalar per option. The head's output dimension is 1, so the option count is a loop bound rather than a weight",
      "check": "head.safetensors: 2.weight is [1, 1024]"
    }
  ]
}
