Repository navigation
Custom process: named throwaway worktrees and parallel groups - #1409
Merged
Merged
Conversation
A process can declare throwaway worktrees and group consecutive Steps that share a parallel name. A group runs together, each Step in its own worktree, and a failure waits for the other members before the process stops unless that Step is optional.
Bring command Steps and optional Steps from #1382 onto named throwaway worktrees and parallel groups. A command Step counts as editing its worktree, so a parallel group still cannot share one.
This was referenced Oct 26, 2026
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 Custom process can name throwaway worktrees and run consecutive Steps that share a
parallelgroup at the same time. Command Steps from the base stay in the same rules: every session or command Step edits its worktree, so a group cannot share one.A process with no
[worktrees]table still uses one shared throwaway worktree, andcheckstill prints that plan.Evidence
issue-877, a process file cannot declare[worktrees.<name>]orparallel. Consecutive Steps always run one after another in one throwaway worktree.After:
cargo test --test process -- --test-threads=8— 26 passed, 1 ignored. The new tests cover overlap of three fake sessions, the judge prompt naming all three results, shared and unknown worktree refusals (including a command Step), a failed member finishing its siblings before the process fails, retention of a dirty failed worktree, and a repeated group name starting a new group.cargo clippy --all-targets -- -D warningsis clean.cd site && node generate-docs.mjs --checkexited 0.cargo test --bin thirdshift prompts_page— 12 passed.Merge Danger
Door: two-way
The change is experimental Custom process behaviour. Reverting the commit restores sequential Steps in one throwaway worktree. A file with no
[worktrees]table keeps today's plan and execution.Blast Radius: process
thirdshift processandthirdshift process checkgain named worktrees,together:lines, and parallel execution. Ticket runs, Spec runs, and standalone skills are unchanged.Seams
Tests go through the
thirdshiftbinary in thetests/supportScenario (real Git, fake Harnesses). No new test seam.Unaddressed findings
No Standards or Spec finding was skipped. Both axes reported none against
origin/issue-877(531dfc08).Security (guidance-mode review of
531dfc08...HEAD,thirdshift-security-auditattack classes for resource exhaustion, data isolation, and AI/agent delegation): no introduced findings and none unaddressed. The process file is the local user's own config, so its commands and group sizes are same-principal input with no cross-boundary sink; worktree and step names aresingle_component-validated and worktree names never reach a filesystem path (tempdir checkouts); theparallelgroup name is only compared for grouping and never reaches a path, shell, or prompt; result files are per unique step name and recorded sequentially after threads join; each parallel Step runs in its own throwaway checkout, dropped at the end under the usual retention rules. No proof-of-concept demonstrated a boundary violation, so no fix was made here. No pre-existing findings were recorded.Security review outcome
No unaddressed introduced findings.
Review coverage
site/docs/index.htmlwas not read. It is generated fromdocs/guide.mdbysite/generate-docs.mjs, andcd site && node generate-docs.mjs --checkexited 0 on this head. The Custom processes section was reviewed indocs/guide.md. No other changed file was left unread.Closes #1383
Built with grok grok 1.0.70 (f50904eaee6c) [stable] · default model · default effort