Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

sweep discards a validating result.json unread on any non-completed status; zero-hook-event runs pass run/sweep untouched

Abierto
#752 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
55/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
python
Área
cli

Línea de trabajo

Empieza por la gestión de triage y migración de sweep.py; después inspecciona SessionResult.stop_seen, validate_triage, validate_migration y la ruta cmd_validate. Reproduce o prueba una sesión no completada con un result.json validable y una ejecución con cero eventos, y confirma que no se culpe incorrectamente al resultado mientras se haga visible o se pause la falta de conexión del hook.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

area:deferred-work bug needs-design P3

Observed (0.10.0)

In sweep.py's triage handling:

if result.status != "completed":
    plan, errors = None, [session_failure_reason("triage", result)]
else:
    plan, errors = validate_triage(result.result_json, open_now)

When the session status is anything but completed, result.result_json is never read. After max_triage_attempts the run escalates with "triage output failed validation: ..." — blaming output that was never validated. The migration path has the same shape (validate_migration runs only on completed). #194's env_fault pause softens the transport-failure case only; a lost event channel is not classified as an env fault.

Incident

Run 20260816-113627-d0b2 (macOS, claude adapter). The hook relay had never been registered in that project, so every session's Stop event was lost and each session read as timeout with session_id: null. Both triage attempts wrote a result.json that passes validate_triage (strict and cache mode alike) — attempt 2 finished its actual work in 59 seconds — and both were discarded on session status alone. The escalation blamed the output; the output was fine. signals.py's own docstring predicts the failure mode: losing Stop events means every session stalls to session_timeout_min — "the loudest possible regression, delivered silently".

Proposals (either or both)

  1. Validate the result artifact on non-completed status too. If it validates, either use it — a timeout with a valid, complete artifact is a completed turn whose Stop event was lost — or at minimum attach "result artifact present and passes validation" to the escalation so the operator debugs the event channel rather than the agent. SessionResult.stop_seen (#261) is already the right discriminator: status == "timeout" and not stop_seen with a validating artifact is the lost-event-channel signature. Routing it like #194's env_fault pause (pause, don't charge attempts) would fit the existing shape.

  2. Make run/sweep enforce the zero-hook-events condition. cmd_validate fails on unregistered, missing, unreadable, or stale relays, but nothing stops a run whose sessions produce zero events: it burns session_timeout_min per session and escalates with the wrong blame. Hard-failing (or pausing) after the first session that ends with stop_seen == False and an empty run events dir would surface the miswiring at session one instead of N timeouts later.

Happy to attach the journal/state.json from the incident run.

Lenguaje dominante
Python
Estrellas
146
Forks
68
Merge medio
1 d 19 h
PR fusionados (30 d)
44

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de bmad-code-org/bmad-loop

Todos los issues de bmad-code-org/bmad-loop

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.