Outcome
By the end of this lesson, you will be able to read the 24-hour weekly grid and spot gaps and overlaps in a schedule before save.
| Tier | Operator |
| JTBD | ”Catch the cron bug before it costs us a Saturday outage.” |
| Personas | All product users |
| Prerequisites | L1, L2 |
| Time | 10 minutes |
| Bloom verb | Read (Understand) and Spot (Analyze) |
1. Concept
A cron expression is exact and tells you nothing about what it looks like in practice.
You can write three of them, read them back, be entirely satisfied, and find out on Saturday that the machines ran all weekend. The grid is there so you find out before you press save, not afterwards on the bill.
What the grid shows
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23Mon ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ░░ ░░ ░░ ░░Tue ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ░░ ░░ ░░ ░░Wed ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ░░ ░░ ░░ ░░Thu ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ░░ ░░ ░░ ░░Fri ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ░░ ░░ ░░ ░░Sat ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░Sun ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░
LEGEND: ██ ON ░░ OFFThis is the visual representation of 0 8 * * 1-5 (start) + 0 20 * * 1-5 (stop). The grid shows ON blocks at 8 AM through 8 PM on weekdays, OFF blocks everywhere else.
In the product the grid responds to the mouse. Hover any square and it tells you what put it in that state: started by the first cron at 08:00, stopping at the second at 20:00.
The three mistakes it catches
Failure 1: The unintended gap.
Cron: 0 8 * * 1-5 (start) + 0 18 * * 1-5 (stop). Intent: “weekdays 8am-6pm.”
Grid:
... 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20...Mon ░░ ░░ ░░ ██ ██ ██ ██ ██ ██ ██ ██ ██ ░░ ░░ ░░...ON 8 AM through 6 PM. That’s 10 hours per weekday, not 12. If the intent was 8 AM through 8 PM, the cron 0 18 * * 1-5 is wrong: it stops too early. The grid reveals this. The fix: change the stop cron to 0 20 * * 1-5.
Failure 2: The unintended overlap.
Cron #1: 0 8 * * 1-5 (start), Cron #2: 0 20 * * 1-5 (stop), Cron #3: 0 9 * * 1-5 (start).
The third one does nothing. It starts a resource at 9 AM that the first one already started at 8. The grid shows two starts in the same morning. Nothing breaks; the action log just fills with events that meant nothing. Delete the third cron.
Failure 3: The weekend trap.
Cron #1: 0 8 * * 1-5 (start), Cron #2: 0 20 * * 1-5 (stop).
Mon-Fri ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ░░ ░░ ░░ ░░Sat ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░Sun ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░ ░░This is correct AS LONG AS the resource was OFF on Friday at 8 PM. If a manual start fired on Friday 9 PM (for an overnight build), the schedule has no stop cron between Friday-stop (already passed at 8 PM) and Monday-start (next firing): so the resource stays running all weekend.
The fix: add a belt-and-suspenders weekend stop cron: 0 0 * * 0,6 (“midnight Saturday and Sunday”). It’s redundant when the schedule is operating normally but catches the edge case.
Reading the grid for one specific firing
Hovering over any cell in the grid (in the product) shows the firing context:
Tuesday 14:30 (cell hover)─────────────────────────────────────────────────State at this time: ONMost recent firing: Cron #1 at Tuesday 08:00 (Start)Next firing: Cron #2 at Tuesday 20:00 (Stop)Time until next: 5h 30mThis is the right level of detail to confirm the schedule’s behavior at any point in the week.
What the grid does NOT show
Two limitations:
- It does not show overrides. Force-on / force-off overrides (M1.5) can suspend the schedule’s normal pattern for a window. The grid shows the schedule’s intent, not the runtime state.
- It does not show resource-specific differences. If a resource has its own override, the grid still shows the schedule’s default pattern. Per-resource state is in the resource detail page.
The grid is a schedule preview. The Resources page is where you see actual current state.
Comparing two schedules side by side
For complex coverage (multiple schedules acting on overlapping resource sets), the Schedules page can render two grids side by side. This is useful when designing complementary schedules; e.g., “Business Hours” + “Weekend Scale-Down” that together cover 168 hours/week without gaps or overlaps.
SCHEDULE A: Business Hours SCHEDULE B: Weekend Scale-Down
Mon ░░░░██████████████████████░░░░ Mon ░░░░░░░░░░░░░░░░░░░░░░░░Tue ░░░░██████████████████████░░░░ Tue ░░░░░░░░░░░░░░░░░░░░░░░░......Sat ░░░░░░░░░░░░░░░░░░░░░░░░░░░░ Sat ░░ ON only midnight ░░Sun ░░░░░░░░░░░░░░░░░░░░░░░░░░░░ Sun ░░ stop firing ░░Together they ensure resources are OFF outside business hours and OFF entirely on weekends. The visual shows the combined effect.
2. Demo
A real schedule design session, with the grid catching a bug:
INTENT: Stop dev outside business hours and weekends, EU timezone.
ATTEMPT 1 (two crons): Cron #1 "0 9 * * 1-5" Start 09:00 weekdays Cron #2 "0 21 * * 1-5" Stop 21:00 weekdays
Grid shows: ON 09:00-21:00 weekdays. Weekend grid all OFF. But: WHAT IF A RESOURCE WAS LEFT ON FRIDAY EVENING? It would stay on all weekend (no stop cron until Monday).
ATTEMPT 2 (add weekend belt-and-suspenders): Cron #3 "0 0 * * 0,6" Stop midnight Saturday and Sunday
Grid shows: ON 09:00-21:00 weekdays. OFF all weekend, with a stop re-fired at midnight Saturday and Sunday for safety.
Save. The schedule covers the intent fully.Without the grid, the missing weekend stop cron would have been invisible until somebody manually started a dev resource on Friday evening and forgot. The grid catches the gap before save.
3. Hands-on (6 min)
For your test schedule from L1:
1. Open the schedule in edit mode.2. View the 24-hour weekly grid.3. Hover over each hour of each day. Confirm the state matches intent.4. Look specifically for: - Gaps you didn't intend - Overlaps from redundant crons - Weekend behavior (especially if your schedule has weekday-only crons)5. If you find a gap, add a belt-and-suspenders stop cron.6. If you find an overlap, remove or merge crons.7. Save the corrected schedule.4. Knowledge check
Q1
The 24-hour weekly grid renders the schedule in:
A. UTC always
B. The schedule’s IANA timezone; so a team in Asia/Kolkata sees the grid relative to their local time, not UTC
C. The viewer’s own local browser timezone, rather than the schedule’s own configured timezone setting
D. America/New_York
Show answer
Correct: B. Grid renders in the schedule’s IANA timezone. Crons are interpreted in that timezone; the grid displays the same way.
Q2
A schedule has 0 8 * * 1-5 start and 0 18 * * 1-5 stop. A resource is running Friday at 9 PM (it was started manually). The schedule next fires Monday at 8 AM. Between Friday 8 PM and Monday 8 AM, the resource state:
A. Stops automatically Friday at 8 PM
B. Stops at noon Sunday
C. Stays running
D. Stops at midnight automatically
Show answer
Correct: C. No stop cron fires between Friday 8 PM (after the stop cron) and Monday 8 AM. The fix is to add a belt-and-suspenders weekend stop cron (e.g., “0 0 * * 0,6”). Cron does not “track” state across firings. A manual start outside the cron firing windows persists until another cron stops it. Belt-and-suspenders weekend stops are the fix.
Q3
The grid shows two ON triggers at 08:00 and 09:00 on the same weekday. Most likely cause:
A. The cron is firing twice
B. Two redundant start crons exist
C. The schedule is broken
D. The IAM role is misconfigured
Show answer
Correct: B. One at “0 8 * * 1-5” and another at “0 9 * * 1-5.” Remove the second; it adds no value and produces noise in the action log. Two start crons firing at different times within the same ON window are redundant. The second start is a no-op on an already-running resource. Remove for cleanliness.
5. Apply
The grid is a first-class part of the schedule create / edit flow:
- Schedule create dialog: grid renders as crons are added
- Schedule detail page: grid for any saved schedule
- Side-by-side view: compare two schedules to verify complementary coverage
For schedule design patterns (rolling environments, freeze windows).
Related lessons
Glossary terms touched
24-hour weekly grid · Gap (schedule) · Overlap (schedule) · Belt-and-suspenders cron