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. Elpre-commit(hook v2) ejecuta los 4 checks directamente desdeclaude-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
-
Script
harness-drift-check.sh(OPS, lunes 07:30 UTC)- Lee el clon read-only de
claude-methoden/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 campocopiesdel payload viaja vacío y el cruce con los perfiles lo hace el endpoint.
- Lee el clon read-only de
-
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
- De-dupe: si existe alerta activa
- Heartbeat en
activity_log(watchdog 200h)
-
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
| Pieza | Fecha | PR | Status | Notas |
|---|---|---|---|---|
| A (shim gate) | 03-08 | ? | ✓ Merge | Gate temporal para bloquear checks incompatibles |
| B (lanzador hooks) | 04-08 | ? | ✓ Merge | Pre-commit estable, reintentos, stderr |
| C (vigía drift) | 05-08 | #152 | ✓ Merge | ESTE PR — endpoint + cron + alerta rodante |
| Runbook harness | 05-08 | — | ✓ Publicado | [[ia-tech—metodo—runbook-cambios-harness]] — 4 leyes + 3 checklists |
| Eliminar copias | 05-08 | Plan A fase 2 | ✓ Hecho | Copias 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]]