WYL-52: suppress debater mention-chain cascade #1
Reference in New Issue
Block a user
Delete Branch "agent/senior-developer/wyl-52"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Add explicit no-mention rule to all DEBATER_PROMPTS and JUDGE_PROMPT_TEMPLATE.
Each prompt now ends with a bold instruction telling agents not to @-mention other agents, which was the root cause of ~7 cascade tasks firing after the WYL-47 live run.
Implements option 1 from WYL-52: prompt edit (cheap, immediate effect). Escalate to option 3 (marker comment) if cascade volume is still noisy after a follow-up live run.
New module: src/coordinator/orchestrator.py - DEBATER_NAMES, JUDGE_NAME, DEBATER_PROMPTS, JUDGE_PROMPT_TEMPLATE hardcoded for v1 - Per-debater prompts tell each debater exactly which tool output to ground evidence in - orchestrate_pending() is the main entry point called from watch_loop - _start_round(): pending→running, posts debater mention comment, phase→awaiting_debaters - _advance_awaiting_debaters(): polls for replies, handles timeout with partial evidence, posts judge comment, phase→awaiting_judge - _advance_awaiting_judge(): polls for verdict; RACE FIX — update_issue_status() called BEFORE queue.update_status("done") so poll_once can never double-enqueue - Detection: primary=author_id match, fallback=[{name} response]: content marker (enables tests) - Restart-safe: phase field persisted on every mutation; in-flight rounds resume correctly Extended src/coordinator/queue.py: - Round gains phase, phase_entered_at, coordinator_comment_id, judge_comment_id fields - DebateQueue.update_phase() and running() added - All new fields default-empty so existing queue.json files load cleanly Extended src/coordinator/multica_client.py: - update_issue_status() convenience wrapper - create_issue() for integration / smoke tests Updated src/coordinator/__main__.py: - _orchestrate_pending stub replaced with real import from orchestrator Tests: - tests/test_orchestrator.py: 32 new unit tests covering phase transitions, timeouts, race fix ordering, restart resume, full lifecycle - tests/test_integration.py: @pytest.mark.integration test against real API - smoke_test.py: standalone end-to-end script; ran against real API, verdict OK Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>