--title=Actor orchestrator timing bug causes premature quiescence

t-364·WorkTask·
·
·
Created3 months ago·Updated3 months ago·pipeline runs →

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 → Done3 months ago
Complete[engineer]{"verified":true}3 months ago