064. An agent's schedule is its own Scala calendar, co-owned with the owner

Status: accepted 2026-10-19 by the owner; reviewed by Scala's author (jimmy-crib/vpavlin, against scala main 7fcf52f) and amended; amended again the same day for how Scala syncs (below, "Over the mesh"). The runner, the schedule tool and the Scala client are built against Scala 0.12.5; the mesh bearer is not. Decides what docs/agents-calendar.md (2026-10-05) left open.

Context

The owner wants agents to do things on a schedule. Examples:

The lesson from running Jimmy under OpenClaw was that its schedule lived where nobody could see it. Václav had to ask for it, and the answer did not match what ran. A schedule has to be something he can see and change at any time.

He also does not want to be its only writer. A routine is usually agreed in conversation ("yes, do that every morning"). Having to open a calendar and type it in afterwards is the friction that makes schedules live in an agent's head.

Heartbeats were switched off once already, for burning tokens on nothing (ADR-042). A schedule that wakes a model to find nothing changed repeats that.

Scala (its author's review, 2026-10-19, scala main 7fcf52f) gives us:

Decision

Each agent session that has a schedule has its own Scala calendar. The owner and that session are its two editors, and nobody else writes to it.

Over the mesh, not a delivery node per machine

A delivery node on every machine for a few calendars is too much: more traffic, and on 2026-10-19 the Logos Delivery network was failing for hours (delivery_module 0.4.0, logos-co/logos-delivery-module#169; the mesh's own rendezvous restarting across the fleet). A hub holding every session's keys was weighed and turned down: what a key enforces would then rest on a table.

Scala on each machine syncs over the Shrooms mesh instead.

Consequences