Skip to content

A skipped Architect run sends no Run notification - #331

Merged
JacobStephens2 merged 4 commits into
issue-311from
issue-325
Oct 3, 2026
Merged

JacobStephens2 merged 4 commits into
issue-311from
issue-325

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Oct 3, 2026 •

Copy link
Copy Markdown
Owner

Summary

A skipped Architect run sends no Run notification, for either skip and whether email or email.always asked for one. A crontab line can now fire every few minutes for Weeding without flooding the inbox.

 architect()
   notification = asked(email) → checks (address, Resend key)   # still first: a broken setup exits 1 before the skip
   ended = architect::run(...)
   code = show(ended)
-  notification.send(&ended, dispatched)                        # skipped included
+  match ended
+    Skipped           → nothing sent
+    Reviewed | Failed → notification.send(reviewed, dispatched)

ArchitectNotification::send now takes Result<&Reviewed, &FailedRun>, so a skipped run can't be passed to it. The dead code that went with the skip email is gone: Outcome::name, ArchitectLines::Skipped (ArchitectLines is now a struct) and its body test. The skip still exits 0 and prints its lines as before. The README, help and ADR 0009's Consequences now say a skipped run sends nothing and the scheduler's log file holds its line.

Evidence

  • Before: the rewritten tests failed against the old code:

    • a_skipped_architect_run_sends_no_notification_asked_for_by_email_or_by_email_always: one email sent
    • an_architect_run_skipped_for_open_plans_sends_no_notification_and_still_prints_each_url: assertion failed: resend.requests().is_empty()

    After: cargo test passes in full. These tests cover the new behaviour:

    • skip as already running, with --email and with email.always → exit 0, no Resend request
    • skip for open plans, with --email and with email.always → exit 0, each plan URL on stdout, no Resend request
    • the_notifications_checks_come_before_the_skip_so_a_broken_setup_fails_a_pass_that_would_be_skipped → exit 1 on no email address, no skip line

Merge Danger

Door: two-way

Reverting brings the skip email back. No data or state changes.

Blast Radius: notifications

Anyone who relied on a nightly email to confirm a scheduled Architect run happened no longer gets one on a skipped night. The README's "On a schedule" section now tells them to check the log file.

Unaddressed findings

Standards

  • ADR 0009 edited in place rather than flagged or superseded: skipped. A skipped Architect run sends no Run notification #325 explicitly asks for ADR 0009's Consequences to stop saying a skipped Architect run notifies. The decision itself (the OS schedules thirdshift) is unchanged; only a consequence was corrected.
  • The skip rule lives in main::architect, not in ArchitectNotification: skipped. The reviewer called it fine as is. It matches the Pickup run, which also decides upstream whether to send, and send's type now rules out a skipped run.
  • Two scenarios looped in one test: skipped. The loop prints {args:?} on failure, and architect_run.rs already uses this table-of-cases style (for example an_open_architect_plan_skips_the_architect_run_before_any_review_whatever_its_flags).
  • Long test name: skipped. The reviewer said it reads clearly; it is not a Mysterious Name.

Spec

  • No broken-setup test for a pass that would be skipped for open plans: skipped. The notification checks run before architect::run regardless of skip reason, so the already-running test covers that ordering.

CI notes

  • test-macos, architect_run::a_plan_with_tickets_starts_a_spec_run_on_it_and_ends_as_that_spec_run_does: flaky, not caused by this branch. CI watching, CI-fix Repair and the Repair cap #9's git fetch raced Progress lines on stderr #10's concurrent worktree removal (failed to read .git/worktrees/widgets-issue-10/commondir). This branch doesn't touch that test or the worktree code, and the test passed 5 out of 5 times locally.

Closes #325

🤖 Generated with Claude Code

JacobStephens2 and others added 4 commits October 3, 2026 03:14
Either skip, already running or an open Architect plan, now sends none
when asked, so a crontab line can start an Architect run every few
minutes for Weeding. The notification's checks still come first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… skip, README wording (#325)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brings in the Architect idea skip (#326). README conflicts resolved to
keep #325's rule, that a skipped Architect run sends no Run notification,
for the new skip reason too: the skipped-email subject and body lines
from origin/issue-311 are dropped, and the schedule paragraph lists the
waiting Architect idea among the skip reasons.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@JacobStephens2
JacobStephens2 merged commit 38c5c68 into issue-311 Oct 3, 2026
14 of 15 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-325 branch October 3, 2026 07:45
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