fix(submodule): mark bleuberi as update=none so recursive init doesn't break installs#476
Open
abhicris wants to merge 1 commit into
Open
fix(submodule): mark bleuberi as update=none so recursive init doesn't break installs#476abhicris wants to merge 1 commit into
abhicris wants to merge 1 commit into
Conversation
…t break installs Closes NousResearch#448. ## Problem `pip install`/`uv pip install` of `atroposlib` from this repo (e.g. as a transitive dependency of `tinker-atropos`) calls `git submodule update --recursive --init`, which fails on the `bleuberi-repo` submodule: fatal: Unable to checkout '...' in submodule path 'environments/community/bleuberi/bleuberi-repo' The root cause is that upstream `lilakk/BLEUBERI` tracks `arena_analysis/arena_1k_final/` with Git LFS, and the upstream LFS budget is exhausted (`This repository exceeded its LFS budget`). The smudge filter hard-fails, taking down submodule checkout — and therefore the entire install — for every new user, regardless of whether they want the BLEUBERI environment. ## Fix Mark the `bleuberi-repo` submodule with `update = none` in `.gitmodules`. `git submodule update --init --recursive` and tooling that wraps it (uv, pip git installs) now skip this submodule by default. Users who actually want to run `bleuberi_env.py` fetch it explicitly: git submodule update --init environments/community/bleuberi/bleuberi-repo …optionally with `GIT_LFS_SKIP_SMUDGE=1` to bypass the upstream LFS issue when they don't need the eval data. The other three submodules (`internbootcamp_lib`, `reasoning-gym`, `AI_Diplomacy`) keep default behavior; they are not LFS-affected. ## Surface area - `.gitmodules` — one-line addition. - `environments/community/bleuberi/README.md` — install section now documents the explicit submodule init + the LFS-skip workaround pointing at NousResearch#448. - `environments/community/bleuberi/bleuberi_env.py` — if a user imports the env without first initializing the submodule, raise a `RuntimeError` with the exact init command, instead of the current opaque `ModuleNotFoundError: No module named 'training'`.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #448.
Problem
`pip install` / `uv pip install` of `atroposlib` from this repo (for example as a transitive dependency of `tinker-atropos`) calls `git submodule update --recursive --init`, which currently fails:
```
fatal: Unable to checkout '...' in submodule path
'environments/community/bleuberi/bleuberi-repo'
```
The root cause is upstream: lilakk/BLEUBERI tracks `arena_analysis/arena_1k_final/` with Git LFS, and the upstream LFS budget is exhausted (`batch response: This repository exceeded its LFS budget`). The smudge filter hard-fails, taking down submodule checkout — and therefore the entire install — for every new user, regardless of whether they actually want the BLEUBERI environment. See #448 for a full reproducer.
Fix
Mark only the `bleuberi-repo` submodule with `update = none` in `.gitmodules`. `git submodule update --init --recursive` (and tooling that wraps it: uv, pip git installs, `pre-commit`'s recursive submodule init) now skip this entry by default. Users who actually want to run `bleuberi_env.py` fetch it explicitly:
```bash
git submodule update --init environments/community/bleuberi/bleuberi-repo
```
…optionally with `GIT_LFS_SKIP_SMUDGE=1` to bypass the upstream LFS issue when they don't need the eval data.
The other three submodules (`internbootcamp_lib`, `reasoning-gym`, `AI_Diplomacy`) are unaffected and keep their default behavior — none of them are LFS-bound.
Why `update = none` (vs deleting the submodule)
Keeping the entry registered preserves the pinned commit + URL, so contributors working on BLEUBERI specifically still get reproducible checkouts via the explicit init command. Deleting the submodule would lose that pinning. `update = none` is the documented git mechanism for opt-in submodules (gitmodules(5)).
Files changed
Verification
```
$ git config -f .gitmodules --get-regexp '^submodule.environments/community/bleuberi/bleuberi-repo..*'
submodule.environments/community/bleuberi/bleuberi-repo.path environments/community/bleuberi/bleuberi-repo
submodule.environments/community/bleuberi/bleuberi-repo.url https://github.com/lilakk/BLEUBERI.git
submodule.environments/community/bleuberi/bleuberi-repo.update none
```
`git submodule update --init --recursive` from a clean clone of this branch initializes the other three submodules and does not attempt to clone `bleuberi-repo`. The explicit `git submodule update --init environments/community/bleuberi/bleuberi-repo` still works (and reproduces the upstream LFS error, which is independently addressable on the BLEUBERI side or via `GIT_LFS_SKIP_SMUDGE=1`).
`bleuberi_env.py` AST-parses; the new `RuntimeError` only fires when the submodule directory exists but is empty (the unpopulated git submodule state).