Repository navigation
One Run notification for a Pickup run that took an issue - #298
Merged
Merged
Conversation
…made before any other work A Pickup run asked for a Run notification now checks for an address and a Resend API key before its preflight checks, the lock and any call to GitHub, so a broken setup stops every pass with exit 1, one that would have been skipped included. A pass that took an issue sends the notification the Spec run or Run it dispatched would have sent by hand, titled from the listing the issue was found in, and a skipped pass sends none. Closes #285 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… Spec check before an issue is said to be taken, the notification's checks ahead of the clone's Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…un notification beside the whole Ready issue rule The help states the whole Ready issue rule and the lines on issues passed over, and leaves --email and --no-email out of the flags that apply to the dispatched run: they ask for the Pickup run's own Run notification. Whether the issue is a Spec comes from the candidate query, so the Tickets query this branch had moved ahead of the taking line is gone: nothing can fail between the search and the issue being said to be taken. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 1, 2026
JacobStephens2
added a commit
that referenced
this pull request
Oct 1, 2026
…m limit beside a Pickup run's one Run notification The notification's checks stay first, then the pass is run with pickup.limit. A pass skipped for the Claim limit sends no notification: the case #298 left for this branch is tested here. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A Pickup run asked for a Run notification now makes the notification's checks before any other work, and sends the one the Spec run or Run it dispatched would have sent by hand.
Seam under test, the one the Spec names: the real
thirdshiftbinary in a scenario against the fakegh, the fakeclaudeand the Resend stand-in.Evidence
Before: on
issue-212, with the two tests written first:After:
cargo test --test pickup_run:43 passed; 0 failed. Full suite,cargo test: all 30 test binariesok, 0 failed.cargo clippy --all-targetsandcargo fmt --checkclean.Each acceptance criterion and the test that covers it:
tests/pickup_run.rsthe_notification_of_a_run_left_ready_for_review_is_that_runs,..._of_a_merge_run_says_it_merged,..._of_a_failed_run_has_its_pull_request_and_its_cause,..._of_an_interrupted_run_says_it_was_interruptedthe_notification_of_a_spec_run_is_that_spec_runs_with_a_line_per_ticket,the_notification_of_a_failed_spec_run_has_each_tickets_outcomeemail <address>overemail.to;no-emailoveremail.alwaysa_pass_that_took_an_issue_sends_one_notification_when_the_command_or_the_user_config_asksemail.alwaysrows and the Spec run test: exactly one requesta_pass_skipped_for_having_no_ready_issue_sends_no_notification,a_pass_skipped_for_the_lock_sends_no_notification1before any label change or sessionasked_for_a_notification_with_no_address_known_...,..._with_no_resend_api_key_..., the twoa_pass_that_would_be_skipped_..._still_stops_on_the_notifications_checks,the_notifications_checks_come_before_the_checks_on_the_clonewarning:linea_notification_that_cant_be_sent_is_a_warning_that_changes_neither_the_exit_code_nor_stdoutUnaddressed findings
Standards
resend_envandthe_one_notificationare copies of the ones intests/architect_run.rsandtests/spec_run.rs. Skipped: each test file keeps its own Resend helpers today (KEYandACCEPTEDtoo), and moving them totests/support/resend.rsmeans editing two test files this Ticket doesn't otherwise touch.assert_stopped_by_preflight. Skipped: that helper also asserts Numbered Issue branches after a merged or closed PR #7 is stillready-for-agent, and this scenario has no Numbered Issue branches after a merged or closed PR #7.ListedIssue,Takenandof_taken. Skipped: two fields, and passingTakenwhole would make the notification depend on the Pickup run's module.CONTEXT.mdand doc comments. Skipped: that is how this repo documents every command, and the help test pins the wording.Spec
issue-212. Every skip returns frompickupbefore anything is sent, so a new skip reason sends none without further work; The Claim limit, and taking in-progress off closed issues #284 should add the case to its own tests.Addressed from the review: one
Checkedcore shared by the three notifications in place of a third copy of the checks; stale doc comments onRunNotification;Taken.titledocumented; the reusednotificationname inpickup; the lock tests' shared setup; a test that the notification's checks precede the clone's; and the Spec check moved ahead of thetaking Ready issueline, so a pass that fails there has not said it took an issue.Merge Danger
Door: two-way
Reverting restores the checks after the take. No stored state, label or config key changes.
Blast Radius: Pickup-runs
A scheduled
thirdshift pickupwithemail.alwaysset but no address or Resend key now exits1on every pass, where before it exited0on passes that were skipped. That is the Ticket's intent, and it shows in the cron log. Runs and Architect runs go through the refactoredCheckedcore; their notification tests pass unchanged.Closes #285
🤖 Generated with Claude Code