Skip to content

Skip a Custom process with no issue while another Pass is running (#1386) - #1417

Merged
JacobStephens2 merged 2 commits into
issue-877from
issue-1386
Oct 27, 2026
Merged

JacobStephens2 merged 2 commits into
issue-877from
issue-1386

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

Summary

A Custom process started with no issue is a Pass for the one-at-a-time lock only.

thirdshift process <name>          # no issue
  check the Base branch
  hold the Pass lock until exit
    another Pass holds it
      exit 0, no Run notification
      Command record outcome skipped
  otherwise run the Steps
thirdshift process <name> issue <issue>
  no lock, and a Pickup run is not skipped

It does not take an Architect run's Ready-issue or Architect-idea gates.

Evidence

  • Before: 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 review exits 0, prints the already-running line, sends no notification (Resend receives nothing with email.always), and the Command record outcome is skipped. While that process runs, pickup is skipped and the Ready issue stays labelled ready-for-agent. process notes issue 7 still 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. With activity.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 --exact passed after Pickup, Architect and Security runs were pointed at the same lock hold.

scripts/affected-tests issue-877 on the feature commit, before that lock-hold move: site npm test 50 passed, cargo nextest run 3140 passed. npm run docs:check --prefix site passed; site/docs/index.html matches docs/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

  1. Mysterious Name, hold_pass (src/launch.rs line 425). Some means the lock was not taken. Declined. The comment on that function says Some when another Pass already holds it, and start maps that value to Start::AlreadyRunning (src/launch.rs lines 370–371), the same skip start already returned. The type is the skip reason, not a second lock handle.

  2. Primitive Obsession, Begin::Process { pass: bool } (src/logs.rs lines 135–138). Declined. pass is 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 own Begin variants; 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.html was not read as source: both axes accepted it as generated from docs/guide.md by site/generate-docs.mjs. npm run docs:check --prefix site exited 0.

Closes #1386

Built with grok grok 1.0.70 (f50904eaee6c) [stable] · default model · default effort

)

A Custom process started with no issue takes the repository's Pass lock and is skipped, exiting 0 with no Run notification, while another Pass is still running. Its Command record ends skipped. A process started with an issue does not take the lock and is not skipped by it.
Pickup, Architect and Security runs take the same lock a Custom process with no issue holds, after their own preflight.
@JacobStephens2
JacobStephens2 merged commit a84db6e into issue-877 Oct 27, 2026
18 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-1386 branch October 27, 2026 01:22
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