Repository navigation
Skip a Custom process with no issue while another Pass is running (#1386) - #1417
Merged
Merged
Conversation
Pickup, Architect and Security runs take the same lock a Custom process with no issue holds, after their own preflight.
This was referenced Oct 27, 2026
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 Custom process started with no issue is a Pass for the one-at-a-time lock only.
It does not take an Architect run's Ready-issue or Architect-idea gates.
Evidence
thirdshift process <name>with no issue did not take the repository Pass lock, so a cron line could start another one while a Pickup run, Architect run or Security run was still going.After:
cargo test --test process -- no_issue with_an_issue— 6 passed. While a Pickup run holds the lock,process reviewexits 0, prints the already-running line, sends no notification (Resend receives nothing withemail.always), and the Command record outcome isskipped. While that process runs,pickupis skipped and the Ready issue stays labelledready-for-agent.process notes issue 7still runs during a Pickup run, and a Pickup run still takes a Ready issue while a process with an issue is running. A Ready issue and an Architect idea do not skip a no-issue process. Withactivity.quiet_skips, stderr is empty and the record and Activity log line remain.cargo test --test pickup_run -- a_pickup_run_is_skipped_while_an_architect_run_on_the_repository_is_still_running --exactpassed after Pickup, Architect and Security runs were pointed at the same lock hold.scripts/affected-tests issue-877on the feature commit, before that lock-hold move: sitenpm test50 passed,cargo nextest run3140 passed.npm run docs:check --prefix sitepassed;site/docs/index.htmlmatchesdocs/guide.md.Seams: the process CLI while a Pickup run holds the lock; a Pickup run while a no-issue process holds it; a process with an issue, both directions; a Ready issue and an Architect idea;
activity.quiet_skips; the glossary Pass entry.Merge Danger
Door: two-way
Revert the commits. The lock file is the one Pickup, Architect and Security runs already use, and the operating system drops it when the process exits.
Blast Radius: scheduled
A no-issue Custom process now skips, or causes a Pickup run to skip, on a repository that already has a Pass running. A process started with an issue does not.
Unaddressed findings
Standards
Mysterious Name,
hold_pass(src/launch.rsline 425).Somemeans the lock was not taken. Declined. The comment on that function saysSomewhen another Pass already holds it, andstartmaps that value toStart::AlreadyRunning(src/launch.rslines 370–371), the same skipstartalready returned. The type is the skip reason, not a second lock handle.Primitive Obsession,
Begin::Process { pass: bool }(src/logs.rslines 135–138). Declined.passis the domain fact that this process was started with no issue, which is why its first lines are held the way an Architect run, Pickup run or Security run holds theirs. The other Passes are their ownBeginvariants; a Process is a Pass only in that one case.Spec
None.
Security
None. Reviewed the Pass-lock change (
src/launch.rs,src/processes.rs,src/logs.rs,src/logs/recording.rs) in guidance mode against the skill's attack classes; no introduced finding meets the trust-boundary-and-result bar, and no proof-of-concept was retained.Security review outcome
No unaddressed introduced findings.
Review coverage
No changed file was left unread.
site/docs/index.htmlwas not read as source: both axes accepted it as generated fromdocs/guide.mdbysite/generate-docs.mjs.npm run docs:check --prefix siteexited 0.Closes #1386
Built with grok grok 1.0.70 (f50904eaee6c) [stable] · default model · default effort