# F3 · Entradas fijadas (19/10/2026, sin GPU)

Objetivo: que los envíos finales no dependan de que dfranzen mantenga sus datasets públicos.
Se copian a datasets privados nuestros, byte a byte, las dos entradas que sí se pueden copiar.
Los modelos se quedan donde están, por las razones de la tabla.

## Qué usa el notebook y qué se hizo

| Entrada de M2 | Tamaño | Qué se hizo | Copia |
|---|---|---|---|
| dataset `dfranzen/taaf-kaggle-source-bundle-copy` (bundle del arnés Duck) | 450 KB, 73 archivos | copiado | `rogeernavarro/echo55-arc3-taaf-bundle` (privado, v1) |
| dataset `dfranzen/pennyroyal-v253` (wheels del servidor SGLang) | 6,2 GB, 211 archivos | copiado | `rogeernavarro/echo55-arc3-pennyroyal-v253` (privado, v1) |
| modelo `dfranzen/intel-qwen3.8-flash-next-w4a16-autoround/Transformers/default/1` | 181,2 GB, 50 archivos | **no copiado** | — |
| modelo `dfranzen/albucino-qwen3-8-flash-next-drafter/Transformers/default/1` | 4,2 GB, 12 archivos | **no copiado** | — |
| imagen Docker | — | ya fijada por `sha256:57e612b4…` en `kernel-metadata.json` | — |

## Comprobaciones de las copias

- **Origen = lo que montaron nuestras corridas.** La última actualización de los dos datasets es del 28 y 29/09, anterior a todas nuestras corridas. Las versiones montadas son 20092813 y 20134793 (LOG, diagnóstico v2), y coinciden con las que registra M2.
- **Bundle:**
  - la descarga del 19/10 es idéntica, archivo por archivo (`diff -r`), a la copia local con la que se hicieron todas las pruebas en CPU (`artifacts/upstream/taaf-bundle`);
  - la copia privada, bajada otra vez desde Kaggle, también es idéntica (`diff -r`, 73 archivos);
  - la lista remota de nombres y tamaños coincide con la de dfranzen;
  - las carpetas `src/ARC3-Inference/…` se conservan.
- **Wheels:**
  - la lista de 211 archivos (nombre y tamaño) coincide con la de dfranzen (dos páginas del listado);
  - el zip se descomprimió sin errores de CRC;
  - la copia privada, bajada de nuevo desde Kaggle archivo por archivo, da los **211 SHA-256 idénticos**, con 0 fallos de descarga. Tras crear el dataset, Kaggle tardó más de 40 minutos en permitir bajarlo entero (error 404 mientras tanto); la descarga por archivo funcionó desde el principio;
  - con el mismo `uv` 0.12.20 que extrae el notebook, sin red (`UV_OFFLINE=1`, caché vacía, venv nuevo con Python 3.12), `requirements.lock` se resuelve contra la copia: 208 de 208 paquetes, y el wheel `sglang-0.5.19+gd00d88efc8d6` se resuelve aparte, como en la celda 12.
- **Hashes:** SHA-256 de cada archivo en `docs/campaign/data/f3-inputs/` (`pennyroyal-v253.SHA256SUMS`, 211 líneas; `taaf-bundle.SHA256SUMS`, 73 líneas). Zips descargados:
  - `pennyroyal-v253.zip` `a05bd464…`;
  - `taaf-kaggle-source-bundle-copy.zip` `cd687f4b…`.

## Por qué no se copian los modelos

- **El modelo principal pesa 181 GB.** No cabe en el disco local, con 80 GB libres. Un notebook de Kaggle tampoco puede copiarlo: su salida tiene un límite de unos 20 GB.
- **En Kaggle, la versión de un modelo no se puede cambiar.** La `/1` que usamos es fija; el único riesgo es que dfranzen la borre.
- **Copiar solo el drafter (4,2 GB) no quita ese riesgo:** sin el modelo principal no hay envío.
- **Salida de emergencia sin probar:** `woochangsim/qwen38-flash-next-w4a16-autoround-4c67bf6` es un espejo público del mismo checkpoint de Intel (HF `4c67bf68…`, 29 archivos, 181.240.433.939 bytes). dfranzen partió el shard grande en 22 piezas `model-ple-*` y cambió `config.json`. Por eso ese espejo no sirve tal cual: haría falta cambiar el notebook y probarlo en GPU. Solo se usaría si el modelo de dfranzen desaparece antes del 2/11.

## Candidata final de la base

- `kaggle-m2/tools/make_pinned.py` (9 tests en `tests/test_make_pinned.py`, de RED a GREEN) crea la candidata a partir de la base o de cualquier brazo. Cambios:
  - en la celda 4, `WHEELHOUSE_DIR` y `ORIG_BUNDLE_DIR` buscan nuestras copias, primero en la ruta nueva y después en la antigua;
  - `dataset_sources` sustituye esos dos datasets;
  - nada más cambia.
- `nbcheck.check_metadata` acepta ahora `swapped_datasets`: solo los cambios declarados pasan.
- `kaggle-m2/final/base/`:
  - nbcheck contra M2 (`88a379f1…`) da «3 cambios declarados, JSON válido»;
  - metadatos sin problemas;
  - ipynb `7deec265…`.
- **Prueba de contrato en CPU** sobre `final/base`, con el bundle bajado de nuestro dataset:
  - **OK en 21 s.** ft09, vc33 y wa30 juegan 4 acciones cada uno, sin tracebacks.
  - **Control negativo:** con el bundle de dfranzen disponible y el nuestro no, la celda 4 falla (`cp: … echo55-arc3-taaf-bundle: No existe`). La candidata solo lee nuestra copia.
- Lo que la CPU no puede probar, la instalación real y el servidor en GPU, queda para la corrida offline corta de F3 (DESIGN: ~2,5 h de RTX).

## Licencias

- Las copias son **privadas**. Su descripción da los créditos (Tufa Labs y Jeroen Cottaar; Daniel Franzen; John Pezzulli) y dice que cada contenido conserva su licencia de origen. La licencia de Kaggle quedó como «other», igual que nuestro dataset de helpers.
- **Hacerlas públicas es decisión de Nav** (DESIGN §7), junto con la cuestión de la Qwen Community License frente al requisito de apertura del premio.
