Programs rarely fail at kickoff. The plan is usually fine. They fail in the ordinary weeks between, where small slips compound quietly until the date is suddenly at risk. The weekly rhythm is what catches that early.
My default rhythm is light. One short session on blockers, focused only on what's stuck and who can clear it. One on dependencies, focused only on what's about to hand off and whether the receiving side is ready. Everything else moves async, because a meeting that could have been a written update costs the team more than it returns.
The discipline is keeping the meetings about decisions, not status. Status can be read. The live time is for the things that need a human to unblock or a group to decide. When a sync turns into a round of updates, I cut it.
At Atlassian I traded a heavy weekly all-hands for this tighter cadence and decisions got faster, not slower. Fewer people in fewer rooms making more calls. The rhythm isn't about meeting more. It's about putting the live time only where live time is the only thing that works.