Repository navigation
Give a Custom process an issue for its session Steps - #1414
Merged
Merged
Conversation
`thirdshift process <name> issue <issue>` resolves a number or an Issue URL the way `thirdshift skill` does. Each session Step gets `.thirdshift-issue.md` and names the issue. An untrusted edit since the Process started fails the next session, a Resume included, before it starts. A command Step receives THIRDSHIFT_ISSUE_URL.
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
Seams: the CLI
thirdshift process <name> issue <issue>; the session worktree's.thirdshift-issue.mdand the prompt that names the issue; the untrusted-edit check before a session Step and before its Resume;THIRDSHIFT_ISSUE_URLon a command Step.Evidence
cargo test --test process an_issue_number_and_an_issue_url_hand_the_issue_to_the_sessionfailed.thirdshift process notes issue 7exited 2 withusage: thirdshift process [check <name> | <name>], and no session started.After:
cargo test --test process— 37 passed, 1 ignored.cargo test --test command_surface— 20 passed, 1 ignored.UPDATE_PROMPTS=1 cargo test --bin thirdshift prompts_page— 12 passed.cargo clippy --all-targets -- -D warningsis clean.cd site && npm ci && npm run docsexited 0.Merge Danger
Door: two-way
The command is experimental. Dropping the
issueargument restores the previous process command. A process file that does not passissuebehaves as before.Blast Radius: narrow
Only
thirdshift process <name> issue <issue>gains the issue file, the trust check and the command environment variable.thirdshift process <name>andthirdshift process check <name>are unchanged.Unaddressed findings
Standards
Duplicated Resume-once policy in
src/processes.rsrun_skill_on_issue(theended.killedbranch around the “resuming it once” progress line, and the later carry-on that returnsOk(message)only whenfinal_messageis non-empty). Judgement, Duplicated Code. Declined. Process Steps stay outside Session logs andStageName:Sessions::run_to_endinsrc/session.rswrites a session log and returns the ending even when the final message is empty. This path checks the issue again between the session and its Resume, and a Step’s result is that final message, so a killed ending with no message still fails the Step. SharingSessionswould record a stage and a trace this ticket does not add. Parallel Steps cannot share oneLogsvalue.Duplicated origin match in
resolve_process_issue(src/processes.rs, thematches_originbail) and duplicated pre-session gate inprepare_for_session(thetrust::untrusted_editmatch that bails with “since the Process started”). Judgement, Duplicated Code. Declined. The origin message matchesskill::runinsrc/skill.rsand must run beforepreparecreates worktrees. The failure text says “Process”, not “Ticket run”:delivery.rsUntrustedEdithard-codes the Ticket run sentence, and the Command log must not claim a Ticket run.STARTED_MARGINinsrc/run.rsis the shared five-minute margin; the call site subtracts that constant once when the Process starts.hand_over_issueis already shared. Neither finding says the behaviour is wrong, so no separate test was required.Spec
None.
Security
None. Security review of the
issue-1385diff against93d6f8efound no introduced finding: the origin-mismatch gate stops before any worktree, each session Step and its Resume fail closed on an untrusted edit via the sharedtrust::untrusted_edit, the issue file carries only Trusted-account comments via the sharedissue_for_session, and command Steps receive only the URL inTHIRDSHIFT_ISSUE_URL.Security review outcome
No unaddressed introduced findings.
Review coverage
No changed file was left unread.
Generated and not read, after the sources were reviewed:
prompts/process-step-issue.md,prompts/README.md,site/prompts/index.html(UPDATE_PROMPTS=1 cargo test --bin thirdshift prompts_page, 12 passed), andsite/docs/index.html(cd site && npm ci && npm run docs, exit 0).Closes #1385
Built with grok grok 1.0.70 (f50904eaee6c) [stable] · default model · default effort