Repository navigation
Add command Steps and optional Steps to Custom processes - #1406
Merged
Merged
Conversation
A command Step runs in its worktree and passes stdout followed by stderr to later Steps. A non-zero exit fails the Process unless the Step is optional. Stop interrupts a running command the way it interrupts a session.
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.
Closes #1382
Summary
A command Step is one kind of Step.
checkprints the command and does not run it. An optional Step is marked(optional)on that plan.Evidence
commandwas refused (unknown key: command), so the command never ran in the worktree.After:
scripts/affected-tests origin/issue-877exited 0. Site:npm test --prefix site, 50 passed. Rust:cargo nextest run, 3115 passed, 70 skipped. Wall time 3215.96s, compile included. The process tests cover a command Step's working directory and the later session prompt, a non-zero exit that stops later Steps and names the exit status, an optional failure recorded while the Process succeeds, and Stop interrupting a running command Step.Merge Danger
Door: two-way
One commit on the experimental Custom process command. Reverting it returns processes to skill-only Steps.
Blast Radius: narrow
thirdshift processfiles that usecommandoroptional. Skill-only processes keep their plan, session, and prompt. A later session whose earlier Steps produced no result is told that no earlier Step has a result.Seams
thirdshift process(list, check, and a named process) throughtests/process.rs, with a real Git repository and a fake Harness.Review coverage
Reviewed against
origin/issue-877(ebfdcc03). The localissue-877ref is behind that commit. Standards and Spec each read every changed file exceptsite/docs/index.html. Both excluded that page:site/generate-docs.mjsgenerates it fromdocs/guide.md, andnpm run docs:check --prefix siteexited 0. No changed file was left unread.Unaddressed findings
Standards
Speculative Generality (
src/processes.rs,run_command'sissue_url: Option<&str>and theSomearm that setsTHIRDSHIFT_ISSUE_URL).run_stepalways passesNone.Refuted by the spec in
.thirdshift-issue.md: "Environment variables give the issue URL (when there is one), the results folder and the Step's own result file." TheSomearm is that case. A Process still has no issue, so the caller passesNoneand the child environment removesTHIRDSHIFT_ISSUE_URL.docs/guide.mdstates the same rule: the variable is set when the Process has an issue, and unset when it does not. The finding says the unset path is the reachable contract and does not claim that path is wrong. It includes no failing test.Spec
None.
Security
None.
Built with grok grok 1.0.70 (f50904eaee6c) [stable] · default model · default effort
Security review outcome
No unaddressed introduced findings.