Something a model could not do, and so wrote a note about instead

Asked to remind somebody every Monday, a model looked down its tool list, found
notes_create described as "something worth having in a later conversation" and
memory_add beginning with the word Remember, wrote a note, and reported that it
had scheduled something. Every screen agreed with it. There was no scheduling
tool at all -- the near-misses were the only thing there was to reach for, and
nothing anywhere said the thing it was being asked for existed.

The seam had been left open on purpose: Schedule.origin has defined
ORIGIN_MODEL, with no writer, since scheduling shipped, and services/schedules.py
says in its first line that it holds what the routes *and the tools* both need.
This is the tool that was meant to go through it.

Four of them, and a thin layer: rule.validate is still the one total normaliser
the form and the compile share, schedules.create still writes the row and the
task chat together, and rule.describe still says what came out. A second dialect
for models would mean two definitions of "every other Tuesday" and one of them
going quietly wrong.

The result is that description, never "done". A schedule is invisible until it
fires, which may be days away, so the sentence in the reply is the only moment
anybody can check that Monday was read as Monday -- and the tool says so, in the
text the model reads back. The list badges the ones nobody typed.

Gated on schedule.use rather than a permission of its own: somebody who may set
one up by hand may say so to a model instead, and a second checkbox beside the
first would only ever be answered "the same as that one".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jaroslav Beneš
2026-08-06 10:28:05 +02:00
parent 14b1428f9f
commit feca8861a1
10 changed files with 955 additions and 12 deletions
+9 -3
View File
@@ -407,14 +407,20 @@ seen working.
container on the network
### Phase 1 — the scheduling tools (`0.9.0`)
- [ ] **A model can schedule.** There was no tool for it — the seam was left
- [x] **A model can schedule.** There was no tool for it — the seam was left
(`Schedule.origin` has defined `ORIGIN_MODEL` with no writer since
scheduling landed) and the tool was never built, so a model asked to
"remind me every Monday" wrote a note and said it had. `schedule_create`,
`schedule_list`, `schedule_update` and `schedule_cancel` over the same
`rule.validate` the form and the compile already share
- [ ] Guidance saying which target a run should reach, and that anything which
happens later or repeatedly is a schedule rather than a note
- [x] **The reply says the timing back in words.** A schedule is invisible until
it fires, so `rule.describe` in the answer is the only moment anybody can
check that Monday was read as Monday
- [x] The Scheduled list badges the ones nobody typed
- [x] Guidance saying which target a run should reach, and that anything which
happens later or repeatedly is a schedule rather than a note — said in
`tool.notes` and `tool.memory` as well, because those are what the model
actually reached for
### Phase 2 — image generation admin (`0.9.1`)
- [ ] **Defaults an administrator can set** — steps, cfg, size, sampler,