Skip to content

README: running an Architect run on a schedule - #266

Merged
JacobStephens2 merged 4 commits into
issue-237from
issue-249
Oct 1, 2026
Merged

JacobStephens2 merged 4 commits into
issue-237from
issue-249

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Oct 1, 2026 •

Copy link
Copy Markdown
Owner

Summary

Closes #249

A README section, "On a schedule", under Architect runs, and a two-line pointer to it in thirdshift help. No behaviour changes.

 README.md
 ## Architect runs
   `base <branch>` paragraph
+    one sentence linking to "On a schedule"
   ### One Run notification
   ### No Strong candidate
   ### One at a time
   ### One Architect plan at a time
+  ### On a schedule
+    the crontab entry: PATH line, then `cd <clone> && thirdshift architect base main >> <log> 2>&1`
+    why PATH, cd and base main, one line per repository, the log file, logins
+    the cautious variants: no-merge, --plan-only
+    when a scheduled Architect run is skipped, exit 0, one email a night
+    any scheduler works; systemd user timers need lingering

 thirdshift help
   ...open Architect plan paragraph
+  To run an Architect run on a schedule, have the operating system's scheduler, such as cron, run
+  thirdshift architect base main from the clone: the README's "On a schedule" has a crontab entry.

Two things in the section go beyond the Ticket's list, both found while checking the recipe:

  • mkdir -p ~/.thirdshift/logs first: with the directory missing, the shell can't open the log and never starts the command.
  • cron expands neither ~ nor $HOME on the PATH line, so its directories are written out in full.

Seam tested: thirdshift help's stdout, through the command_surface end-to-end tests. The README has no test seam.

Not done here: the recipe was not run under cron. The Ticket leaves that to a person on a real Linux machine when reviewing the Spec PR.

Evidence

  • Before: help_points_to_running_an_architect_run_on_a_schedule_without_the_recipe fails: help has no mention of a schedule.
    After: it passes: help names the operating system's scheduler, thirdshift architect base main and the README's "On a schedule", and holds none of PATH=, * * * or architect-cron.log.
cargo test --test command_surface    23 passed; 0 failed
cargo test --no-fail-fast            28 test binaries ok, 0 failed (run locally on 884cd57)
cargo fmt --check, cargo clippy --all-targets    clean

Checked against the code: a bad argument, a broken User config and a missing Resend key all fail before the Run notification's checks pass, so only the log has them; a skip exits 0 and still sends its notification; no-merge and --plan-only win over the User config; Setup is offered only from a terminal; the open-plan rule looks only for open issues labelled architect-plan, so it is released by the Architect plan closing or losing its label, not by closing its pull request. type thirdshift claude gh git prints all four in both bash and dash, where command -v printed only the first in dash.

Unaddressed findings

Standards

  • "every night sends one email" and "no email is sent for it" say email, not Run notification. The Ticket's own words are "every night sends one email", the README already describes a Run notification as one email, and "email" is not an avoided alias in CONTEXT.md.
  • The test's PATH=, * * * and architect-cron.log repeat fragments of the README's recipe. Kept: they are what "without repeating the recipe" means for help, and help has no reason to gain any of them under another name.
  • help refers to the README, which nothing else in it does. The Ticket asks for exactly this: help "points to running it on a schedule ... without repeating the recipe".
  • The full crontab line appears three times (the entry and its two variants). Kept: each is a line to paste whole, and the Ticket asks for the variants to be shown.
  • The cron log sits in ~/.thirdshift/logs/, among the session logs. The Ticket gives that path, and the file's name sets it apart from the .jsonl session logs.

Spec

  • More than "a few sentences": crontab -e, type ..., mkdir -p, the cd bullet, "a bad argument", "Closing the pull request alone leaves the Architect plan open", loginctl enable-linger. Kept: each is something a pasted line fails silently without, or a fact the reader would otherwise have to find in another section.
  • The base <branch> paragraph gains a sentence linking to the new section. Kept: it is where a reader of base learns what it is for.
  • The unwrapped_help helper rewrites two existing tests. Kept: it removes the copy the new test would have made a third of, and came from an earlier Standards finding.

Fixed in the last round: the lock covers "the Spec run or Run it dispatched", not only a Spec run; picking up a failed run does not by itself release the open-plan rule, the Architect plan closing or losing its label does; type in place of command -v; the help pointer's two lines are even (95 and 96 columns, under the 100 the widest help lines have).

Merge Danger

Door: two-way

Documentation and help text only; reverting the commits restores both.

Blast Radius: docs

A wrong detail in the recipe would cost a user a silent night, which is why it needs one try on a real machine with cron before the Spec PR merges.

CI notes

  • test and test-macos both pass on 884cd57 (run 36893076580).
  • They were red on eaff1f8, in the_binary_never_links_openssl (tests/packaging.rs) alone: its cargo tree --target all --offline fails when the cargo cache lacks the crates only other platforms use, as it did after a new stable Rust changed the cache key. Nothing on this branch changed that test, so it can go red here again on a cold cache. main has the fix (1e709d1 reads the lockfile instead); issue-237, this pull request's Base branch, does not have it yet, and it is left for the Base branch to take from main rather than mixed into this pull request (ADR 0008).

🤖 Generated with Claude Code

JacobStephens2 and others added 3 commits October 1, 2026 12:43
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rchitect plan by their names, a two-line help pointer, one helper for the unwrapped help

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…g to fix on the branch)

2026-10-01T12:58:12Z, host thirdshift. Uncommitted work at the time of failure is included in this commit.
@JacobStephens2
JacobStephens2 marked this pull request as draft October 1, 2026 12:58
…chitect plan, type for finding the commands, an even help pointer

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@JacobStephens2
JacobStephens2 marked this pull request as ready for review October 1, 2026 16:42
@JacobStephens2
JacobStephens2 merged commit baf4d35 into issue-237 Oct 1, 2026
13 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-249 branch October 1, 2026 16:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant