[Bug]: the pinned top-level module budget is already exceeded on main (150 measured against 147)
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 30/100
Direção de pesquisa
Start with tests/architecture/test_top_level_module_budget.py and tests/architecture/top_level_module_budget.json, then read Section 9 and Appendix A of RFC monorepo-distribution-split-v0 and the linked context in #5072 and #5191. The owner needs to decide among the three listed options; done means the decision is explicit and the budget gate's status matches it, with any move or re-pin reflected in the relevant files.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
What is failing on main
tests/architecture/test_top_level_module_budget.py::test_top_level_module_count_stays_at_the_pinned_budget fails on an unmodified main.
Measured on bfe3c4344 (current main tip at the time of writing):
git ls-tree --name-only main loopx/filtered to*.py→ 150 top-level modules.tests/architecture/top_level_module_budget.jsonstill pinsmax_top_level_modules: 147, withbaseline_commit: 9eaacfbf2.- So the gate that #5191 landed to stop the top level from growing is red on
mainby 3 modules, and every PR based on currentmaininherits that failure.
For context, #5597 — merged about an hour before this was written — measured 149 at its own base and disclosed the same gate as pre-existing red. The drift is not hypothetical, it is happening between PRs.
Which commits raised it
The top-level additions since the 147 baseline, read with git log --diff-filter=A --name-only -- 'loopx/*.py':
| commit | new top-level module |
|---|---|
9eaacfbf2 |
(the pinned baseline; #5191 measured 147 here) |
9cb6a5433 feat: back up complete machine and Goal configuration checkpoints |
loopx/configuration_backup.py, loopx/chat_configuration_backup_api.py |
d7ad25654 feat(chat): add authorized ordinary workspace conversations |
loopx/chat_project_context.py |
b9df6d1d0 (#5587) fix(workspace): isolate edits and preserve complete current evidence |
loopx/chat_todo_detail.py |
None of those is wrong on its own terms; the count is what RFC monorepo-distribution-split-v0 Section 9 asked to keep visible. This issue exists so the number is decided on purpose rather than inherited as a red test.
What this is not asking for
- Not an automatic raise of the pin. #5191's own reasoning is that the budget is the thing that makes growth visible;
147 → 150without a decision is exactly the drift the gate exists to catch, and the RFC's Appendix A already recorded the same surface moving 143 → 148 while the proposal was being reviewed. - Not a claim that these modules belong in subpackages.
chat_*→loopx/chat/is milestone M1 and*_goal_mode→loopx/hosts/is M2 of that RFC, and both are gated on decisions D1–D4 which the RFC says are not authorised by merging M0.
Options for the owner, with the cost of each
- Move M1/M2 forward (the RFC's own remedy): the number goes down and the gate keeps its meaning. This is the only option that reduces the count.
- Re-pin to the measured number in a maintainer-owned commit, with the note updated to the commit where the re-pin happened. Cheap, honest, and it costs the "a third spelling of growth is still a regression" signal described in
loopx/semantics/vocabulary_v0.json→inventory_ratchets.meaning. - Leave it red and treat the failing id as expected noise. This is the current de facto state, and its cost is that every contributor must diff failure sets against a clean baseline to prove their own PR is neutral — #5191, #5252, #5358 and #5597 each paid that cost in writing.
What I have verified locally
- The gate is red on an unmodified worktree at
bfe3c4344— same interpreter (uv venv+uv pip install -e ".[test]"), Node pinned to the repository's qualified 22 line,npm ci --ignore-scriptsrun once. tests/architectureplustests/canaryon that unmodified tree: 24 failed / 1378 passed, of which 22 aretests/architecture/test_contributor_task_board.py(the contributor-task-board anchor rules), 1 is this budget gate, and 1 istests/canary/test_maintainability_ratchet.py::test_current_repository_debt_is_reviewed_without_line_count_pins. #5597 disclosed three pre-existing reds including this budget gate and the ratchet; the task-board file accounts for the rest.- #5684 (
refactor(control-plane): decide the agent-lane progress scope in one owner) deliberately places its new owner insideloopx/control_plane/rather than atloopx/*.py, so it cannot add to this count.
Refs #5072 (the distribution-split programme this gate belongs to) and #5191 (the PR that landed the pin). No milestone claimed or closed here.
- Linguagem predominante
- Python
- Estrelas
- 6.2k
- Forks
- 596
- Merge médio
- 6h 47min
- PRs com merge (30d)
- 935
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de loopx-project/loopx
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
loopx-project/loopx#6842 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
loopx-project/loopx#6108 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
loopx-project/loopx#5688 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 60/100
loopx-project/loopx#5632 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
loopx-project/loopx#5443 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de loopx-project/loopx
Issues semelhantes
-
tests: pin that the atomic writers in utils/paths.py stage the temporary file in the target's directoryTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Abertadifficulty:2 enhancement good first issue
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 92/100
MakazhanAlpamys/Soup#2178 ·
Mantenedores costumam responder em até 1 dia
-
Slang input: int8_t4_packed and uint8_t4_packed are copied into CrossGLTalvez já em andamento @ninglinLiu assumiu hoje. Abertaarea:frontend backend:slang bug direction:input
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
Mantenedores costumam responder em até 13 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
Kozea/Radicale#2301 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
bug ci good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
Mantenedores costumam responder em até 1 dia