Skip to content

Let a Custom process Step name its Harness, Model and Effort - #1404

Merged
JacobStephens2 merged 6 commits into
issue-877from
issue-1381
Oct 27, 2026
Merged

JacobStephens2 merged 6 commits into
issue-877from
issue-1381

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

Summary

A Custom process Step may name its own Harness, Model and Effort. Each omitted field inherits the Command's resolved value and its origin, including values from User config when the Step changes Harness.

Command choice = command flags > User config > Harness default
for each Step
  overlay its explicit harness, model and effort on the resolved Command choice
  preflight the selected Harness and validate its Model and Effort
if any choice cannot start
  refuse with rule, line, Step and Harness before any session
otherwise
  run each sequential or parallel group on its Steps' selected Harnesses

thirdshift process [check] <name> accepts harness, model and effort, with or without --, alongside the existing issue, notification and merge options. process check prints every Step's choices, origins (Step, command, User config, default) and startup result. It performs usual Harness preflight, including minimal Model tests when needed, and runs no Step. Unknown Harnesses produce a rule-and-line refusal. Step choices carry through parallel sessions, Resumes, published-issue dispatch and Delivery repairs. Every selected Harness's Factory skills and instruction fallback are linked into the worktrees. Glossary, manual and site copy cover the behavior; Security review keeps its existing Harness selection and fallback.

Closes #1381

Evidence

  • Before: the review's exact cargo test --test review_1381_inheritance -- --nocapture failed on 0372de38: a Claude Step omitting Model/Effort used its own opus/low configuration instead of the Command's configured gpt-6.1-sol/high.
    After: the same retained regression passes; process check reports gpt-6.1-sol/high with User config provenance and starts no sessions.
  • Before: the review's OpenCode startup regression allowed both Process Steps to run despite an invalid Model; the catalog-alias regressions passed raw Opus 5.5/HIGH to Claude after Muse resolved them.
    After: cargo test --test review_1381_startup refuses before any Step session. cargo test --test review_1381_alias passes both complete and partial-override alias cases.
  • cargo test --test process --test review_1381_inheritance --test review_1381_alias --test review_1381_startup: 104 passed, covering Claude/Codex/agy argv, command inheritance, choice origins, unknown Harnesses, startup refusal, and the base's parallel, issue, dispatch, Delivery and Self-merge workflows.
  • cargo clippy --all-targets -- -D warnings: passed.
  • CI on 5e683ba9: 3,203 Rust tests passed, 73 skipped; execution 866.611s, compilation 1m 23s. All CI and release-build checks are green or intentionally skipped.
  • scripts/affected-tests issue-877: all 50 site tests passed, including docs:check; 2,482 Rust tests passed locally before the duplicate run was stopped once CI passed on the same head, as docs/testing.md requires. The first CI attempt failed in the existing Console Stop HTTP test; that exact scenario passed alone locally (7.83s), in the local full run, and on the CI rerun.

Test seam: the thirdshift CLI, including process and process check, through Scenario with real Git and fake Harnesses.

Merge Danger

Door: two-way

The file format remains version 1. A Step changing Harness inherits omitted Model/Effort values from the Command, including its User config choices. Authors must name different values on the Step when needed; a catalog rejection fails the Command before any session.

Blast Radius: narrow

Experimental Custom processes and shared parsing of Harness/Model/Effort flags. Existing run behavior is covered by the argument regressions and final checks. Security review's separate Harness and fallback are preserved.

Unaddressed findings

Standards

None. Both findings were addressed: one parser owns the shared Harness/Model/Effort words, and CommandChoice owns resolved values and provenance together.

Spec

None. All three findings—User config inheritance, usual startup preflight, and canonical Model/Effort inheritance—were reproduced with the reviewers' exact tests and commands, fixed, and retained as regressions. The alias follow-up's partial-override case was also reproduced and fixed. No finding was deferred to the Spec or Day shift.

Security

None. A dispatched Ticket run's Security review followed the Step or the command's Harness, Model and Effort when security.harness matched the default choice. cargo test --test review_1381_security_harness failed before the fix and passes after it; the regression stays.

Review coverage: Standards raised 2 findings and Spec raised 3, all addressed. Both axes reviewed all 14 changed paths across the initial review, the fresh review after reconciling issue-877, and each review's one coverage follow-up. The implementing agent reproduced and verified the final partial-alias correction and probe-aware fixture adjustments after those follow-ups. No changed file was left unread; no generated output was excluded, including site/docs/index.html.

Built with codex codex-cli 0.164.0 · gpt-6.1-sol · xhigh

Security review outcome

No unaddressed introduced findings.

A Step that names nothing uses the Command's choice, including --harness. A Harness that can't start fails the Command before any session, with no fallback. process check prints each Step's choice, where it came from, and whether the Harness starts.
A Step on another Harness takes the command's model and effort when it names none. Catalog preflight still refuses a model that Harness cannot run, before any session.
A Step's choice replaced the child Run's Harness after the review had
been resolved against the default. When that default matched
security.harness, the review followed the Step. Resolve the review
against the Step's choice before dispatch.
@JacobStephens2
JacobStephens2 merged commit 9919bab into issue-877 Oct 27, 2026
18 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-1381 branch October 27, 2026 13:36
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