Skip to content

Add experimental Custom processes that run skill Steps in order - #1401

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

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

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

Summary

thirdshift process
  list files in ~/.thirdshift/processes
thirdshift process check <name>
  validate the file
  detach a throwaway worktree at the Base branch
  print the plan
thirdshift process <name>
  validate, then record Command kind Process
  for each Step
    wait for [resources]
    run the skill in that worktree
    store the final message beside the Command log
  print the last message
  clean up the worktree as a standalone skill does

A Custom process is experimental. The file requires version = 1, a description, and [[steps]] with a name and skill. Skill lookup is skills::find, the same lookup thirdshift skill uses. Every Step uses the Command's Harness, Model and Effort. The next Step's session prompt names the paths of earlier results.

Evidence

  • Before: thirdshift process was not a command. Against the first commit of this branch, cargo test --test process -- steps_run_detached_at_the_base_branch_tip a_missing_file_and_a_syntax_error_are_not_version_refusals failed: the worktree was created at the launch checkout's HEAD and the session exited 1, and a missing file was refused as version: version = 1 is required.
    After: Those two tests pass and are kept. cargo test --test process passed 13 tests. cargo test --test skill passed 16 tests. cargo clippy --all-targets -- -D warnings passed. scripts/affected-tests issue-877 passed: site npm test 50 tests, then cargo nextest run 3110 passed and 70 skipped, exit 0, real 2224.55s including compilation.

Merge Danger

Door: two-way

The change adds a command and a new stored kind, Process. Existing stored kinds are unchanged. Removing the command and the kind removes the feature.

Blast Radius: command

thirdshift process, its help lines, the manual, and the prompts page. A process fetches the checked-out branch and detaches there. It does not take the Pass lock.

Seam

Tests drive the thirdshift binary through the tests/support Scenario: listing, check refusals, a two-step run, stdout and stderr, the Command record, worktree cleanup, resource waits, and Stop.

Review coverage

Generated output left unread on purpose:

  • site/docs/index.html, generated from docs/guide.md by site/generate-docs.mjs. After the guide fix, cd site && npm run docs and npm run docs:check exited 0. The reviewed source is docs/guide.md.
  • prompts/process-step.md, prompts/process-step-later.md, prompts/README.md, and the generated fragment of site/prompts/index.html, generated from src/prompt.rs and src/prompts_page.rs. UPDATE_PROMPTS=1 cargo test --bin thirdshift prompts_page passed 12 tests, and a later check of prompts_page passed without rewriting the files.

Standards did not read src/launch.rs. That file changed after the review. Spec had read src/launch.rs before checked_out_base was added.

Unaddressed findings

Security

None. Security review of 7f9adb3...HEAD found no introduced findings, so there is nothing unaddressed: process names with a path separator are usage errors that start no session (process_name in src/args.rs, covered by process_arguments_that_are_not_a_file_name_are_usage_errors); Step names must be a single path component before they become result file names; skill lookup is the exact-match skills::find shared with thirdshift skill and fails closed; sessions spawn via argv with no shell; the throwaway worktree is cleaned up on Drop. cargo test --test process passed 13 tests, --test skill 16 tests, --test command_surface 20 tests. No proof-of-concept failed, so no fix was made here.

Standards and Spec

None. The review raised 3 Standards findings and 2 Spec findings, and this branch addresses each one.

Closes #1380

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

Security review outcome

No unaddressed introduced findings.

A ~/.thirdshift/processes file lists sequential skill Steps. thirdshift process lists them, check prints the plan, and running them shares one throwaway worktree and records the Command as Process.
The worktree follows the checked-out branch on origin. A missing file and invalid TOML name those rules, and the skill preamble and failure outcome are shared.
@JacobStephens2
JacobStephens2 merged commit ebfdcc0 into issue-877 Oct 26, 2026
18 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-1380 branch October 26, 2026 18:37
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