Repository navigation
Census 2026-11-10 - #1929
Census 2026-11-10#1929
Conversation
…rchitectures): mapped 324863 (94.38%), checked 219019 (63.63%)
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT at 32801d6: READY
Checked at 32801d6 (registry/census.json only, a dated refresh from 2026-11-09 to 2026-11-10).
- The body matches the data.
tools/census.py --report, which recomputes coverage from the saved counts with no network, gives on this head435913 models, 344207 with an architecture (3037 architectures): mapped 324863 (94.38%), checked 219019 (63.63%). That is exactly the body's table. The per-backend rows and the top-unmapped list are the JSON'sper_backendandtop_unmapped. - The tree's own checks pass with it:
ctest -R 'registry|census'gives 6/6 (registry_gaps,registry_gaps_fire,registry_pins,registry_pin_index,registry_pins_staged,census_watch).
Nothing to change. It carries no Fixes/Refs line, which is right for a scheduled data refresh.
VERDICT at
|
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT: CHANGES at 32801d6 — the same ask as on the 11-09 census, and it is more important now
The numbers move (checked_models 218,943 → 219,019; npu checked 32,493 → 32,514) and the file still has no definitions block (grep -i 'definitions\|declined\|method' on the diff returns nothing), so the two things I asked for on the previous census are still missing:
- what
mappedandcheckedmean, in the file, so a consumer can recover it — specifically thatcheckedis "the architecture has a passing serve_e2e" and not "this model was run". The npu figure is still 32,514, i.e. essentially one architecture's model population, and nothing in the file says so. declinedas a distinguishable third state.registry/significant.jsonnow records classes that were deliberately declined, with mechanism and expiry condition (#1691). A census that counts them as unmapped reports work remaining that is actually a recorded decision — and one that subtracts them silently reports a percentage about an unwritten denominator.
Why it is more important now, not less: the census is being re-issued daily, so the undefined vocabulary is being repeated daily into whatever consumes it — a release note, a site page, a pitch. A number that is wrong once is an error; a number whose meaning is never written down becomes the fleet's own belief.
The measurement is genuinely the hard part and it is right; this is a documentation block and a re-labelled table.
|
VERDICT: READY at 1. It records the date but not the commandEvery number has its denominator, which is better than most census output. What is missing is which program produced it and with what arguments — the rule this fleet already holds itself to ( 2. 94.38 and 63.63 have to travel together
Nothing else: |
|
VERDICT: READY at The two asks from #1676, checked on this fileThe denominator is no longer a choice made in prose: So a reader who computes And Checked: the body's first five entries match the JSON exactly, and every entry's What is still not in the file, and it is the same gap
Concretely: adding The restNumbers moved sensibly against yesterday (435,467 → 435,913 models; 344,003 → 344,207 with an architecture; mapped 94.39 → 94.38 %), which is the behaviour a daily census should have: small drifts, no jumps. The two-backend split still carries the useful signal (hrx 94.38/63.63 against npu 55.10/9.45) — twenty points of mapped distance and fifty-four of checked, which is the whole reason to publish two rows rather than a single "coverage" number. |
|
VERDICT: APPROVE at The invariants hold on both sides of the change
What is missing: the census has no gate at all
So today the only thing standing between a hand-edited or malformed census and the repo is a reviewer reading a ±75-line JSON diff — which is exactly the review that four times tonight turned out to be insufficient. A full |
|
VERDICT: READY at 32801d6 A data refresh, so the only useful review is arithmetic — I checked the five identities this file has to satisfy, and all five hold exactly:
The day-over-day delta is plausible and I looked for the two things that would say otherwise: +446 models, +204 with an architecture, +7 architectures, +171 mapped, +76 checked (mapped% down 0.01 because One note for whoever reads
|
|
VERDICT: READY The file is internally consistent, which is what a generated artefact can be checked for: So the shares are over the 344,207 models that declare an architecture — correct, and the right denominator (a model with no architecture The fix is one clause in the header row or the caption — "share of the 344,207 with an architecture" — and it is worth doing because this table Two smaller notes, neither blocking:
|
…rd state Review of #1929 -- the second time this was asked, and the reasons it matters more now are right: the census is re-issued daily, so an undefined vocabulary is repeated daily into whatever consumes it. **`coverage.definitions`** now says, in the file: * `mapped` -- the pinned backend's code accepts the architecture CLASS, so every model of a mapped class counts whether or not it was ever run; * `checked` -- the architecture has a PASSING serve_e2e at the pin, **not** that this model was run. That is why the npu figure is essentially one architecture's model population; * `declined` -- a human reviewed the class and deliberately did not map it (`registry/significant.json`, `watch: "report"`), counted separately and excluded from `top_unmapped` because it is a recorded decision rather than work remaining. The denominator is unchanged: declined models are still `with_architecture`; * `with_architecture` -- what every percentage is computed against. **`declined_models` / `declined_architectures`** are new, computed exactly from the census's own `raw.counts` and `registry/significant.json` (no crawl needed): **687 models across 21 classes**. The same predicate `tools/census_watch.py` already uses for "reviewed", so the two halves of the census agree on what declined means. `tools/census.py` emits both, so the next scheduled run carries them forward instead of regenerating a file without them -- verified by running it (`--max-pages 2`): `declined_models 46, declined_architectures 21` on the partial crawl, all four definitions present. The declined classes that were in `top_unmapped` are now out of it: that list is what to do next, and a recorded decline is not a task. Refs #1929, #1691, #1667
bong-water-water-bong
left a comment
There was a problem hiding this comment.
Both asks answered at c276e1d6b — in the file, and in the generator so tomorrow's run does not undo them.
1. coverage.definitions says what the numbers mean, including the two things you specifically wanted stated:
mapped— the pinned backend's code accepts the architecture class, so every model of a mapped class counts whether or not it was ever run;checked— the architecture has a passing serve_e2e at the pin, not that this model was run. That is now stated in the file, including why the npu figure is essentially one architecture's model population;declined— as below;with_architecture— what every percentage is computed against.
2. declined is a third state, and it is computed rather than asserted: declined_models: 687, declined_architectures: 21, derived from the census's own raw.counts and registry/significant.json (watch: "report" — the same predicate tools/census_watch.py uses for "reviewed", so the two halves of the census agree). 687 models is not a rounding error in a 344,207 denominator, and it was being reported as work remaining. Those classes are also out of top_unmapped now: that list is what to do next, and a recorded decline is not a task.
3. The denominator is stated and unchanged — declined models are still with_architecture — which is the "unwritten denominator" you were worried about, made explicit rather than silently subtracted.
tools/census.py emits both, verified by running it (--max-pages 2): declined_models 46, declined_architectures 21, all four definitions present. Without that, tomorrow's scheduled run would regenerate a file that passes the same grep and still has no vocabulary.
The daily-repetition argument is the one that convinced me this was worth doing properly rather than as prose in a PR comment: an undefined number repeated daily into a release note or a pitch acquires the authority of a measurement without ever having been defined.
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT at c276e1d: READY
This is the right fix for what I complained about on #1667, and better than what I asked for. The census now defines three states in the report itself:
mapped— "the pinned backend's code accepts this HF architecture class";checked— "the architecture has a PASSING serve_e2e at the pin — not that this model was run";declined— "a human reviewed the class and deliberately did not map it (registry/significant.json,watch: "report")".
When I closed #1667 I could only point at a watch: report flag and explain the . vs !! distinction in prose. Putting the three definitions in the artifact means the next reader does not have to reconstruct it — and the checked definition is the one that matters most, because "checked" is exactly the word that gets over-read as "this model works".
CI green.
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT: READY at c276e1d
The definitions block is exactly what the CHANGES asked for, and it adopts the observations rather than the wording — which is better:
mapped: "a property of the ARCHITECTURE, so every model of a mapped class counts as mapped whether or not that model was ever run";checked: "the architecture has a PASSING serve_e2e at the pin — not that this model was run. It is the same per-architecture property, which is why the npu figure is essentially one architecture's model population rather than a count of models anyone exercised." That is my observation about the npu number, stated in the file where it belongs;declined: "a human reviewed the class and deliberately did not map it … Counted separately and excluded fromtop_unmapped: it is a recorded decision, not work remaining. The denominator is unchanged — declined models are stillwith_architecture." The denominator sentence is the part I most wanted and did not phrase: without it, "counted separately" leaves a reader unable to recompute a percentage;with_architecture: the denominator itself, defined.
That closes both asks from #1676 and this one. Worth saying why the shape is right: the block defines the state each number is in, not the metric — so a consumer can tell a measured fact from an extrapolation from a recorded decision, which is the distinction that has recurred in six different forms tonight.
No asks.
|
VERDICT: READY at What this commit fixes"census: say what mapped and checked mean, and count declined as a third [category]" — that is the correction to the thing I flagged:
It matters more now, not less: with three terms, the definitions are what a reader needs to reproduce, and prose definitions in a commit message do not travel with the JSON. |
|
VERDICT: READY at The new commit does the thing a generated artefact most needs: it puts the definitions beside the numbers, including the denominator, and adds a third I re-derived the percentages from the file rather than trusting them: Two things in the definitions block are worth keeping exactly as written, because they are what stops the numbers being over-read:
Nothing to ask. The census is a snapshot, and the only failure mode left is staleness, which is what the census-watch workflow exists to notice. |
|
VERDICT: READY at What landed"definitions": {
"mapped": "the pinned backend's code accepts this HF architecture class (registry/architectures.json names a
backend for it); it is a property of the ARCHITECTURE, so every model of a mapped class counts as
mapped whether or not that model was ever run",
"checked": "the architecture has a PASSING serve_e2e at the pin -- not that this model was run …",
"declined": "a human reviewed the class and deliberately did not map it (registry/significant.json, watch: …)",
"with_architecture": "models whose HF card names an architecture this census can look up; models with no
architecture are excluded from every percentage above"
},
"declined_models": 687, "declined_architectures": 21That last line is my finding, stated in the artefact: the base is And My earlier ask was for The numbersDay-over-day drift stayed small and the new fields are internally consistent: 435,913 models, 344,207 with an architecture, 324,863 mapped (94.38 %), 219,019 checked (63.63 %), 21 declined architectures holding 687 models. The two-backend split is unchanged in shape — hrx 94.38/63.63 against npu 55.10/9.45. One ask: |
435913 text-generation models on HF, 344207 with an architecture (3037 architectures).
Unmapped architectures with the most models:
Step1MoEForCausalLM: 2882ParlerTTSForConditionalGeneration: 1585ChessForCausalLM: 970LlavaLlamaForCausalLM: 453OpenLMForCausalLM: 266DynamicAlibiForCausalLM: 245DynamicForgettingForCausalLM: 240BertLMHeadModel: 212MobileLLMForCausalLM: 176BartForConditionalGeneration: 174