Repository navigation
Open-source readiness: PRISM v0.1.0 #2
Description
Release-readiness tracking for AI-ModCon/PRISM, the public release vehicle.
Split out of AI-ModCon/BaseMM_PRISM#185, which tracks the development repository. That issue measured every "before the visibility flip" item against BaseMM_PRISM; after the #232 decision those items apply here instead. This issue carries them.
What this repository is
Decided in BaseMM_PRISM#232, closed 2026-10-07 — content: a snapshot of the current tree; vehicle: a new repository.
AI-ModCon/BaseMM_PRISMstays private and remains the development repo and source of truth.AI-ModCon/PRISMis the public release vehicle and carries no development history: one root commit holding the BaseMM_PRISM tree byte-for-byte, with the ten ratified authors asCo-Authored-Bytrailers and a.mailmaprecording the 21 development aliases.- Current head:
6ccd410, snapshot of BaseMM_PRISM8fc8561(2026-10-07). - The 242-commit history this repo previously held was mirror-cloned and archived on two filesystems before the first overwrite. It is the only copy.
Re-snapshotting: changes flow BaseMM_PRISM → PRISM, never the reverse. Anything fixed only here is lost on the next refresh. Fix it in BaseMM_PRISM first.
Done
- Publish the snapshot. Force-pushed 2026-10-07 as
6ccd410. Verified on a fresh--recursiveclone: 1 root commit, 10 co-authors, tree an exact match to BaseMM_PRISM8fc8561(every blob hash compared, only.mailmapadded). - Contributor attribution. Ten
Co-Authored-Bytrailers matching the ratified[project].authorsinpyproject.toml, plus a.mailmapmapping the 21 aliases from development history — hostname-based emails,goooopy, and aYour Name <you@example.com>identity that was 22 commits of scaling-study work. Every distinct author in BaseMM_PRISM's history maps to someone on the ratified list; nobody is dropped. - Internal ALCF hostnames in commit metadata — resolved by construction. 97 commits in BaseMM_PRISM carry
user@<internal-node>.alcf.anl.govacross 20 addresses. A.mailmapcould not have fixed that (it rewrites display only; the raw commit objects keep the address), and a history rewrite would have been required. Under the snapshot decision those commits are not published: this repo has one commit and one identity. Verified on a fresh clone. - Submodule integrity.
src/libs/walrus(MIT, Polymathic AI) is a gitlink at9c8b39a, matching BaseMM_PRISM.git clone --recursivepopulates 167 files. An earlier snapshot shipped.gitmoduleswithout the gitlink, sogit submodule update --initexited 0 and silently did nothing — fixed and verified. - Repository settings matched to BaseMM_PRISM. Private; wiki/issues/projects enabled; all three merge methods;
delete_branch_on_merge: false. Forking is disabled org-wide. - Branch protection. Restored 2026-10-07 and verified identical to BaseMM_PRISM by diffing both repos' protection JSON: 9 required contexts (
lint,doc_links,types (3.10),types (3.12),unit (3.10),unit (3.12),multimodal_contract,launcher_contract,coverage_gate),strict: true,enforce_admins: true,dismiss_stale_reviews: true,required_conversation_resolution: true, force pushes and deletions blocked, 0 required approvals.
⚠️ Protection blocks force-pushes, including the next re-snapshot. Lift it, push, restore it — and note the saved GET response is not a valid PUT body (GitHub rejects it withNo subschema in "anyOf" matched). A working PUT payload is at~/backups/prism/PRISM-branch-protection-PUT-20261007.json. - Secret scanning and push protection — enabled 2026-10-07. Push protection is the control that prevents a credential being committed in the first place; three sat undetected for 2–4 months each in BaseMM_PRISM's history.
- Deployments cleaned. The
hpc-dryrunenvironment and its 4 deployments were deleted; they referenced commits from the replaced history, one of which no longer exists anywhere.
Compliance review (2026-10-09)
A BaseTemplate compliance review was run on this issue. It passed every element
it could check from the source tree, and the items it raised were acted on in
AI-ModCon/BaseMM_PRISM#248 (merged as ecec35f) — in the development repo,
because a fix applied only to this snapshot is lost on the next re-snapshot.
- BaseTemplate required elements — all source-checkable elements pass:
license file and metadata, README completeness, docs structure, tests and
CI, community health files, project metadata, dev setup, AI/LLM
contribution policy, CODEOWNERS and Dependabot. The reviewer
independently built a wheel and ran the packaging guards (15 passed). - Copyright holder reads as institution-neutral —
ModCon, explicitly
marked temporary, replacing a single-institution line that did not
reflect the contributor set. Final holder still pending (Gate 1 below). - Funding acknowledgment uses the standard DOE/ASCR wording. The
variant naming award numbers was not used: those numbers were not known
to the author, and inventing them would have been worse than the generic
form. Add them if the awards should be listed. - Packaging deprecations cleared. The reviewer's wheel build warned on
license = { text = ... }and the Apache classifier. Now PEP 639:
license = "Apache-2.0"pluslicense-files, classifier dropped.
Rebuilt: no warnings, andLICENSE+NOTICEship in
dist-info/licenses/. - Gated Hugging Face access documented.
Qwen/Qwen3.5-35B-A3B-Instructreturns HTTP 401 — confirmed gated
rather than missing, since a public model returns 200.
docs/models/intern-s2-preview.mdnow explains that access must be
granted on HF and authenticated locally, and that PRISM does not
redistribute the weights. The note is there rather than in the citing
file becausesrc/encoders/intern_s2_preview/is vendored upstream code
kept byte-identical. - "Aurora is primary" softened to "most exercised" in all five places
the review listed, so the language does not date as other systems land. - Two typos fixed; a third was declined with reasoning —
meanedin
trainer_grpo.pyis the reduction verb matching "masked-mean" on the
following line, not a misspelling of "meant".
Gate 1 — legal, and institutional
None of these are affected by the snapshot decision, and none can be done here.
- Confirm the copyright holder(s) for repository code and documentation
- Record institutional / sponsor / collaborator approval for public release
- Confirm the
NOTICEcopyright line and DOE notice wording with Argonne tech transfer.
Moved forward, not closed (BaseMM_PRISM#248): the holder is nowModConas an
explicit placeholder, the DOE contract paragraph is rescoped to "portions of this
software", and the funding acknowledgment uses the DOE/ASCR Genesis Mission wording
supplied in review. Tech-transfer sign-off on the final holder is still required. - Define the public release scope and explicit exclusions (datasets, checkpoints, licensed data, credentials)
- Complete the third-party license, provenance, and redistribution audit — smaller under the snapshot: one tree, not 480 commits
- Produce third-party notices and an SBOM
- Decide contributor sign-off requirements (DCO vs CLA vs neither)
To do here, before the flip
-
CI and Codecov badges fixed (2026-10-07, in
1e09c21). They pointed atAI-ModCon/BaseMM_PRISM: on a public PRISM the Codecov badge would have advertised coverage for a repository nobody can see, and the CI badge would have 404'd for any external reader. Repointing them at PRISM was rejected — this repo runs no CI and is not activated on Codecov, so both would renderunknownindefinitely. They are replaced with static badges that resolve inside this repository:``` [](LICENSE) [](pyproject.toml) ``` ⚠️ **Applied here only.** BaseMM_PRISM keeps its own badges, which are correct for it. This fix is therefore **lost on the next re-snapshot** unless it is re-applied — see the re-snapshot note at the top. -
What CI means here — settled 2026-10-07: it is live, and it works. The open question was whether
pr_quality.ymlactually runs in this repo or merely ships as a file. It runs: the workflow isactive, and all four snapshot pushes have passed it (0d07b17,22e178c,6ccd410,1e09c21), 19 runs total.What that means in practice: - The workflow triggers on `push` as well as `pull_request`, so each force-pushed snapshot is independently validated here — the published tree is tested in its own right, not merely trusted because it passed in BaseMM_PRISM. - Branch protection's 9 required contexts are therefore **real, not decorative**. They have no effect on a force-push (protection has to be lifted for that regardless), but they would gate any PR opened here. - `Dependabot Updates` was also active and is now **disabled here** (2026-10-07, `204d53a`) — see the separate entry below. No change needed to make CI meaningful. -
Clean the remaining real site paths. Gate-measured on BaseMM_PRISM
8fc8561: 259 occurrences across 76 files, allowlisted so they cannot grow, and they ship in the snapshot. Mostly operational shell scripts, launcher defaults, and worked examples in docs. Each needs someone who knows which paths are current. Fix in BaseMM_PRISM. -
Scan this tree for secrets before the flip. Under the snapshot the surface is one commit, not 480 — a tree scan, not a history scan. Neither
gitleaksnortrufflehogis installed on the machine used so far, so this has not been run.Partial mitigation already in place: **secret scanning and push protection are enabled** on this repo (2026-10-07), so GitHub scans what is here and blocks new credentials at push time. That is not a substitute for an explicit pre-flip scan — GitHub's scanners match known provider patterns and will miss, for example, a private key pasted into a doc. Suggested: run `gitleaks detect --no-git` against a fresh clone (the published tree is one commit, so `--no-git` is the right mode), and add it to `pr_quality.yml` in **BaseMM_PRISM** so it is repeatable and survives re-snapshotting. -
Dependabot disabled on this repo (2026-10-07,
204d53a). It had already opened PR ci: bump the ci-tools group in /requirements with 2 updates #1 here, which auto-closed when a force-push replaced its base — exactly the failure mode expected: changes flow BaseMM_PRISM → PRISM, so a PR opened here cannot be merged usefully.Disabled via `open-pull-requests-limit: 0` on both ecosystems in `.github/dependabot.yml`, **not** by deleting the file. Deleting it breaks `tests/platform/test_dependabot_scope.py`, which reads the config and runs in this repo's CI — verified: 8 tests error without it, 8 pass with the limit at 0. The repo-level toggles (vulnerability alerts, security updates) were already off. The file carries a comment explaining why, so a future reader does not "restore" the limit. Dependabot stays active in BaseMM_PRISM, where its PRs merge normally. -
Wiki and Projects — decided 2026-10-07: keep both enabled. Standard for an open-source repository, and leaving them on costs nothing. Revisit only if they attract spam.
-
Decide on PyPI publishing. Name research done 2026-10-07:
| Name | PyPI | |---|---| | `prism` | **taken** | | **`prism-mm`** | **available** — and already the `[project].name` in `pyproject.toml` | | `prism-ml`, `prism-multimodal`, `basemm-prism` | available | The package already declares itself as **`prism-mm`** version `0.1.0`, with console script `prism = src.cli:app`. So the naming question is effectively settled unless someone objects; what remains is the decision to publish at all, and a Trusted Publisher / API-token setup if so. Note `prism` itself is unavailable, so the import-vs-distribution names will differ. -
Clean release-candidate dry run — PASSED on Aurora, 2026-10-07, from a fresh
git clone --recursiveof this repo at204d53a:| Step | Result | |---|---| | Clone `--recursive` | 1712 files; submodule populated, 167 files at `9c8b39a` | | `pip install -e . --no-deps` | installed as `prism-mm` 0.1.0 | | `prism --help` | all six commands listed (train / launch / data / eval / analyze / serve) | | `examples/portable_smoke/train_tiny.py` | **passed** | The smoke test's claims hold exactly as the README states them: it synthesised a 215 KB local backbone, confirmed *"network blocked at the socket layer (verified by probe)"*, trained 91,664 parameters for 40 steps with loss **4.8939 → 0.0036 (99.9% drop)**, and wrote **0** HuggingFace cache files. So the offline claim is real, not aspirational. Environment note for whoever repeats this: it needs a properly loaded Lmod module. Calling a framework interpreter by absolute path fails — `libmkl_intel_lp64.so.2` or `libpti_view.so.0` — because `LD_LIBRARY_PATH` is unset. Use `module load frameworks`. Also note `frameworks/2025.3.1`, the version this repo pins, **could not be loaded on this node**: it requires `intel-oneapi-runtime/2026.1.0-sesoxjw`, which is not in the current MODULEPATH. The run above used the `2026.1.0` default, so the pinned stack is **still unverified** for the install path. -
Launch runbook and maintainer coverage. Sequence:
1. Gate 1 (legal) complete — the hard blocker, tracked in BaseMM_PRISM#185 2. Secret scan of this tree, clean 3. Lift branch protection → `bash tools/make_release_snapshot.sh --push` → restore protection 4. Flip visibility to public 5. Tag `v0.1.0` 6. Publish to PyPI as `prism-mm`, if decided Step 3 is now scripted (BaseMM_PRISM#242) — it reapplies the badge and Dependabot deltas, which were previously manual and easy to forget. **Triage coverage — the ten ratified authors**, from `[project].authors` in `pyproject.toml`, the same list carried as `Co-Authored-By` on the release commit: | | | |---|---| | Sandeep Madireddy | smadireddy@anl.gov | | Patrick Emami | patrick.emami@nlr.gov | | Adarsha Balaji | abalaji@anl.gov | | Guojing Cong | congg@ornl.gov | | Ben Erichson | erichson@icsi.berkeley.edu | | FangFang Xia | fangfang@anl.gov | | Jared Willard | Jared.Willard@nlr.gov | | Neil Getty | ngetty@anl.gov | | Huu Binh Ta | nzj6jt@virginia.edu | | Samuel Wheeler | swheeler@anl.gov | ⚠️ **A list of authors is not a rota.** Still needed before the flip: who is actually on point for incoming issues, and what response time is promised. Also worth deciding whether all ten get write access here, or whether triage runs through a smaller group. An open repo where everyone is nominally responsible is one where nobody is.
Not applicable here
- Rotate the ALCF SSH key from the deleted Actions secret — out-of-band on the cluster, tracked in BaseMM_PRISM#185. Deleting the GitHub secret was never revocation.
- Full-history secret scan — no history is published.
- GitHub metadata audit (issue/PR titles, branch names) — this repo has none of that history.
Activity
Sande33p commentedon Oct 7, 2026
Worked the actionable items — 8 → 11 done
Badges fixed (commit
1e09c21). They pointed at the private BaseMM_PRISM; on a public PRISM the Codecov badge would have advertised a repo nobody can see and the CI badge would have 404'd. Repointing them here was rejected — this repo isn't on Codecov, so they'd renderunknownforever. Replaced with static License and Python-version badges that resolve inside the repo. Applied here only, so it is lost on the next re-snapshot unless re-applied.CI question settled — and the answer was the opposite of what I assumed. I wrote that box expecting the workflow was inert here. It isn't:
pr_quality.ymlis active and all four snapshot pushes passed it (19 runs total). It triggers onpush, so each force-pushed snapshot is independently validated in this repo rather than trusted because it passed upstream. The 9 required contexts are real. One thing to decide:Dependabot Updatesis also active, and its PRs can't be merged usefully here since changes flow from BaseMM_PRISM.Wiki and Projects — keeping both, per maintainer decision. Standard for open source.
PyPI name researched.
prismis taken. The package already declares itselfprism-mminpyproject.toml, and that name is available — so naming is effectively settled; what remains is whether to publish and a Trusted Publisher setup.RC dry run — clone verified, install not. Fresh
--recursiveclone: 1712 files, submodule populated (167),pyproject.tomlandCITATION.cffboth parse correctly. Butpip installand the portable smoke test could not run — the only interpreter on this host can'timport torch(libpti_view.so.0), and it fails the same way outside any checkout, so it's an environment gap, not a repo defect. Still needs a machine with working torch. I've left the box open rather than claiming a pass.Secret scan — still open, with partial mitigation noted. No
gitleaks/trufflehogavailable here. GitHub's secret scanning and push protection are now on, which covers known provider patterns but wouldn't catch, say, a private key pasted into a doc. Suggestedgitleaks detect --no-gitplus a CI job in BaseMM_PRISM so it survives re-snapshotting.Launch runbook drafted as a 7-step sequence, including the lift-protection → re-snapshot → restore-protection cycle and the badge re-apply. Still needs named maintainers for triage — an open repo with nobody watching issues is worse than a closed one.
Site paths skipped at maintainer's request.
mainis currently OFF — lifted for the badge push and not yet restored. Restore with:wildsm commentedon Oct 9, 2026
(Moved these comments from development repo)
I suggest creating a PR that will close this issue. Such a PR will help test branch protection, etc.
I can provide a complete review here and there, but to get started, here are some non-dealbreakers (i.e., no change required, but confirm that intentional for initial release) to consider.
Things to consider carefully
pyproject.tomllicense metadata:license = { text = "Apache-2.0" }is fine, but it is only package metadata, not the full license text. If you want stricter packaging hygiene,license = { file = "LICENSE" }or equivalent explicit license-file metadata is a cleaner signal.SECURITY.md: still has a TODO noting the supported-versions table should be confirmed at the v0.1.0 tag. That reads as release-readiness work, not a blocker.CONTRIBUTING.md: notes that some pre-existing absolute paths in generated docs/job scripts are still being cleaned up. That is a compliance hygiene item to finish, not a license issue.[project].licensebeing a TOML table and the Apache classifier; those are not failures, but they are worth cleaning up for future packaging compatibility.Minor typos:
explictly, which should beexplicitly.Existance, which should beExistence.meaned, which should bemeant.In a number of places, you say that Aurora is the primary/canonical platform, but this will soon be outdated. What about cleaning up the language in each of the following places (if nothing else: could specify that this is the initially supported system, try to make more consistent with the other target language, add issues associated with todos/testing/deployments elsewhere, ...):
These urls did not work:
docs/platforms/running_on_polaris.md->http://proxy.alcf.anl.gov:3128failed withNameResolutionError/ connection error.docs/applications/kegg_curation_implementation_status.md->https://eutils.ncbi.nlm.nih.gov/entrez/eutilsreturnedHTTP 404.src/encoders/intern_s2_preview/configuration_interns2_preview.py->https://huggingface.co/Qwen/Qwen3.5-35B-A3B-InstructreturnedHTTP 401.docs/applications/kegg_curation_implementation_status.md->https://rest.kegg.jp/list/organismreturnedHTTP 400.Given how many labs contributed, there are a number of places with Argonne specific language that seems out of place. Other packages are using ModCon as temporary copyright or spelling out contributing initial institutions.
NOTICE
Copyright (c) 2026, UChicago Argonne, LLC. All Rights Reserved.README.md
Copyright (c) 2026, UChicago Argonne, LLC.docs/models/prism.md
Copyright | UChicago Argonne, LLC, 2026, under U.S. Government contract DE-AC02-06CH11357 |The funding acknowledgment in README is currently
Please use what others have done as placeholders:
or if the contract numbers are vital, use
where all associated contract numbers are included
Draft compliance review following the elements of https://github.com/AI-ModCon/BaseTemplate#required-elements-for-modcon-base-public-repositories :
uv.lock, but it does have a professional, testable package-management setup: requirements/ci.txt pins the CI toolchain and key compatibility-sensitive runtime packages, requirements/base.txt documents the canonical non-Aurora runtime stack, and the packaging guards in tests/test_packaging_names.py and tests/test_packaging_submodule_isolation.py keep the wheel contents and entry points stable.pytest tests/test_packaging_names.py tests/test_packaging_submodule_isolation.py tests/platform/test_dependabot_scope.py -q, and it passed15 passed in 0.06s. I then ranpython -m build --wheel --no-isolation, and the wheel build completed successfully.LICENSEandNOTICEin the wheel. The build did emit setuptools deprecation warnings about[project].licensebeing a TOML table and the Apache classifier; those are not failures, but they are worth cleaning up for future packaging compatibility.maincan be verified from the repo checkout: Not verifiable from source files alone. Branch protection lives in GitHub repository settings, not in the tree. The repo does include CODEOWNERS and a dedicated branch protection contract test, which show the intended policy, but they do not prove the live GitHub setting.Sande33p commentedon Oct 9, 2026
Thanks — this was a genuinely useful review. Everything actionable is merged as AI-ModCon/BaseMM_PRISM#248 (
ecec35f).Fixes landed in BaseMM_PRISM, not here. PRISM is a snapshot of that tree, so a change applied only to this repo is discarded by the next re-snapshot. Upstream is the only place a fix survives.
Acted on
ModCon, explicitly marked temporary, inNOTICE,README.mdanddocs/models/prism.md. The DOE contract paragraph is kept but rescoped to "portions of this software", since it doesn't describe every contribution.license = { text = ... }license = "Apache-2.0"pluslicense-files = ["LICENSE", "NOTICE"], and the redundant Apache classifier dropped. This clears both deprecation warnings you saw — rebuilt the wheel to confirm, andLICENSEandNOTICEland indist-info/licenses/.explictlyandExistancefixed.One typo declined, with reasoning
meanedis correct.trainer_grpo.py:532reads:It's the reduction verb — "not reduced by sum or mean" — matching "masked-mean" on the next line. "meant" would break the sentence. Left as-is.
URLs — one real, three not
Real:
Qwen/Qwen3.5-35B-A3B-Instruct→ 401. I confirmed it's gated rather than missing: the HF API returns 401 for it where a public model returns 200.docs/models/intern-s2-preview.mdnow documents that access must be granted on Hugging Face and authenticated locally (huggingface-cli login/HF_TOKEN), and that PRISM doesn't redistribute the weights. The note is in that doc rather than the citing file becausesrc/encoders/intern_s2_preview/is vendored upstream codeCONTRIBUTING.mdrequires stay byte-identical.Not broken:
rest.kegg.jp/list/organism→ 400 is already documented atkegg_curation_implementation_status.md:101, with root cause: KEGG deprecated theorganismdatabase name in favour ofgenome, andkegg_pullhasn't been updated. No newer release exists.eutils.ncbi.nlm.nih.gov/entrez/eutilsis a base API endpoint — 404s on a bare GET by design.proxy.alcf.anl.gov:3128is anHTTP_PROXYvalue, only resolvable inside the ALCF network.Left deliberately
SECURITY.md's TODO says to confirm the supported-versions table at the v0.1.0 tag. That hasn't happened, so removing it would assert something untrue.Branch protection — and why a PR can't close this issue
You noted protection isn't verifiable from a checkout. Correct. For the record it is applied here, verified by diffing both repos' protection payloads field by field: 9 required contexts,
strict,enforce_admins: true,dismiss_stale_reviews,required_conversation_resolution, force-pushes and deletions blocked — identical to BaseMM_PRISM.Your suggestion to let a PR exercise that gate is a good instinct, but it can't work in this repo, and the reason is worth recording:
PRISM's
mainis a root commit with zero parents, replaced wholesale by force-push. Each snapshot is a new root sharing no ancestry with the last. A PR branch here would be based on a commit the next snapshot discards — which is exactly what happened to Dependabot's #1, auto-closed when its base vanished. No PR has ever merged in this repo, and none usefully can.So branch protection here gates force-pushes, not PRs. The required contexts are real — CI runs on every snapshot push and has passed on all of them — but nothing will ever satisfy them en route to a merge. #248 exercised the gate in the repo where PRs belong.
Keeping this issue open
It's at 20 done / 11 open. The remaining work is Gate 1 legal (7 items, institutional), the pre-flip secret scan, site-path cleanup, the PyPI decision, a maintainer rota, the visibility flip and the v0.1.0 tag. The compliance review is satisfied; the repo isn't release-ready yet. A new Compliance review (2026-10-09) section in the issue body records what this closed.
Two things that need a human, not me: the award numbers above, and the final copyright holder —
ModConis a placeholder, and the real answer is the same tech-transfer question BaseMM_PRISM#185 Gate 1 has tracked throughout.wildsm commentedon Oct 11, 2026
Thanks for explaining about PRs to a different repo. But this begs the questions about whether you intend to maintain two repos indefinitely and whether the CONTRIBUTING in this repo is accurate (i.e., are you ignoring contributions here?).
For the remaining uncheck items below:
Things to consider carefully
pyproject.tomllicense metadata:license = { text = "Apache-2.0" }has been updated tolicense = "Apache-2.0"plus explicit license-file metadata, which is a cleaner packaging signal. Evidence: pyproject.toml.SECURITY.md: still has a TODO noting the supported-versions table should be confirmed at the v0.1.0 tag. That reads as release-readiness work, not a blocker. Evidence: SECURITY.md.CONTRIBUTING.md: notes that some pre-existing absolute paths in generated docs/job scripts are still being cleaned up. That is a compliance hygiene item to finish, not a license issue. Evidence: CONTRIBUTING.md.[project].licensebeing a TOML table and the Apache classifier in the previous review; those concerns are now addressed in the current tree. Evidence: pyproject.toml.Minor typos:
explicitlynow; the earlierexplictlytypo has been fixed.Existence; the earlierExistancetypo has been fixed.meaned, which should bemeant.In a number of places, you say that Aurora is the primary/canonical platform, but this will soon be outdated. What about cleaning up the language in each of the following places (if nothing else: could specify that this is the initially supported system, try to make more consistent with the other target language, add issues associated with todos/testing/deployments elsewhere, ...):
These urls did not work:
http://proxy.alcf.anl.gov:3128still appears in the docs.https://eutils.ncbi.nlm.nih.gov/entrez/eutilsstill appears in the docs. Note thathttps://eutils.ncbi.nlm.nih.govworks and might be sufficient for your reference.https://huggingface.co/Qwen/Qwen3.5-35B-A3B-Instructstill appears in the docs.https://rest.kegg.jp/list/organismis still documented.Given how many labs contributed, there are a number of places with Argonne specific language that seems out of place. Other packages are using ModCon as temporary copyright or spelling out contributing initial institutions.
Copyright (c) 2026, ModCon. All Rights Reserved.Copyright (c) 2026, ModConas the temporary holder.Copyright | ModCon, 2026 — temporaryThe funding acknowledgment in README is currently:
Please use what others have done as placeholders:
or if the contract numbers are vital, use
where all associated contract numbers are included
Draft compliance review following the elements of https://github.com/AI-ModCon/BaseTemplate#required-elements-for-modcon-base-public-repositories :
uv.lock, but it does have a professional, testable package-management setup: requirements/ci.txt pins the CI toolchain and key compatibility-sensitive runtime packages, requirements/base.txt documents the canonical non-Aurora runtime stack, and the packaging guards in tests/test_packaging_names.py and tests/test_packaging_submodule_isolation.py keep the wheel contents and entry points stable.pytest tests/test_packaging_names.py tests/test_packaging_submodule_isolation.py tests/platform/test_dependabot_scope.py -q, and it passed15 passed in 0.06s. I then ranpython -m build --wheel --no-isolation, and the wheel build completed successfully.LICENSEandNOTICEin the wheel. The build did emit setuptools deprecation warnings about[project].licensebeing a TOML table and the Apache classifier; those are not failures, but they are worth cleaning up for future packaging compatibility.maincan be verified from the repo checkout: Not verifiable from source files alone. Branch protection lives in GitHub repository settings, not in the tree. The repo does include CODEOWNERS and a dedicated branch protection contract test, which show the intended policy, but they do not prove the live GitHub setting.vxnkjyffmq-code commentedon Oct 15, 2026
Would you like to see the rest of it being built I guess I could post it. I terraform the rest of it and locked it up.
Sande33p commentedon Oct 20, 2026
Thanks — and you were right to push on the two-repo question. The answer has changed since I wrote it. PRISM is no longer a snapshot:
tools/make_release_snapshot.shis deleted (9b92e7d), PRs #4–#7 merged here directly, and BaseMM_PRISM has not moved sinceecec35fon Oct 9. Development happens here now, so CONTRIBUTING is accurate and contributions to this repo are not ignored.Branch protection — now checkable rather than asserted
You were right that
test_branch_protection_contract.pyreads source files, so it shows intent, not the live setting. #13 adds--verify, which reads the live protection from the API and diffs it against the policy the script applies:Swap
--repo AI-ModCon/BaseMM_PRISMfor the other one. Exit code is 0 on match, 1 on mismatch, so it can run in CI — which a screenshot cannot — and anyone with read access can reproduce it.Two caveats, since you caught an overclaim last time:
maintoday and GitHub refused.--review-countis the expectation you assert, not something read from the server, so quote the command with the output.Required approving reviews is now 1, raised after #13 merged (
3249ed4d). Any approver counts: applying the policy briefly turned onrequire_code_owner_reviews(the script's default), which would have restricted approvals to@AI-ModCon/base-multimodal; that has been turned back off, so the live setting is one approving review from anyone with access.Spelling
meaned→averagedin #13. I also swept every tracked.mdand.pyfor ~25 common misspellings (explictly,existance,seperate,recieve,thier,paramter, …) — no remaining hits.Links
https://eutils.ncbi.nlm.nih.gov, which resolves.Qwen/Qwen3.5-35B-A3B-Instruct— our owndocs/models/intern-s2-preview.mdsaid the 401 meant the model is gated. That was wrong: a gated repository serves its card with 200 and gates only downloads, so 401 means it does not resolve. The rest of the family does (Qwen3.5-9B,-4B,-35B-A3B), so-Instructlooks like the error andQwen/Qwen3.5-35B-A3Bis the nearest real checkpoint. Doc corrected; the files citing it are vendored upstream code kept byte-identical, so they are deliberately untouched.proxy.alcf.anl.gov:3128andrest.kegg.jp/list/organism— I would leave these. Both are already in backticks: an HTTP proxy address and a REST endpoint. Both should fail a browser GET, andcheck_doc_links.pyskips absolute URLs for that reason. Happy to reword if your scanner still flags them.Still open
SECURITY.md's supported-versions table and the twoCHANGELOGpromotions are gated on the v0.1.0 tag, whichNOTICEblocks until the copyright holder is settled with Argonne tech transfer and the other contributing institutions. One commit once that is answered — the most useful thing anyone could unblock here.Funding acknowledgment
Your two placeholder blocks are byte-identical, so I think the first paste did not take. Which did you intend? If it is the award-number form I will need the contract numbers for all contributing institutions.
On disclosure: noted that this review was Codex- and Copilot-assisted and that you stand by it. Same here — #12 and #13 both carry an unticked AI-assistance box pending a human line-by-line read. That matters most for #12, which recovers ~16k lines written in an uncommitted worktree that nobody has yet read for correctness.
Sande33p commentedon Oct 20, 2026
Tracking table for the open items, so they are in one place. Your review above is untouched — these are my assessments to tick or push back on. Line references are against
mainat3249ed4d.SECURITY.mdsupported-versions TODOtrainer_grpo.pysaysmeanedaveragedproxy.alcf.anl.gov:3128eutils.ncbi.nlm.nih.gov/entrez/eutilsQwen/Qwen3.5-35B-A3B-Instructrest.kegg.jp/list/organismmain--verify; reviews now 1To check item 7 yourself, from a PRISM checkout:
Prints each field with
live=, exits 0 on match and 1 on mismatch. Swap--repo AI-ModCon/BaseMM_PRISMfor the other one. It reads the setting rather than testing enforcement — for that, note that GitHub refused my attempt to push these fixes straight tomaintoday.On 3 and 6 — these were not link rot: both were already backticked code, an HTTP proxy endpoint and a REST endpoint, and both correctly fail a browser GET. But neither gave a reader anywhere to go, so each now cites a page that resolves beside the literal value. The values stay, since they are configuration a reader needs.
#14 is open and needs an approval, along with #3, #9, #10, #11 and #12 — required reviews is now 1 and
enforce_adminsis on, so I cannot self-approve. #12 is the one that most needs a careful read: it recovers ~16k lines that were written in an uncommitted worktree.On 1 —
SECURITY.md, the twoCHANGELOGpromotions and the tag itself all wait onNOTICE's open question: who the copyright holder is, pending Argonne tech transfer and the other contributing institutions. One commit once that is settled, and the last thing between the repo and v0.1.0.Still outstanding from my previous comment: which of your two funding-text blocks you meant — they came through byte-identical.