Caso real de desarrollo de CONTRABAND

Gates de release: QA, cloud, luego un build

Un producto educativo de Martinez AI Studios

Un App ID de Steam en la tienda no sustituye un gate local que pueda fallar.

El cliente Steam de CONTRABAND (App ID público 4901100) registra un gate de release explícito: npm run qa:release:logic (tests unitarios, ciclos de módulos, edition + grafo de historia + validate-release) más runners Electron de QA de juego y Last Run (inglés/español × teclado/ratón y mando). El log del 15 ago 2026 también registra reglas de save/cloud: el autosave no debe pisar antes de cargar, New Game sube la run nueva a Steam Cloud, y se rechaza un schema de save futuro. Esta página no documenta identificadores admin de Steamworks, cuentas de builder ni credenciales de subida.

Categoría
Release engineering
Proyecto
CONTRABAND
Registrado
2026-08-15
Estado
Verificado · publicado

1. Síntoma

Sin un gate, un build podía salir con Last Run roto en un idioma o un esquema de control, un grafo de historia que aún citaba capítulos inalcanzables, o un save de cloud que pisaba un archivo local más nuevo. Playtestear una máquina en un idioma lo ocultaba.

2. Impacto en el jugador

Un Last Run en el idioma equivocado, celdas de mando que nunca vieron el tutorial, o un restore de cloud que se come el progreso son fallos de jugador. No son “Steam caído”. Son checks que faltaban antes de que el depot saliera live.

3. Reproducción

Leer en package.json los scripts qa:release:logic y qa:release. Correr el target de lógica en CI o en local; tiene que poder fallar. El log de desarrollo de v0.4.89–v0.4.91 indica Last Run Electron EN/ES × KBM/mando 4/4 y qa:release en verde como condición de pase. No pegar Steam Guard, logins de builder ni Partner IDs en notas públicas.

4. Ownership del sistema

Scripts: qa:release:logic y qa:release. Cloud: play/systems/steam-cloud.js (nombre de archivo remoto, debounce, backup antes de overwrite). Saves: save-schema / state. Harness de Last Run: last-run-qa-runner.js. El versionado de la etiqueta marketing/juego es otro pipeline documentado y no es este incidente.

5. Supuesto erróneo

Si corrió en el PC del desarrollador, está listo para Steam. El sync de cloud es “problema de Steam”. Un pase de Last Run en inglés con ratón cubre español y mando. Estar en la tienda equivale a release engineering.

6. Causa raíz

El release es una matriz: idioma × input × save/cloud × grafo de historia × exe empaquetado. Una sola partida muestrea una celda. Autosave-antes-de-cargar y overwrite de cloud son bugs de orden; solo aparecen con dos máquinas o un New Game cuando ya hay archivo en cloud. Sin un script npm con nombre que falle el build, esas celdas siguen siendo opcionales.

7. Arreglo mínimo

Hacer bloqueante qa:release:logic (tests + validate-release + grafo de historia). Añadir celdas Electron de Last Run idioma × dispositivo. Documentar reglas de cloud: no pisar antes de cargar; New Game debe subir la run nueva; rechazar schemas futuros desconocidos. Dejar los datos admin de Steamworks fuera de los casos públicos.

8. Test de regresión

qa:release:logic es el paquete automatizado. last-run-qa-runner.js codifica la matriz de 4 celdas de Last Run. steam-cloud.js queda cubierto por tests de flush en el log. Esta página de la Academy no vuelve a ejecutar esos binarios.

9. Validación de release

Log de desarrollo 15 ago 2026, v0.4.89 (persistencia/cloud/grafo) y v0.4.91 (qa:release en verde, harness Last Run). La ficha pública de Steam sigue en store.steampowered.com/app/4901100/. Aquí no se publican contraseñas de depot ni Partner IDs.

10. Lección generalizada

Publicar es una checklist que puede fallar, no un screenshot de la tienda. Codifica idioma, input y persistencia como celdas. Nunca pongas la identidad admin de Steamworks en textos educativos. Una IA que “solo sube el build” se salta los únicos tests que pillan Last Run y el orden de cloud.

Evidencia pública

  • Scripts de package.json qa:release y qa:release:logic (unit + grafo de historia + validate-release + QA Electron).
  • Log de desarrollo de CONTRABAND, 15 ago 2026, v0.4.89–v0.4.91.
  • play/systems/steam-cloud.js (solo conducta pública: archivo de save con nombre, debounce, backup).

Módulos relacionados del curso insignia

Notas relacionadas