CreaRack-SL

Refuerzo del harness (05-08-2026) — Piezas A·B·C del post-bomberos

Contexto: Mañana de bomberos del 05-08-2026

La madrugada del 05-08, cambios al harness en claude-method (move del gate + retirada del shim + biome) produjeron:

  • 2 sesiones de bomberos sin shell (incompatibilidades de checks)
  • 1 mañana entera de arreglos cruzados (sincronizar copias en Pro y workspace)
  • 35 días de drift invisible: las copias scripts/harness/ del workspace estaban desfasadas, sin alertas

El refuerzo comprende 3 piezas complementarias (A·B·C) + apuesta #5 en el ledger.

Actualización del 05-08 por la tarde (fase 2 del Plan A): las copias scripts/harness/ se retiraron de Pro y del workspace. El pre-commit (hook v2) ejecuta los 4 checks directamente desde claude-method/harness/, con fail-open por fichero. La causa raíz que motivó este refuerzo — copias que se desincronizan en silencio — dejó de existir, y el vigía pasó a v2 (ver más abajo).


Pieza A: Shim del gate

(Anterior a este PR — no documentado aquí; referencia solo para contexto completo)


Pieza B: Lanzador estable de hooks

(Anterior a este PR; integración con pre-commit hooks revisada)


Pieza C: Vigía de drift semanal (ESTE PR — #152)

Automatismo + endpoint que cierra el agujero de visibilidad de 35 días.

Componentes

  1. Script harness-drift-check.sh (OPS, lunes 07:30 UTC)

    • Lee el clon read-only de claude-method en /opt (fetch sin tocar working trees)
    • Calcula el HEAD de claude-method/origin/main
    • POST a /api/harness/drift-run
    • v2 (fase 2 del Plan A): la comprobación de paridad byte-a-byte de las copias scripts/harness/ se retiró — no hay copias que comparar. El campo copies del payload viaja vacío y el cruce con los perfiles lo hace el endpoint.
  2. Endpoint /api/harness/drift-run (CF Workers)

    • Recibe hechos del cron
    • Valida perfiles (DRIFT publicado, o quieto >7d CON método movido)
    • Gestiona alerta rodante en dashboard:
      • De-dupe: si existe alerta activa "Harness drift:…", reutiliza (UPDATE)
      • Auto-resolve: si no hay issues, desactiva la alerta
    • Heartbeat en activity_log (watchdog 200h)
  3. Runbook wiki — [[ia-tech—metodo—runbook-cambios-harness]]

    • Las 4 leyes del harness distribuido
    • Checklists por tipo de cambio (mover un hook · cambiar un check · docs compartidos)
    • Cómo evitar drift futuro

Flujo end-to-end

Lunes 07:30 UTC
    ↓
harness-drift-check.sh (OPS)
    • git fetch origin/main en /opt/claude-method
    • method_head = rev-parse --short=7 origin/main
    • SELECT * FROM harness_status
    ↓
POST /api/harness/drift-run
{
  "method_head": "abc1234",
  "copies": []          ← v2: las copias scripts/harness/ ya no existen
}
    ↓
/api/harness/drift-run handler
    • Valida perfiles (DRIFT publicado, o >7d quieto con el metodo por delante)
    • De-dupe: busca alerta activa "Harness drift:…"
    • INSERT (si nueva) o UPDATE (si existe)
    • INSERT heartbeat en activity_log
    ↓
Dashboard
    • Widget HARNESS muestra alerta
    • Dev ve: "perfil txell 9 dias sin converger, metodo movido por delante"
    ↓
Dev pullea / repara → la siguiente ejecución (lunes 07:30 siguiente) auto-resolve

Apuesta #5 del ledger (WAGERS.md)

Apuesta #5: 2026-08-05
Refuerzo del harness tras mañana de bomberos (shim del gate + paridad copias + numeración reglas):
  • Vigía drift semanal OPS + runbook + lanzador estable + matar copias scripts/harness/
  
Criterio de éxito:
  Los PRÓXIMOS 3 CAMBIOS del harness (commits a claude-method tocando plugins/hooks/checks)
  NO generan:
    - Sesiones de bomberos >15 min en perfil distinto del autor
    - Drift de copias/perfiles >7 días sin alerta en dashboard
  
Baseline:
  Los 3 últimos cambios (03-08, 04-08, 05-08) → 2 sesiones bomberos + 1 mañana arreglos + 35 días drift invisible
  
Verificación:
  Dashboard alerts + WORKLOG bitácora de sesiones
  
Target: Al 3er cambio post-refuerzo completo (o 2026-11-30 si no hay 3 cambios)
Status: ⏳ Abierta

Cronograma del refuerzo completo

PiezaFechaPRStatusNotas
A (shim gate)03-08?✓ MergeGate temporal para bloquear checks incompatibles
B (lanzador hooks)04-08?✓ MergePre-commit estable, reintentos, stderr
C (vigía drift)05-08#152✓ MergeESTE PR — endpoint + cron + alerta rodante
Runbook harness05-08—✓ Publicado[[ia-tech—metodo—runbook-cambios-harness]] — 4 leyes + 3 checklists
Eliminar copias05-08Plan A fase 2✓ HechoCopias scripts/harness/ retiradas de Pro y workspace; el hook v2 ejecuta los checks desde claude-method/harness/ y el vigía pasa a v2

Impacto observable

En el dashboard

  • Nuevo widget “Vigía harness” con alerta rodante
  • Desaparece cuando todo vuelve a converger (auto-resolve)

En logs OPS

  • Log semanal: harness-drift-check OK (0 problemas(s), head=abc1234, 2.5s)
  • Heartbeat visible en activity_log (permite cron-heartbeat verificar)

En alertas

  • Primero: alerta por perfil quieto >7 días con el método movido por delante
  • Después: alerta resuelta automáticamente

Riesgo mitigado

Anterior: 35 días de drift invisible → bomberos inesperados al siguiente cambio
Ahora: dos capas — la fuente única en ejecución elimina la desincronización de copias de raíz, y la alerta semanal deja ver en 7 días máximo si un perfil se queda atrás


Véase también

  • [[entity—functions—endpoint—harness-drift-run]]
  • [[runbook—harness—cambios-harness]]
  • [[entity—functions—endpoint—harness-status]]
  • [[decision—20260805—refuerzo-post-bomberos-harness]]
  • [[incident—20260805—manana-bomberos-harness]]