15 Trazabilidad de Artefactos y Runbook
15.1 Mapa Maestro Claim → Artefacto → Test
Esta página es el índice maestro del CRPTO. Cumple un rol específico que ningún chapter narrativo cumple: dar a un revisor (académico, regulatorio o interno) la capacidad de tomar cualquier claim del paper, encontrar el artefacto exacto que lo soporta, identificar el script generador y verificar el guardrail que mantiene la coherencia. Es el contrato de trazabilidad operativa del proyecto.
15.1.1 Tabla maestra: claims C1–C7
15.1.2 Mapa figura → script → fuente
15.1.3 Mapa tabla A → script → fuente
15.1.4 Runbook: regenerar el paquete completo
# 1. Verificar entorno Windows nativo
uv run python --version
# 2. Regenerar tablas paper-facing canónicas (A0-A6)
uv run python scripts/export_crpto_tables.py
# 3. Regenerar evidencia CRPTO con hardening (A7-A11)
uv run python scripts/analyze_crpto_evidence.py --include-hardening
# 4. Regenerar journal package (A12-A18 + Figuras 12-14)
uv run python scripts/build_crpto_journal_package.py
# 5. (Opcional) Regenerar figuras publicación (7-11)
uv run python scripts/generate_crpto_figures.py
# 6. Validar coherencia con tests guardrail
uv run pytest tests/test_crpto_final_sync.py tests/test_quarto_book_guardrails.py
# 7. Renderizar libro Quarto
uv run -- quarto render book --to html --no-execute
# 8. Abrir resultado
Test-Path book/_book/index.html15.1.5 Runbook: familias congeladas vs familias de búsqueda
La regla operativa más importante para reproducibilidad es que los pipelines paper-facing no vuelven a buscar el champion. Consumen la policy congelada en models/champion_portfolio_policy.json mediante explicit_champion_only. Solo las familias nombradas como búsqueda pueden reabrir HPO, conformal search o portfolio search.
crpto_e2e, paper2_e2e, core_canonical y canonical_rebuild son rutas de regeneración, no rutas de descubrimiento. Si un rerun de esas familias produce una policy distinta al economic champion rt=0.175, gamma=0.45, blended_uncertainty, uncertainty_aversion=0.10, eso es una regresión del pipeline y no un nuevo resultado del paper. La única forma válida de cambiar el champion es abrir una familia search_*, versionar el run, comparar por familia compatible y actualizar la promoción explícitamente.
15.1.6 Regla sobre _freeze
El libro usa execute: freeze: true en book/_quarto.yml. Eso significa que un render intencional puede crear o actualizar archivos bajo book/_freeze/. La regla operativa es simple: si el render se hizo para cerrar una página del CRPTO, el cache asociado se versiona junto con la página; si el render fue exploratorio, se revisa antes de incluirlo en un commit. No hay que borrar _freeze como limpieza automática porque forma parte de la reproducibilidad del libro.
Si cualquier tabla del paquete (A0–A18) o cualquier figura (7–14) contradice los valores en models/final_project_promotion.json, gana siempre final_project_promotion.json. Las tablas/figuras son evidencia de robustez, sensibilidad y empaque journal; nunca son una promoción nueva del champion. La regla está implementada en los tests tests/test_crpto_final_sync.py y se ejecuta en CI.
15.1.7 Estado de los status JSONs canónicos
15.1.8 Where to look first (índice por pregunta de revisor)
| Si el revisor pregunta… | Ir directamente a… |
|---|---|
| ¿Cuál es el champion y por qué? | 06-blueprint-manuscrito.qmd + models/final_project_promotion.json |
¿Por qué score_decile_mondrian y no grade? |
08-ablacion-mondrian.qmd (Sección 10.1) |
| ¿Cómo se midió el 49.1% de SPO+? | 09-spo-regret.qmd (Sección 11.1) |
| ¿Pasa fairness? | 10-fair-lending.qmd (Sección 12.1) |
| ¿Pasa MRM/SR 11-7? | 11-mrm.qmd (Sección 13.1) |
| ¿Cómo está compuesto el funded set? | 12-funded-set.qmd (Sección 14.1) |
| ¿Cuál es el bound exacto y cómo se demuestra? | 02-marco-teorico.qmd (thm-conformal-feasibility) |
| ¿Cuál es la región robusta? | 04-resultados.qmd sección Región robusta completa + Fig 14 |
| ¿Qué pasó con el shift COVID? | 04-resultados.qmd (Sección 5.0.8) |
| ¿Cuáles son los appendices journal? | 07-apendice-robustez.qmd (Sección 9.1) |
| ¿Cómo regenero todo? | Esta página, sección Runbook arriba |
| ¿Cómo sé que un rerun no reabre búsqueda? | Esta página, sección Runbook: familias congeladas vs familias de búsqueda |
Esta tabla cumple un propósito muy concreto: cuando un revisor mande comentarios, no hay que buscar — hay un mapa directo.