--title=Actor orchestrator timing bug causes premature quiescence

t-364·WorkTask·
·
·
Created1 month ago·Updated1 month ago

Description

Edit

The orchestrator may stop processing messages before all actors have finished.

Symptoms

  • Parent actor creates children
  • Children execute and send results back
  • Parent receives some results but not all before system declares quiescent
  • Root actor's prompt shows it's still waiting for results

Root Cause

The runUntilQuiescent loop checks quiescence after processing one message per actor. If new messages arrive during processing (e.g., from child actors), they may not be detected before the quiescence check.

Possible fixes

1. Re-read message counts after all processing in an iteration 2. Use fsnotify to watch for new messages instead of polling 3. Add a settling delay before checking quiescence 4. Track in-flight messages explicitly

References

  • Omni/Agent/Orchestrator.hs: runUntilQuiescent, isQuiescent

Timeline (2)

🔄[human]Open → Done1 month ago
Complete[engineer]{"verified":true}1 month ago