Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

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

Đang mở
#752 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
55/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
python
Lĩnh vực
cli

Hướng nghiên cứu

Bắt đầu với việc xử lý triage và migration của sweep.py, sau đó kiểm tra SessionResult.stop_seen, validate_triage, validate_migration và đường dẫn cmd_validate. Tái hiện hoặc kiểm thử một session chưa hoàn tất với một result.json dùng để validation và một lần chạy có 0 event, đồng thời xác nhận rằng result không bị quy trách nhiệm sai trong khi việc nối hook bị thiếu được hiển thị hoặc tạm dừng.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.

Ngôn ngữ chính
Python
Star
160
Fork
68
Merge trung bình
1 ngày 6 giờ
Pull request đã merge (30 ngày)
90

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của bmad-code-org/bmad-loop

Tất cả issue của bmad-code-org/bmad-loop

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.