Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

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

Aperta
#752 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
55/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
python
Ambito
cli

Direzione di ricerca

Inizia dalla gestione del triage e della migrazione di sweep.py, quindi esamina SessionResult.stop_seen, validate_triage, validate_migration e il percorso cmd_validate. Riproduci o testa una sessione non completata con un result.json di convalida e un'esecuzione con zero eventi, quindi conferma che il risultato non venga erroneamente ritenuto responsabile mentre il collegamento mancante dell'hook viene reso visibile o messo in pausa.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.

Lingua principale
Python
Stelle
146
Fork
68
Merge medio
1g 21h
PR unite (30g)
48

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di bmad-code-org/bmad-loop

Tutte le issue di bmad-code-org/bmad-loop

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.