Skip to content

Custom process: named throwaway worktrees and parallel groups - #1409

Merged
JacobStephens2 merged 2 commits into
issue-877from
issue-1383
Oct 26, 2026
Merged

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

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

Summary

A Custom process can name throwaway worktrees and run consecutive Steps that share a parallel group 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.

prepare
  refuse an unknown worktree, a missing name, or a shared worktree in a group
  create one throwaway checkout per worktree the Steps use
execute
  for each consecutive parallel group
    one Step: run it
    several: run them together, then record every result
    a required failure returns only after the group is recorded
  drop the checkouts (retention still keeps a dirty or uncertain one)

A process with no [worktrees] table still uses one shared throwaway worktree, and check still prints that plan.

Evidence

  • Before: on issue-877, a process file cannot declare [worktrees.<name>] or parallel. 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 warnings is clean. cd site && node generate-docs.mjs --check exited 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 process and thirdshift process check gain named worktrees, together: lines, and parallel execution. Ticket runs, Spec runs, and standalone skills are unchanged.

Seams

Tests go through the thirdshift binary in the tests/support Scenario (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-audit attack 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 are single_component-validated and worktree names never reach a filesystem path (tempdir checkouts); the parallel group 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.html was not read. It is generated from docs/guide.md by site/generate-docs.mjs, and cd site && node generate-docs.mjs --check exited 0 on this head. The Custom processes section was reviewed in docs/guide.md. No other changed file was left unread.

Closes #1383

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

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.
@JacobStephens2
JacobStephens2 merged commit 93d6f8e into issue-877 Oct 26, 2026
18 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-1383 branch October 26, 2026 21: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