fix(supervisor): evaluator misclassifies EXIT:0 as backend error + diagnostic subtask newline parsing#490
Conversation
…agnostic subtask newline parsing Bug 1: evaluate_worker() checked backend_error_count before exit_code==0, causing tasks with clean exits but backend error strings in log content to be classified as retry:backend_infrastructure_error. Moved backend error check inside the non-zero exit code guard (Tier 2 heuristics). Also moved backend_error_count grep to tail-only search with anchored 503 pattern (consistent with health check fix in PR #488). Bug 2: create_diagnostic_subtask() embedded raw log tail (with newlines) into the task description stored in SQLite. When cmd_next returned this as tab-separated output, embedded newlines caused EXIT:0 and DIAGNOSTIC_CONTEXT_END to be parsed as separate task IDs. Fixed by replacing newlines/tabs with spaces in failure_context before storage. Defense: Added task ID validation guard in both pulse dispatch loops to skip malformed IDs (empty, containing spaces/colons, non-alphanumeric).
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
|
Warning Rate limit exceeded
⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
🔍 Code Quality Report�[0;35m[MONITOR]�[0m Code Review Monitoring Report �[0;34m[INFO]�[0m Latest Quality Status: �[0;34m[INFO]�[0m Recent monitoring activity: 📈 Current Quality Metrics
Generated on: Sat Feb 7 23:32:00 UTC 2026 Generated by AI DevOps Framework Code Review Monitoring |
|



Summary
Bug 1:
evaluate_worker()checkedbackend_error_count > 0before theexit_code == 0clean-exit path, causing tasks with clean exits but backend error strings in log content (e.g., documenting APIs, discussing error handling) to be misclassified asretry:backend_infrastructure_error. Moved backend error check inside the non-zero exit code guard (Tier 2 heuristics). Also movedbackend_error_countgrep from full-log to tail-only search with anchored503pattern (consistent with health check fix in PR fix(supervisor): health check 503 false positive on JSON timestamps #488).Bug 2:
create_diagnostic_subtask()embedded raw log tail (containing newlines) into the task description stored in SQLite. Whencmd_nextreturned this as tab-separated output parsed withwhile read, embedded newlines likeEXIT:0andDIAGNOSTIC_CONTEXT_ENDwere parsed as separate task rows with malformed IDs. Fixed by replacing newlines/tabs with spaces before storage.Defense: Added task ID validation guard in both pulse dispatch loops to skip malformed IDs (empty, containing spaces/colons, non-alphanumeric characters).
Testing
bash -nsyntax check passesFixes bugs discovered during batch-20260207 supervisor run (memories:
mem_20260207230227_00095302).