- The drafter no longer grows one conversation. Each request is the rules
and facts, the model's latest template, what is wrong now and one line per
earlier round, so long builds can't push the facts out of the model's
32K context (Ollama drops the oldest part silently). The image's scripts
in the facts are capped at 24000 characters in all, and diagnosis check
results at 16000.
- Every model call logs its prompt and answer tokens, with a warning near
the context limit.
- unsafeCommands: a draft whose startup command or installConfig pipes a
download into a shell, decodes base64, uses eval, raw network tools or
/dev/tcp, sudo/su, setuid bits, writes /etc, touches cron/systemd/firewall,
or looks like a miner goes back to the model. AUTHORING.md has the rule.
- The PR summary lists every address nodes would download from under
"Review carefully", marks the measured checks as measured, and labels the
research notes as the model's reading, not checked.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A failed boot went straight back to the model as "fix it", so it guessed:
one draft raised its memory three rounds in a row while the real cause, an
empty setting the server can't run without, stayed untouched.
Now a failed boot is investigated first:
- Evidence: the server's distinct error lines (timestamps and repeats
removed), and a web search on the most telling one, with the top answer
read through the reader.
- Diagnosis: the model states the cause, the evidence for it, its
confidence and the exact fix. If unsure, it asks for up to 3 checks: a
search, a page, the files the server writes (a first boot of the draft),
or a boot test with settings or the startup command changed. Results go
back to it, two rounds at most.
- Fix: the model applies exactly the diagnosed fix and nothing unrelated.
- Attempt log: each cause, fix and outcome. A fix that changed nothing
rules its cause out; if the diagnosis returns to a ruled-out cause, the
build stops instead of guessing, and the PR lists what the builder found.
Boot rounds go up to 5, since rounds now end on a ruled-out cause rather
than a fixed count.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>