diff --git a/plugins/voyage/commands/trekexecute.md b/plugins/voyage/commands/trekexecute.md index 27f1514..888ba5f 100644 --- a/plugins/voyage/commands/trekexecute.md +++ b/plugins/voyage/commands/trekexecute.md @@ -1519,6 +1519,37 @@ VOYAGE_PROFILE=balanced /trekexecute --project ... Stats records emit `profile`, `phase_models`, and `profile_source` per Phase 9 record. +## Composition rule (v5.1) + +Independent of the profile system. When `brief.md` carries +`phase_signals` (brief_version ≥ 2.1), each downstream phase resolves +effort + model as: + +``` +effort_for_phase = brief.phase_signals[]?.effort ?? 'standard' +model_for_phase = brief.phase_signals[]?.model ?? profile.phase_models[] +``` + +The brief signal wins per-phase when present; the profile fills any +gaps. There is no helper module — composition is documented prose in +each downstream command. + +For `/trekexecute` specifically: `effort == 'low'` activates `--gates open` ++ sequential-only execution (no worktree-isolated parallel waves — runs +all sessions in a single foreground loop). `effort == 'standard'` (or +absent) → no change (default execution strategy applies). High-effort +behavior is deferred to v5.1.1 per brief Non-Goal. + +### Sequencing gate surface + +When `/trekexecute --project ` is invoked, optionally run +`brief-validator.mjs --soft --json` against `{dir}/brief.md`. If +`BRIEF_V51_MISSING_SIGNALS` appears in `errors` (brief_version ≥ 2.1 +without `phase_signals` or `phase_signals_partial: true`), halt with: +`Brief is brief_version 2.1 but does not carry phase_signals — re-run +/trekbrief to commit them (Phase 3.5).` Enforcement is validator-only; +commands surface, don't re-enforce. + ## Hard rules 1. **No AskUserQuestion for execution decisions.** All execution decisions come diff --git a/plugins/voyage/commands/trekplan.md b/plugins/voyage/commands/trekplan.md index ddf7bc9..68d3d1b 100644 --- a/plugins/voyage/commands/trekplan.md +++ b/plugins/voyage/commands/trekplan.md @@ -894,6 +894,36 @@ VOYAGE_PROFILE=balanced /trekplan --project ... Stats records emit `profile`, `phase_models`, `parallel_agents`, and `profile_source` so operators can audit which profile drove which session. +## Composition rule (v5.1) + +Independent of the profile system. When `brief.md` carries +`phase_signals` (brief_version ≥ 2.1), each downstream phase resolves +effort + model as: + +``` +effort_for_phase = brief.phase_signals[]?.effort ?? 'standard' +model_for_phase = brief.phase_signals[]?.model ?? profile.phase_models[] +``` + +The brief signal wins per-phase when present; the profile fills any +gaps. There is no helper module — composition is documented prose in +each downstream command. + +For `/trekplan` specifically: `effort == 'low'` activates the existing +`--quick`-equivalent code-path (skip Phase 5 agent swarm — plan directly +without exploration agents). `effort == 'standard'` (or absent) → no +change. High-effort behavior is deferred to v5.1.1 per brief Non-Goal +("No complete per-phase effort dictionary"). + +### Sequencing gate surface + +Phase 1 already calls `brief-validator.mjs --soft`. If the validator +returns `BRIEF_V51_MISSING_SIGNALS` in `errors` (brief_version ≥ 2.1 +without `phase_signals` or `phase_signals_partial: true`), halt with a +one-line message: `Brief is brief_version 2.1 but does not carry phase_signals +— re-run /trekbrief to commit them (Phase 3.5).` Enforcement is +validator-only; this surface just makes the friendly hint readable. + ## Hard rules - **Brief-driven**: Every plan decision must trace back to a section of the diff --git a/plugins/voyage/commands/trekresearch.md b/plugins/voyage/commands/trekresearch.md index d39c4c3..ea1d84a 100644 --- a/plugins/voyage/commands/trekresearch.md +++ b/plugins/voyage/commands/trekresearch.md @@ -435,6 +435,36 @@ Stats records emit `profile`, `phase_models`, `parallel_agents`, `external_research_enabled`, and `profile_source` so operators can audit which profile drove which session. +## Composition rule (v5.1) + +Independent of the profile system. When `brief.md` carries +`phase_signals` (brief_version ≥ 2.1), each downstream phase resolves +effort + model as: + +``` +effort_for_phase = brief.phase_signals[]?.effort ?? 'standard' +model_for_phase = brief.phase_signals[]?.model ?? profile.phase_models[] +``` + +The brief signal wins per-phase when present; the profile fills any +gaps. There is no helper module — composition is documented prose in +each downstream command. + +For `/trekresearch` specifically: `effort == 'low'` activates the +existing `--quick`-equivalent code-path (inline research, no agent swarm). +`effort == 'standard'` (or absent) → no change. High-effort behavior is +deferred to v5.1.1 per brief Non-Goal. + +### Sequencing gate surface + +When `/trekresearch --project ` is invoked and `{dir}/brief.md` +exists, optionally run `brief-validator.mjs --soft --json` against it. +If `BRIEF_V51_MISSING_SIGNALS` appears in `errors` (brief_version ≥ 2.1 +without `phase_signals` or `phase_signals_partial: true`), halt with: +`Brief is brief_version 2.1 but does not carry phase_signals — re-run +/trekbrief to commit them (Phase 3.5).` Enforcement is validator-only; +commands surface, don't re-enforce. + ## Hard rules - **No planning:** This command produces research briefs, not implementation plans. diff --git a/plugins/voyage/commands/trekreview.md b/plugins/voyage/commands/trekreview.md index 73bf18d..73bdcbb 100644 --- a/plugins/voyage/commands/trekreview.md +++ b/plugins/voyage/commands/trekreview.md @@ -357,6 +357,36 @@ VOYAGE_PROFILE=premium /trekreview --project ... Stats records emit `profile` and `profile_source`. +## Composition rule (v5.1) + +Independent of the profile system. When `brief.md` carries +`phase_signals` (brief_version ≥ 2.1), each downstream phase resolves +effort + model as: + +``` +effort_for_phase = brief.phase_signals[]?.effort ?? 'standard' +model_for_phase = brief.phase_signals[]?.model ?? profile.phase_models[] +``` + +The brief signal wins per-phase when present; the profile fills any +gaps. There is no helper module — composition is documented prose in +each downstream command. + +For `/trekreview` specifically: `effort == 'low'` activates the existing +`--quick`-equivalent code-path (skip the brief-conformance reviewer; run +correctness-only). `effort == 'standard'` (or absent) → no change. +High-effort behavior is deferred to v5.1.1 per brief Non-Goal. + +### Sequencing gate surface + +Phase 1 already calls `brief-validator.mjs --soft` against `{brief_path}`. +If the validator returns `BRIEF_V51_MISSING_SIGNALS` in `errors` +(brief_version ≥ 2.1 without `phase_signals` or `phase_signals_partial: +true`), halt with: `Brief is brief_version 2.1 but does not carry +phase_signals — re-run /trekbrief to commit them (Phase 3.5).` +Enforcement is validator-only; this surface just makes the friendly hint +readable. + ## Hard rules - **Brief is the contract.** Every finding in the review traces to a