A second calendar trigger overlaps ordinary work but records a skip when a lock is held.

Cron repeats on the calendar

Cron matches calendar fields and launches commands at matching times. It does not inherently wait for an earlier invocation of the same command to finish. If a minute-level task takes seventy seconds, the next minute can launch another copy. Treat trigger policy, concurrency policy, and successful completion as separate responsibilities when operating recurring work. ...

September 30, 2027 · 5 min · XB Field Notes
A workflow file wiring an event to a set of jobs on runners.

GitHub Actions workflows gate the build

CI that shows on every pull request keeps reviews honest. The workflow YAML in the repo is that contract, versioned with the code it checks. YAML is the contract The workflow YAML says both when something runs and with what rights, so it is the whole contract rather than just a recipe. A on: block names the triggers, a permissions: block pins what the workflow can touch, and a jobs: section declares the runners and steps. Because on is read before any job runs, a workflow is also where you decide that a pull_request must pass tests to be mergeable or a schedule can run it unsupervised. Version the file with the code it checks, so a branch’s CI always reflects the branch’s own contract. ...

September 2, 2027 · 6 min · XB Field Notes
The timer controls future activation while the service records execution results.

A systemd timer schedules a service, not its success

A systemd timer separates the scheduling rule from the service that performs the work. The timer decides when to request activation; the service supplies the command, execution identity, environment, timeout, and result. This separation makes a maintenance job inspectable using normal unit tools. It does not turn a scheduled attempt into proof that a backup, cleanup, or report completed correctly. ...

June 21, 2027 · 5 min · XB Field Notes
A declarative, repeatable instruction set that moves a machine toward a stated target.

An Ansible playbook declares the state you want, not the steps

An Ansible playbook records the state a machine should have. That distinction matters after a partial deploy: the next run observes what is really present and repairs only the missing pieces, rather than blindly replaying every command from the beginning. A playbook is an executable contract between the inventory, the modules, and the operator who reviews the change. ...

January 17, 2027 · 5 min · XB Field Notes
Calendar times and elapsed intervals define different scheduling contracts.

Choose the clock and catch-up rule for a systemd timer

A schedule must specify what time means. “At nine each morning in New York” refers to a civil-time calendar. “A quarter hour after this job finishes” refers to an elapsed interval and an event. systemd timers support both, but the two clocks and reference points have different behavior around time-zone changes, suspension, and periods when the timer is inactive. ...

November 20, 2026 · 5 min · XB Field Notes
Observe, decide, and act panels for checking a retried scheduled job.

Scheduled jobs need to be safe to rerun

A scheduler starts attempts, while the business usually cares about completing a logical task. One daily credit may be attempted several times after an error, a restart, or an operator retry. Giving every attempt a new identifier makes those duplicates indistinguishable from new work. Use a key that identifies the intended task, such as its name and nominal scheduled time, and define what a repeated key means before changing business state. ...

August 15, 2026 · 5 min · XB Field Notes