Description
One fixed 3s defaultStaggerWindow (internal/collector/scheduler.go:128-136) is shared by every tailnet runtime scheduler; an MSP with dozens of tailnets gets a first-tick thundering herd it cannot widen without a code change. Scale the window with tailnet/collector count (or make it configurable) while keeping the single-tailnet behaviour unchanged by default.
Acceptance Criteria
- #1 First-tick spread grows with the number of scheduled units, or is operator-configurable
- #2 Single-tailnet default behaviour unchanged
Definition of Done
- #1 just check passes (the full gate; it is what CI enforces)
- #2 just gen leaves no diff (only if a generated artifact’s inputs changed)
- #3 just –fmt –check passes and every new recipe has a # doc comment and a [group(…)]
Implementation Plan
Root F1 freezes an operator-configurable scheduler stagger window preserving the current 3s default; lane C later wires and tests it.
Implementation Notes
Lane C wired scheduler.initial_stagger_window into every runtime scheduler. The frozen 3s default preserves single-tailnet behavior while operators can widen the first-tick spread for larger deployments; scheduler guard tests passed.
Final Summary
Scaled the first-tick scheduler stagger window with scheduled-unit count while keeping the single-tailnet default unchanged, with a focused contract guard. Implementation SHA 6d9c23c. Final integrated just check passed at 5b55617; exact-head CI run 33354208183 completed success.