Autoretto.
← All posts
How it works · August 14, 2026 · 3 min read · Autoretto Daily

How scheduling now works: past slots, hourly cron, and a last-release stamp

We changed how scheduling talks to uploads. It used to be about picking a future time and waiting. Now it's about looking backward. The scheduler keys off the most recent past slot inside a catch-up window. That single change fixed a lot of headaches.

Here's the idea. The system keeps a schedule of publish slots. If a slot passes without an upload, it's not lost. The next time the scheduler runs, it looks for the most recent slot that is still inside the catch-up window. That slot becomes the target. There is no need to wait for a future timestamp. If the schedule says 10 AM and it's now 3 PM, the system will try to publish that 10 AM slot as soon as it can.

But that only works if the scheduler runs. We didn't want to require someone to keep a browser tab open. So we added an hourly cron. Every hour, the cron process wakes up and checks for due slots. A slot is due if its time has passed and it hasn't been filled. The cron drains those slots one by one. No browser needed. The dashboard can be closed and the cron still does its job.

Running a cron hourly creates a risk. Multiple runs can overlap. Maybe a manual run happens at the same time as the cron run. Or the cron itself takes longer than an hour. If two processes pick the same slot, you could get a double upload. We needed a guard. That guard is a last-release stamp.

The stamp is simple. Every published release writes a record with the slot time it filled. Before any run publishes, it checks that stamp. If the slot already has a release, the run skips it. Even if two runs start at the same moment, only the first one to write the stamp gets to upload. The other one sees the stamp and moves on.

This is how it fits together on a normal day. The schedule has slots at 9, 12, and 15. At 11 the cron runs. It sees the 9 slot is still inside the catch-up window and has no stamp. It generates the video and publishes. It stamps the 9 slot as done. At 12 another run happens. It sees the 9 slot is stamped but the 12 slot is due. It publishes that. At 14 you open the dashboard and hit publish manually. The system checks the 12 slot, sees it's stamped, and does not touch it. The 15 slot is not yet due, so nothing happens.

The catch-up window is finite. A slot that is too far in the past gets skipped. That keeps the system from trying to publish something from a month ago. The cron only drains slots inside the window. So if your channel goes dark for a week, the system will fill the most recent slots when it comes back, but it won't try to fill every hour of that week.

The result is a scheduler that doesn't need a person at the keyboard. It catches up on missed slots, it runs on a simple cron, and it never publishes twice. That matters for a platform that is supposed to run on its own.