Skip to content

Publish an Issue-branch Process through Delivery and remove the Claim - #1426

Merged
JacobStephens2 merged 4 commits into
issue-877from
issue-1388
Oct 27, 2026
Merged

JacobStephens2 merged 4 commits into
issue-877from
issue-1388

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

Summary

A Custom process can declare one Issue-branch worktree and a delivery Step. The run selects the Issue branch the way a Ticket run does, holds the Claim, and Delivery publishes a pull request and leaves it ready for review. The Claim is then removed. A failure before Delivery keeps the branch, as a Failed ticket run does.

thirdshift process <name> issue <issue>
  branch::select
  claim::make
  Worktree on the Issue branch
  session Steps in that checkout
  Delivery::publish
    push
    open a pull request if absent
    Repair loop on the Process's Harness, Model and Effort
    mark ready for review
  claim::remove

thirdshift process check <name> [issue <issue>] prints that plan and starts no session. A file that would lose work is refused before any session, naming the rule and the line: no issue, no delivery after the last Step that uses the Issue branch, a second Issue-branch worktree, a catalogue value other than delivery, or a delivery Step that is optional, parallel, or on another worktree.

Continuation Steps in that checkout are told to build on the branch's commits, the same sentence a Ticket run uses (ADR-0002).

Tests talk to the thirdshift binary through tests/support Scenario.

Closes #1388

Evidence

  • Before: an Issue-branch worktree was refused as an unknown worktree kind, and a Process could not publish.
    After: cargo test --test process --offline — 73 passed, 1 ignored. The acceptance runs are an_issue_branch_process_ends_ready_for_review_and_removes_the_claim, an_issue_branch_process_needs_an_issue, an_issue_branch_without_a_delivery_after_its_editing_steps_is_refused, a_step_that_fails_before_delivery_keeps_the_issue_branch_work, a_delivery_repair_uses_the_commands_harness_model_and_effort, and a_continuation_prompt_differs_from_a_fresh_start.
    scripts/affected-tests origin/issue-877: site npm test 50 passed; cargo nextest run 3171 passed, 70 skipped.

CI notes

  • Linux test failed partial_muse_and_opencode_messages_are_not_success only for the opencode fixture (could not write the prompt to opencode: Broken pipe); the same run's muse fixture passed. tests/skill.rs, src/skill.rs, src/process.rs, and src/harness match origin/issue-877 (dc48889d), whose CI passed. The test passed 21 local runs.

Merge Danger

Door: two-way

The change is a new Process shape plus a shared Delivery envelope. Reverting the branch removes both. No data migration.

Blast Radius: Delivery

Delivery::publish and Delivery::deliver share run_checked. A mistake there would affect Ticket-run Delivery as well as an Issue-branch Process. A Process with no Issue-branch worktree still runs as before. This does not Self-merge.

Unaddressed findings

None. The review raised 3 Standards findings and 1 Spec finding. Each was addressed, and none was skipped.

  • Standards 1, Pass wording. The guide, the glossary, and the hand-written pages now say a file with an Issue-branch worktree and no issue is refused before any session, rather than skipped as a Pass.
  • Standards 2, duplicated Delivery envelope. deliver and publish both call run_checked.
  • Standards 3, duplicated recovery. preserve_step_failure takes the Continuation from continuation, and recovery::preservation_of reports a failed push. names_issue_worktree is shared by step_dir and resolve_dir.
  • Security: no unaddressed introduced findings. Guidance-mode review of the issue-1388 diff against merge base c35eeb81 (injection, access control, resource/file handling, business logic, chained trust boundaries; the repo has no SECURITY.md or threat model). New untrusted-data flows checked in source and covered by passing tests: the issue title reaches gh pr create --title only as an argv element (Command::new("gh").args, no shell); Issue branch names round-trip strictly as issue-N[-branch-K] in branch_number; number_from_url validates owner/repo/pull/N; process-file refusals happen before any session. No proof-of-concept failed, so no fix and no new commits.
  • Spec 1, a Continuation Step was told this was the first Step. a_continuation_prompt_differs_from_a_fresh_start failed on that sentence, then passed after prompt::process_step uses the ADR-0002 continuation sentence. The test is kept. After the rebase it passed again inside cargo test --test process.

Security review outcome

No unaddressed introduced findings.

Review coverage

The review's fixed point was local issue-877 before this branch was rebased onto origin/issue-877, which includes #1387. Both axes reported no unread changed file against that list.

Generated output, excluded and not read:

  • site/docs/index.html, generated from docs/guide.md. cd site && npm run docs:check passed in this session, inside npm test (50 passed).
  • At review time these differed from the stale fixed point and were excluded: site/prompts/index.html, prompts/README.md, prompts/process-step.md, prompts/process-step-later.md, prompts/process-step-issue.md. Sources are src/prompt.rs and src/prompts_page.rs. cargo test --bin thirdshift prompts_page was 12 passed. Those paths are unchanged against origin/issue-877.

After the review, rebasing onto origin/issue-877 resolved conflicts. The review did not re-read these files in their merged form:

  • README.md
  • docs/guide.md
  • site/docs/index.html (also the generated exclusion above)
  • site/how-it-works/index.html
  • site/index.html
  • src/args.rs
  • src/main.rs
  • src/processes.rs
  • tests/process.rs

The merge keeps #1387's Run notification, status, and Console naming, and this issue's Issue branch and Delivery. parse_process accepts process check <name> [issue <issue>] and still refuses email flags on check.

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

…#1388)

A Process can name one issue-branch worktree and a delivery Step. The run
creates the Issue branch, holds the Claim, and leaves a ready-for-review
pull request. A missing issue or a missing delivery is refused before any
session.
The test job rejected needless borrows, a redundant closure, and
functions past clippy's argument limit. Delivery's envelope and publish
steps, a Process's worktree source, and a Step prompt now carry those
arguments in the types that already name them.
# Conflicts:
#	README.md
#	docs/guide.md
#	site/docs/index.html
#	site/how-it-works/index.html
#	site/index.html
#	src/processes.rs
@JacobStephens2
JacobStephens2 merged commit a9465b8 into issue-877 Oct 27, 2026
24 of 25 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-1388 branch October 27, 2026 05:38
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