Verify resource-bounded whole-checkout retirement under the no-archive contract
Los mantenedores suelen responder en 1 día
@atomantic ya está trabajando en esto.
Desde el 24/10/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Problem
The ordinary held-checkout archive deliberately caps one file at 25 MiB and aggregate captured content at 250 MiB. These hardcoded defensive ceilings date to #12002; they are not user settings. A normal dependency tree can exceed both, leaving a fully delivered checkout held indefinitely. The refusal protects data, but its suggestion to preserve large outputs separately has no integrated proof-bound recovery path.
The native whole-source archive already streams complete bytes with a 20 GiB source budget, bounded manifests, exact metadata verification and a source-size-based free-space requirement. It currently requires initialized modules, so an ordinary checkout cannot legitimately use it. Initializing a module just to change eligibility is not a valid workaround.
Chosen implementation
Add an explicit operator-reviewed whole-checkout mode on macOS, reusing the existing native transaction, reservation, standalone restore, quarantine, rollback and exact-receipt protocol for checkouts with zero initialized modules. Keep the ordinary archive's existing limits unchanged. Correctly represent absent/uninitialized gitlinks without materializing them, and preserve any actual working bytes beneath them. Do not change source Git state to make a backend accept it.
Apply the existing full-source byte/manifest limits and 2 * measured source bytes + 1 GiB writable-space requirement to the new mode. Bind mode, original local inventory/incarnation, measured sources and current review proof to the journal. Preserve compatibility for existing initialized journals/archives; older readers must refuse unsupported new evidence rather than infer success. No implicit cleanup of ignored files, global limit increase or weakened hash/ownership/review guard.
Affected: scripts/lib/initialized_checkout_archive.py (currently initialized-module-required), server/services/initializedCheckoutRecovery.js, process adapter, route/validation and versioned native fixtures. Related to #13334 and the resource work in #13411.
Acceptance
- A synthetic ordinary checkout with a large dependency file and aggregate content above the ordinary caps independently restores every byte and private Git record before supported quarantine/retirement.
- Zero initialized modules, absent gitlinks and populated uninitialized gitlink directories retain their real original state.
- Insufficient capacity, changing bytes/identity, active owners, nested/unknown Git stores and interrupted copy remain safe refusals with originals intact.
- Existing ordinary caps and initialized workflows retain their contracts; exact receipts survive replay without duplicate cleanup.
- Focused validation, required hosted CI, review and merge admission pass. No live cleanup is authorized by filing this issue.
Dispatch: model:heavy for compatible whole-checkout transaction and gitlink semantics; effort:high for preservation, rollback and failure-ordering coverage.
- Lenguaje dominante
- JavaScript
- Estrellas
- 38
- Forks
- 32
- Merge medio
- 46 min
- PR fusionados (30 d)
- 993
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
feimacode/open-design-agent-kit#66 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
xojs/eslint-config-xo#134 ·
-
FEATURE REQUEST
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
linuxmint/cinnamon-spices-extensions#1193 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 80/100
huggingface/transformers.js#1839 ·
Los mantenedores suelen responder en 1 día