Repository navigation
census: OpenSci is a reviewed remote-code class, not a registry gap (engine#2171) - #2207
bong-water-water-bong wants to merge 1 commit into
Conversation
…engine#2171) The daily watcher reported `OpensciForCausalLM` as an uncovered architecture class. It is not a mapping gap: the model's config carries an auto_map pointing at its own modeling_opensci.py / configuration_opensci.py, so the pinned backends cannot accept the architecture without that custom code. Reviewed and deliberately not mapped, which is what registry/significant.json records -- the census then counts these models separately and excludes them from top_unmapped, because a recorded decision is not work remaining. Confirmed from the source rather than from the class name: architectures: ["OpensciForCausalLM"] model_type: "opensci" auto_map: AutoModelForCausalLM -> modeling_opensci.OpensciForCausalLM tools/registry_build.py --check-gaps: "none of the 38 reviewed significant classes is mapped without a reason" (rc=0), so the class is now recorded without silently widening the mapped set. One thing this commit does NOT do, deliberately: the census also carries a second spelling, `OpenSciForCausalLM` (7 models, against 121 for this one). It is a different class string from a different uploader and its own config was not read here, so it stays a reported gap rather than being waved through on the strength of a similar name. That is a follow-up with its own config check, not a second line in this entry. Refs #2171
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
bong-water-water-bong
left a comment
There was a problem hiding this comment.
READY at b9e07d2, with one thing to add before it lands.
I verified the rationale from the primary source rather than from the body, because the whole PR rests on it — auto_map is the difference between "another alias we should map" and "code we cannot run":
$ curl -sL https://huggingface.co/<the model>/raw/main/config.json
architectures: ['OpensciForCausalLM']
model_type: opensci
auto_map: AutoConfig -> configuration_opensci.OpensciConfig
AutoModelForCausalLM -> modeling_opensci.OpensciForCausalLM
AutoModel -> modeling_opensci.OpensciPreTrainedModel <- a third entry the body does not list
So the class really does ship its own modelling code, and the disposition is right. (The body lists two auto_map entries; the config has three. Worth having the third in the body since it is the one that makes "vendored or upstreamed" the only path.)
And "watch": "report" is precisely the predicate the watcher reads, not a convention that looks like it:
tools/census.py:125 declined_archs = {hf for hf, e in sig.items() if e.get("watch") == "report" and not ...}
tools/census_watch.py the same predicate, per its own comment
The one thing to add: a mention in docs/arch-gaps.md. The file's own about says these entries are "HF architecture classes reviewed as NOT aliases of a supported family (docs/arch-gaps.md)", and right now that reference is exact — I checked every one of the 37 classes against the page and all 37 are mentioned there (13 have their own ## section; the rest appear in grouped lists, which is why the counts differ). After this PR, OpensciForCausalLM would be the first class in registry/significant.json that docs/arch-gaps.md does not mention, so the file that explains why a class is deliberately unmapped would be silent about the one this PR adds.
It does not need a full ## opensci section — a line in whichever grouped list the other remote-code classes use, saying what the config proves: auto_map at three entries, so the class cannot be accepted by a pinned backend until the code is vendored or upstreamed. That is the sentence a person needs when the census flags it again next month and they are deciding whether to re-litigate it.
Not checked: whether the census's "1 uploader" grouping changes anything (it does not appear to be part of the predicate), and nothing on the device side — this is a registry-only change and should be.
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT at b9e07d2: CHANGES
cl-npurt, second verdict at this head (no verdict for over an hour when I started; the READY above landed while I was running it). The entry is right; the PR as it stands fails a test that runs in CI, and the red build here hides that because the job currently dies in apt (runner DNS) before it compiles anything.
The failure, at this head (checkout is the PR head itself):
$ python3 tests/census_watch_test.py # ctest `census_watch`
FAIL every one of the 38 reviewed classes is cited in docs/arch-gaps.md -- missing: OpensciForCausalLM
1 check(s) failed
$ git checkout origin/main && python3 tests/census_watch_test.py
all checks passed
tests/census_watch_test.py:321 requires every class in registry/significant.json to be cited in docs/arch-gaps.md. This PR adds the class to the registry and not to the page (git grep -i opensci -- docs/ is empty at this head and on main). So the mention the earlier review asks for as a nicety is a gate: once the runners resolve again, build goes red for this reason instead.
Fix: cite OpensciForCausalLM in docs/arch-gaps.md in this PR (the body's own paragraph is the text: remote-code class, auto_map to modeling_opensci.py, not mappable until vendored or upstreamed), then the test passes and the docs rule ("docs go in the same PR as the behaviour") is met too.
What I checked and agree with:
python3 tools/registry_build.py --check-gaps:none of the 38 reviewed significant classes is mapped without a reason, rc 0 (37 on main).python3 tools/registry_build.py --check-pins: passes.registry/census.jsonhasOpensciForCausalLM121 andOpenSciForCausalLM7 underraw/counts, as the body says; leaving the second spelling out is the careful choice.- The diff is the one entry, and it merges cleanly onto main.
I did not re-read the model's config myself; the earlier review did, and found a third auto_map entry worth adding to the body.
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT at b9e07d2: CHANGES
The JSON edit is right: registry/significant.json parses, the entry sits in classes (now 38, 24 with watch: report), and registry_build.py --check-gaps reads only classes + mapped_ok, so this records a decline without widening the mapped set. Leaving OpenSciForCausalLM (the other spelling) as a reported gap until its own config has been read is also right.
Blocking: the docs are missing. Every other reviewed class in significant.json has a "Reviewed : not an alias" section in docs/arch-gaps.md that names its entry, for example the sections at :383, :419, :451, :466, :480, :500 and :518. A script over the two files at this head finds exactly one class with no section: OpensciForCausalLM. The house rule is that docs go in the same PR as the behaviour, so please add the section, including the auto_map evidence from the PR body and the "remove the entry when the code is vendored/upstreamed" line the others carry.
Non-blocking: the family string says "1.7B 'nemotron-hq' recipe". Nothing in the PR shows where that comes from. Either quote the config or model card that says it, or drop it.
CI: build is red in "Tools for checkout and the build": apt could not find libpcre2-dev after 4 tries. That's the mirror (engine#1814), not this tree, so re-run the job.
Read-only review: I read the diff and the two files at this head; I did not run the tool.
…in from #2207) Folded into this PR rather than left as a second open PR for the same issue, under the 16:45Z lane cap (at most two open PRs per lane) -- the change itself is unchanged from #2207. The watcher reported OpensciForCausalLM as an uncovered architecture class. It is not a mapping gap: the model's config carries an auto_map pointing at its own modeling_opensci.py / configuration_opensci.py, so the pinned backends cannot accept the architecture without that custom code. Reviewed and deliberately not mapped, which is what registry/significant.json records -- the census then counts those models separately and excludes them from top_unmapped, because a recorded decision is not work remaining. Confirmed from the source, not the class name: architectures ["OpensciForCausalLM"], model_type "opensci", auto_map AutoModelForCausalLM -> modeling_opensci.OpensciForCausalLM. The other spelling the census carries (OpenSciForCausalLM, 7 models against 121) is deliberately NOT waved through here: exact-key matching is a stated design of census_watch.py ("there is no strip_arch either -- architectures.json is keyed by the HF architecture class, which is the key"), so it is a second reviewed entry needing the repo list from a census run, not a case-fold. tools/registry_build.py --check-gaps: none of the 38 reviewed significant classes is mapped without a reason (rc=0). Refs #2171
|
Folded into #2189 rather than left as a second open PR for the same issue — the 16:45Z cap allows two open PRs per lane and both of these serve #2171. The change itself is unchanged: commit Why folded here and not the other way round: #2189 owns the census behaviour and its test ( Nothing is lost. The one thing worth carrying into #2189's review: the census's second spelling ( |
…ry passes (engine#2171) 7c0f845 added OpensciForCausalLM to registry/significant.json without a row here. tests/census_watch_test.py requires every reviewed class to be cited in this file, so the head failed 1 check ("every one of the 38 reviewed classes is cited in docs/arch-gaps.md -- missing: OpensciForCausalLM"). The DNS-red CI hid it. The row records the remote-code reason, from the config of open-sci/open-sci-1.7b-nemotron-cc-1T-oh-dcft (auto_map to modeling_opensci), and notes that OpenSciForCausalLM is a separate exact key. Tests: 1 FAIL -> 262/262. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ches its paths (Fixes #2171) (#2189) * census: an answered FastFlowLM gap stays answered, and the d3 pin watches its paths (Fixes #2171) CI keeps no watcher state, so every scheduled run sees the whole FastFlowLM org as new. Each family docs/npu.md had already answered printed !! NPU FLM / !! NEW FLM again and re-filed the census issue the day after it closed. The 2026-11-11 run alerted on 31 packs, every one answered or tracked (#1786, #1788, #1780, #1783). - registry/flm_answers.json: the ledger's answers, keyed by the architecture a pack declares (by repo id for the config-less smolvla). An answered gap prints ". NPU FLM" / ". FLM" with its tracking issue and does not alert. A family with no entry still alerts. An answer cannot quiet a family the NPU route serves or a derivative drop. - support_pins.json: a pin may name `paths`; it then moves only when a commit touches one. semantic-router reviewed a9219240 -> 15b4fb5a (88 commits): the d3 package/model/decode files have the same blobs, and #6192's API versioning does not reach npu/systemone.h. - docs/npu.md: a row for every answer, including phi3, qwen2vl, gemma-embedding, the Qwen3_5Moe VLM class and Whisper, which had none. - tests: sections 27 and 21b (before/after on the 31 rows of run 43016580831, stale-answer and doc-row guards derived from the files). The alert-rule sections pass no answers explicitly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * census_watch: a watched path with no commit at the pin alerts (engine#2171) Review on #2189 (f993a57): a `paths` entry that matches nothing (a typo, or a directory renamed before the pin) gives [] at both commits, so that pin could never move and nothing said so. sweep_support now reads each watched path at the pin on every run (also when the head equals the pin), and a path with no commit there marks the pin moved with "watched paths with no commit at the pin (fix `paths`)". Tests 260 -> 262; the mutant that drops the check fails 2. The live run on the committed pins is green. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * census: OpenSci is a reviewed remote-code class (engine#2171, folded in from #2207) Folded into this PR rather than left as a second open PR for the same issue, under the 16:45Z lane cap (at most two open PRs per lane) -- the change itself is unchanged from #2207. The watcher reported OpensciForCausalLM as an uncovered architecture class. It is not a mapping gap: the model's config carries an auto_map pointing at its own modeling_opensci.py / configuration_opensci.py, so the pinned backends cannot accept the architecture without that custom code. Reviewed and deliberately not mapped, which is what registry/significant.json records -- the census then counts those models separately and excludes them from top_unmapped, because a recorded decision is not work remaining. Confirmed from the source, not the class name: architectures ["OpensciForCausalLM"], model_type "opensci", auto_map AutoModelForCausalLM -> modeling_opensci.OpensciForCausalLM. The other spelling the census carries (OpenSciForCausalLM, 7 models against 121) is deliberately NOT waved through here: exact-key matching is a stated design of census_watch.py ("there is no strip_arch either -- architectures.json is keyed by the HF architecture class, which is the key"), so it is a second reviewed entry needing the repo list from a census run, not a case-fold. tools/registry_build.py --check-gaps: none of the 38 reviewed significant classes is mapped without a reason (rc=0). Refs #2171 * docs/arch-gaps: record OpensciForCausalLM, so the folded-in #2207 entry passes (engine#2171) 7c0f845 added OpensciForCausalLM to registry/significant.json without a row here. tests/census_watch_test.py requires every reviewed class to be cited in this file, so the head failed 1 check ("every one of the 38 reviewed classes is cited in docs/arch-gaps.md -- missing: OpensciForCausalLM"). The DNS-red CI hid it. The row records the remote-code reason, from the config of open-sci/open-sci-1.7b-nemotron-cc-1T-oh-dcft (auto_map to modeling_opensci), and notes that OpenSciForCausalLM is a separate exact key. Tests: 1 FAIL -> 262/262. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * flm_answers: an answer also goes when its tracking issue closes unserved (engine#2171) Review at 8c97bb0: the staleness rule covered one edge only. The test fails on an answer for a family the registry now serves, but an answer whose issue (#1780/#1783/#1786/#1788) closes without serving the family would keep printing ". NPU FLM" with a link to a closed issue. No test can see that, so `about` now states the human step. Text-only change; tests 262/262. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: bong-water-water-bong <bong-water-water-bong@1bit.gg> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: agent <agent@local>
Refs #2171. The watcher reported
OpensciForCausalLMas an uncovered architecture class. It is not a mapping gap — and the fix is the documented one for "a human reviewed the class and deliberately did not map it", not an edit to the generated registry.Why it is not a gap
Confirmed from the model's own config rather than from the class name:
The
auto_mapis the point: the repo ships its own modelling code, so a pinned backend cannot accept the architecture without vendoring or upstreaming that code. That is a port project, not an alias of a supported family.What the change is
One entry in
registry/significant.json—model_type: opensci,watch: "report". The census then counts these models separately and excludes them fromtop_unmapped, because "it is a recorded decision, not work remaining" (registry/census.json,coverage.definitions.declined).Verified
That is the check this file exists for: it fails if a reviewed class becomes mapped without a
mapped_okreason, so this records the decision without silently widening the mapped set.What it deliberately does not do
The census carries a second spelling,
OpenSciForCausalLM, with 7 models against 121 forOpensciForCausalLM. That is a different class string from a different uploader, and its config was not read here — so it stays a reported gap rather than being waved through on the strength of a similar name. A follow-up with its own config check; not a second line in this entry.The same reasoning applies to the census's other
!!rows:REMOTE_CODE_SPREAD = 3intools/census_watch.pymeans a remote-code class from fewer than three uploaders is reported but does not alert — so a single new custom-code family arriving does not need a registry decision at all, and the ones that do are the ones where the count is climbing.