Email me
Progress update, 3 Sept 2026
← Automating Garage Dreams

· Update · AI summary

Progress update, 3 Sept 2026

A short bullet-point summary of project progress up to 3 Sept 2026.

Updates are bullet-point summaries generated with AI from my commits and build notes, then checked by me. Project articles and learning notes are written by me.

  • The most dangerous thing found all day: publish:article --provider=stub publishes. The flag swaps in stub providers and relaxes the CLI preconditions, and that is all it does: the run still builds, commits and pushes. The runbook’s own comment said “no model, no CLIs, no network”, which describes the providers and reads as a description of the run. It must always be paired with --dry-run.
  • Built the independent run monitor, which is the real gate on putting any of this on a timer. It reads only committed run records, writes nothing, and exits non-zero on any alert so a timer can act on the exit code. A run that aborts before writing a record surfaces as staleness rather than as silence.
  • Its ordering comes from the timestamp inside each record, never the filename or the file’s mtime. Filenames are written in local time and the timestamps are UTC, so they disagree across a day boundary, and mtime is rewritten by any checkout and by the sync client on this tree. A test writes records under names that deliberately contradict their own timestamps.
  • A skipped run is not an alert. It is editorial, it is a normal night, and alerting on it would train whoever reads the output to ignore it.
  • The off-host copy of the monitor runs on GitHub’s schedule and was verified by dispatching it, not by writing it, because a workflow fails by never alerting, which no local test can observe.
  • The alert script confidently reported result=success exit=0 for a unit that had just failed. systemctl show answers for a unit it has never heard of with defaults rather than an error, so querying the wrong service manager produces a confident wrong alert, which is worse than no alert.
  • The alert script also shipped non-executable, which would have killed the one component that reports every other failure. The WSL test could not have caught it: it copied the script and made the copy executable, and the mount reports every file as 777 regardless. A test that prepares its subject cannot test how the subject ships.
  • A failed prompt attestation discarded a paid generation and was undiagnosable by construction. The error named neither the attested digest nor the expected one, so investigating it meant changing the code and spending another generation. It now reports both, with the model-controlled value escaped and truncated.