Skip to content

Add command Steps and optional Steps to Custom processes - #1406

Merged
JacobStephens2 merged 1 commit into
issue-877from
issue-1382
Oct 26, 2026
Merged

JacobStephens2 merged 1 commit into
issue-877from
issue-1382

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

Closes #1382

Summary

thirdshift process <name>
  for each Step, in order
    skill: session in the worktree
    command: sh -c <command> in the worktree
      THIRDSHIFT_RESULTS_DIR = the results folder
      THIRDSHIFT_STEP_RESULT = this Step's result file
      THIRDSHIFT_ISSUE_URL set only when the Process has an issue
      result = stdout, then stderr
    on failure
      Command log: step <name> failed, with the exit status for a command
      optional, and Stop was not requested: record it and continue
      otherwise: stop, and later Steps do not run
  stdout: the last finished Step's result

A command Step is one kind of Step. check prints the command and does not run it. An optional Step is marked (optional) on that plan.

Evidence

  • Before: a process file that set command was refused (unknown key: command), so the command never ran in the worktree.
    After: scripts/affected-tests origin/issue-877 exited 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 process files that use command or optional. 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) through tests/process.rs, with a real Git repository and a fake Harness.

Review coverage

Reviewed against origin/issue-877 (ebfdcc03). The local issue-877 ref is behind that commit. Standards and Spec each read every changed file except site/docs/index.html. Both excluded that page: site/generate-docs.mjs generates it from docs/guide.md, and npm run docs:check --prefix site exited 0. No changed file was left unread.

Unaddressed findings

Standards

Speculative Generality (src/processes.rs, run_command's issue_url: Option<&str> and the Some arm that sets THIRDSHIFT_ISSUE_URL). run_step always passes None.

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." The Some arm is that case. A Process still has no issue, so the caller passes None and the child environment removes THIRDSHIFT_ISSUE_URL. docs/guide.md states 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.

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.
@JacobStephens2
JacobStephens2 merged commit 531dfc0 into issue-877 Oct 26, 2026
18 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-1382 branch October 26, 2026 20:28
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