@@ -741,6 +741,55 @@ func TestReconcileSessionBeads_BlockedCandidatesDoNotConsumeWakeBudget(t *testin
741741 }
742742}
743743
744+ // TestReconcileSessionBeads_DaemonMaxWakesPerTickOverride covers the fix for
745+ // issue #772: [daemon].max_wakes_per_tick = N raises (or lowers) the wake
746+ // budget away from the 5-per-tick default. Cities with slow cold-starts
747+ // need this to drain the candidate queue.
748+ func TestReconcileSessionBeads_DaemonMaxWakesPerTickOverride (t * testing.T ) {
749+ env := newReconcilerTestEnv ()
750+ override := 8
751+ env .cfg = & config.City {
752+ Daemon : config.DaemonConfig {MaxWakesPerTick : & override },
753+ Agents : []config.Agent {
754+ {Name : "ready-1" },
755+ {Name : "ready-2" },
756+ {Name : "ready-3" },
757+ {Name : "ready-4" },
758+ {Name : "ready-5" },
759+ {Name : "ready-6" },
760+ {Name : "ready-7" },
761+ {Name : "ready-8" },
762+ {Name : "ready-9" },
763+ },
764+ }
765+ names := []string {"ready-1" , "ready-2" , "ready-3" , "ready-4" , "ready-5" , "ready-6" , "ready-7" , "ready-8" , "ready-9" }
766+ for _ , name := range names {
767+ env .addDesired (name , name , false )
768+ }
769+
770+ var seeded []beads.Bead
771+ for _ , name := range names {
772+ b := env .createSessionBead (name , name )
773+ env .markSessionCreating (& b )
774+ seeded = append (seeded , b )
775+ }
776+
777+ woken := env .reconcile (seeded )
778+
779+ if woken != override {
780+ t .Fatalf ("woken = %d, want %d (overridden wake budget)" , woken , override )
781+ }
782+ // First 8 run, 9th is deferred_by_wake_budget.
783+ for _ , name := range names [:override ] {
784+ if ! env .sp .IsRunning (name ) {
785+ t .Fatalf ("%s should have started under override=%d" , name , override )
786+ }
787+ }
788+ if env .sp .IsRunning (names [override ]) {
789+ t .Fatalf ("%s should have been deferred once budget hit" , names [override ])
790+ }
791+ }
792+
744793func TestPrepareStartCandidate_NoneModeInitialMessageStaysInNudge (t * testing.T ) {
745794 store := beads .NewMemStore ()
746795 bead , err := store .Create (beads.Bead {
0 commit comments