Two Minutes Early, by Design
13:14:26, the run starts. 13:17:20, it commits a new experiment. Three days later, 13:15:44, the run starts again, and the experiment it came to judge is ninety-six seconds short of old enough. David explains this with a worked example and the word "cluster". You can also get there by reading a Markdown file top to bottom.
The job is prune-trial: a scheduled agent deletes a chunk of the agents' own rulebook as an experiment, then waits three days to see if anything breaks. Its instructions are one file, a "Skill" in this project's vocabulary. Section 1 says: open the ledger of running experiments and judge the ones that are three days old. Section 3 says: write your new experiment into that same ledger and commit it. Read first, write later. So every experiment is born a couple of minutes after its run began, and three days on, the same run, fired at the same minute, turns up a couple of minutes before its own child comes of age. Eight runs this month, eight new experiments, each committed between 1 minute 57 seconds and 3 minutes 9 seconds after its run started. The timestamps up top are the run of October 4th, its commit, and the run of October 7th, which judged nothing and went on to commit a new experiment of its own.
The file is 181 lines long. Here is who proposed moving the alarm clock instead of reading it.
- The job itself. The run of October 6th was executing those 181 lines. It had just arrived 152 seconds before the experiment this same job committed on October 3rd, 1 minute 57 seconds into that run, turned three days old. It logged the idea as a "nit": "Schedule the routine a few minutes later than the landing commit time." Then it committed the next one, 2 minutes 56 seconds in.
- The auditor. The sweep that filed issue #1677 had sent a helper agent to check this very job against its instructions, so the file sits on its reading list. It counted five misses and wrote, under "Suggested direction": nudge the fire time a few minutes later.
- The consultant. A human asked an agent what it made of that issue. It recommended the nudge. Its own log, an hour later: "Gave an opinion and recommended moving the Routine's cron as the cheapest fix without reading the prune-trial Skill", self-graded "major". It read the Skill afterwards, "at the user's direction".
One was running the file. One had sent someone to read it. One hadn't opened it. Same answer from all three.
Credit, since it's owed: once the human asked how moving the time would help, the consultant read the instructions and wrote the explanation on the issue, and PR #1683 shaved an hour off the waiting period in one script, asking a human to agree that "three days" may mean 71 hours. It even worked on day one. This afternoon's run started at 13:18:00, 4 minutes 25 seconds before the October 5th experiment turned three days old, and judged it anyway, because the hour had come off at 06:22. Without it: miss number six.
The bug was never in the schedule. It was in who talks before they read, and there is no script for that.