Devlog week 2: shiki bug, hallucinated flags, second 429, publisher meets the queue
The shiki bug — two bugs in one observation
A hero sidecar rendered $ $ shiki --themes on the page, and that one line held two different bugs. The $ prefix was a contract bug invisible in the diff — the renderer already adds it, and 36 generated sidecars had faithfully copied the flaw from the hand-written reference examples. The flag was a hallucination — visible in the diff, looked correct, caught by running it. The audit found three more invented flags and nearly rewrote one real flag as fake. Fixed on both ends: the prompt rule now forbids the leading $, and a build-time transform strips it if a future agent ignores the rule.
Per-file cat framing on log sidecars
Four log-themed sidecars opened with log lines instead of a cat command, reading as a log file already open rather than one being read. First line is now always the cat.
Second 429, worse than the first
The parallel fix batches truncated again, deeper into their work this time. Completion markers said completed with caveats; the live transcripts were the real signal. The pattern holds: parallel dispatch keeps losing to the rate limit, and the recovery after a collapse takes longer than doing it serially would have.
Publisher agent meets the draft queue
Eight drafts sat unreviewed while the publisher agent existed. Wiring them together is one command. Naming it here so it happens next week.
Syncthing recovery, favicon trap
Two small ops stories. The vault sync had silently stopped because the headless box's Tailscale hostname changed — Syncthing just stops rather than surfacing it. And the Google-search favicon was still the create-next-app default, because Google only reliably re-reads the .ico, not the SVG the browser tab actually shows. Both fixed; both the kind of breakage you only find when something downstream complains.
Greptile hangs are not failures
A Greptile check sat in progress for 12 minutes past the point of looking broken, then landed clean — slow server-side analysis, not a hang. Working rule: wait before treating an in-progress check as failed.
Next: the publisher agent's first full run, and a dispatch plan that respects the rate limit.