Sunday was the best race the robot had run and the day I decided to throw it away.
The race
All 15 checks CORRECT, last one 92.3 seconds after release, zero rate limit hits. Four lanes were done inside 44 seconds:
- Mobile, Encrypted Strings: 6.6 seconds. Nothing new needed.
- Binary, Flow State: 18.6 seconds. Same story. 216 of 216 on the first try.
- Metadata, Frame of Reference: 22.6 seconds. An MP4 video, and the question wanted its width and height. The engine had never opened an MP4, and had to learn on the spot.
- Script, Orphan Process: 43.6 seconds. The hidden descriptor was chopped into pieces of an array and glued back together at runtime. Another thing to learn live.
- Warmups, Off the Rails: 91.6 seconds. The title and the prompt (“Three rails. One very zigzag commute.”) said rail fence cipher out loud.
Warmups was the whole gap. The Single Solve needed a rail fence decoder, and the robot got one. Then the Mastery came back with its sentence cut into 18 lines, each line in a different layer, and line 18 was the brand new rail fence. Our Mastery decoder had not expected the new layer there, and it stopped with no answer. On the board that Mastery is about 65 seconds.
4th
I came out of Sunday 4th of 107 teams that finished all 15. The leader did all 15 checks in about 45 seconds. We were twice as slow as first place, on our best day.
The record, from the public scoreboard (times from the 09:00 release to the board’s own stamp, which lands a hair before our race clock’s 92.3):
- team.dev 45.5 seconds, secretNinja 79.1, Han Shot First 91.7, Wizdumb 91.9. Off the podium by two tenths of a second.
- Flow State (binary) and Encrypted Strings (mobile): 2nd on all three boards, behind team.dev each time.
- Orphan Process (script): 4th on all three.
- Frame of Reference (metadata): 9th on the Single Solve, 4th on the Time Trial and the Mastery. Teaching it MP4 cost 14 seconds against the fastest Single Solve.
- Off the Rails (warmups): 16th, 12th and 15th. team.dev banked that Mastery 6.7 seconds after release; ours landed at 91.9.
Four lanes on or near the podium, one lane a minute and a half late, and that minute and a half was the whole day.
Side note from the morning: the robot found a test process left over from a few days earlier that had been pinning one CPU core for 38 hours straight. Killed it at 09:03. It measured the race with and without it, and it made no difference. Still embarrassing.
The call
About half an hour after the race I made the call: rebuild the robot from scratch, lean, starting now. Day 19 was 23 hours away, and it was bringing a sixth lane nobody had seen.
The old robot had grown for nine days. Every lesson had become a rule, every rule a check, and every check a pause. It was correct and careful, and it was slow in all the places between the solving. The leaders were not beating us on solving. They were beating us everywhere else.
So the old robot got frozen as-is into its own folder, kept as a manual fallback, and a new one started next to it. The rules: the old engines and notes are the knowledge, but every line of code is new. One goal only: every check CORRECT as soon after release as possible.
The build
By about 10:15 the design was frozen, and the robot sent builder agents at it, several at a time, each one handed a written order for one piece.
Around midday I told it “You’re gonna run out of usage”, because it was burning through my limit way ahead of pace. It paused four of the pieces until the window reset and moved most of the builders to a lighter model. It also found out that its own sense of time had drifted: the timestamps it was writing in its notes were 30 to 140 minutes ahead of the real clock. It went back and fixed the tracker from the git history. Lesson: read the clock, do not remember it.
By about 13:25 every piece was built.
At 17:00 it ran its first real timed run on the live Game Master: Day 18 mobile, Single Solve 0.38 seconds, Time Trial 1.89, Mastery 2.70.
I went to bed around 23:30 and left the robot a list: rehearse all of it, break it on purpose, and tell me in the morning. That night belongs to Monday’s entry.