orchestrator-workflow 0.28.0 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,115 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.30.0] - 2026-09-06
11
+
12
+ ### Added
13
+
14
+ - Decision records now use stable IDs and retain trigger/evidence, decision,
15
+ accountable authority/source, consequences, and supersession links. The
16
+ reviewer recommendation, orchestrator acceptance, and operator-only
17
+ critical-waiver authority are explicit and remain separate; Markdown
18
+ records evidence of authority rather than creating it.
19
+
20
+ - Acceptance-baseline/v1 is an explicitly adopted, creation-time run contract:
21
+ canonical baseline and criterion records are propagated unchanged into each
22
+ delegated task, and coverage references remain links to concrete result
23
+ artifacts. Implementer returns include the delegated baseline identity and
24
+ a per-criterion evidence-reference index; required empty references remain
25
+ unresolved. All input/output blocks select the recorded contract explicitly,
26
+ preserving original string-list contracts for established older runs.
27
+ Existing runs are not migrated or classified from missing fields.
28
+
29
+ ### Changed
30
+
31
+ - After independent review, a narrowly scoped docs-only closing delta may be
32
+ accepted without another reviewer round when the entire unreviewed delta is limited
33
+ to explanatory documentation, comments, or citations. Source/test edits and
34
+ semantic changes to executable commands, configuration, policy,
35
+ instructions, or behavior remain ineligible; the option applies only to
36
+ low/medium documentation or maintainability findings, never high/critical
37
+ or other ineligible findings. The recorded `05-review-findings.md` row
38
+ preserves its Severity/Decision headers and records Decision `accepted`.
39
+ Anchored by the analysis in
40
+ `lava-ice-logs/2026-09-05/ow-kit-effort-analysis.md` section 7(iii).
41
+
42
+ - Task-slicing guidance now requires briefs to enumerate every file and doc
43
+ site that references an identifier, config value, build context, or
44
+ documented command the task will change, using annotated `relevant_files`
45
+ and `relevant_docs` entries for sites outside the edit set. Anchored by
46
+ thin n=3 evidence in
47
+ `lava-ice-logs/2026-09-05/ow-kit-effort-analysis.md` sections 5(b) and
48
+ 7(v).
49
+
50
+ - On any round after a task's first, the orchestrator's briefing names
51
+ every mutation probe named in an earlier round of this task, and the
52
+ implementer replays each one, not only the round's new probes, before
53
+ the next reviewer spawn, reporting each replayed probe in
54
+ `mutation_probes` with a new `replayed` sub-field. A replayed probe
55
+ whose mutant now survives or can no longer be applied is a regression
56
+ signal, reported as such and resolved before the next reviewer spawn.
57
+ `04-implementation-summary.md` gained a Mutation Probes subsection
58
+ under Test Evidence to hold this evidence across rounds. The
59
+ orchestrator's reviewer briefing names the replayed probes the
60
+ implementer reports as killed, together with their `mutant` and
61
+ `verified_applied_via` values, so the reviewer may skip re-running
62
+ those; the reviewer output contract is unchanged. Anchored by the
63
+ analysis in `lava-ice-logs/2026-09-05/ow-kit-effort-analysis.md`
64
+ section 7(ii).
65
+
66
+ - The installed implementer and reviewer prompts now carry a checklist item
67
+ for any diff that adds or changes a GitHub Actions `run:` step: replay it
68
+ locally under the shell the step actually runs (`bash --noprofile --norc
69
+ -eo pipefail` when `shell: bash` is set on the step or via
70
+ `defaults.run.shell`, `bash -e` otherwise on Linux and macOS runners;
71
+ Windows runners default to pwsh) before treating it as tested, with the
72
+ expected-success and the expected-failure inputs, replaying a job's steps
73
+ in their committed order, and guarding a step that expects a non-zero
74
+ command inside an `if` or a `set +e`/`set -e` block. The reviewer replays
75
+ in a scratch copy outside the reviewed working tree, keeping the replay
76
+ compatible with its read-only Bash rule. The reviewer's `reproduction`
77
+ field now names this replay as a second, explicitly non-probabilistic
78
+ trigger alongside empirical/probabilistic evidence, with `sample_size:
79
+ not_applicable` allowed. SKILL.md points to the installed implementer
80
+ prompt for the rule. Anchored by the analysis in
81
+ `lava-ice-logs/2026-09-05/ow-kit-effort-analysis.md` section 7(vi).
82
+
83
+ - The installed reviewer prompt now carries a checklist item for identifier
84
+ drift: after a change that deletes or renames an exported identifier,
85
+ type, config key or file, comments, README, CHANGELOG `[Unreleased]`
86
+ prose, and doc comments that still describe the old name as current are
87
+ drift and are findings. Names the check to run, when connected, as a
88
+ drift check over the base..head range; the mechanical guard is
89
+ `agent-primitives drift` (see the agent-primitives package). Anchored by
90
+ the analysis in `lava-ice-logs/2026-09-05/ow-kit-effort-analysis.md`
91
+ section 7(iv).
92
+
93
+ ## [0.29.0] - 2026-09-05
94
+
95
+ ### Added
96
+
97
+ - Native Codex custom agents under `.codex/agents/`, including profile-scoped
98
+ roles and optional effort-tier variants with explicit model and effort.
99
+ The initial routing uses Astra for review/advice and implementation
100
+ escalation, Sol for discovery/slicing, Terra for regular implementation,
101
+ and Luna for narrowly scoped low-tier work.
102
+ - Harness-specific role/tier routing overrides through `--routing <file>`
103
+ on `init`, `setup`, and `apply`, persisted alongside the legacy `models`
104
+ configuration. Optional `--codex-catalog <file>` checks selected Codex
105
+ model/effort pairs against a supplied catalog before installation writes.
106
+
107
+ ### Changed
108
+
109
+ - Agent-led installation and deliberate model refresh are the recommended
110
+ entry point. The agent inspects capabilities and existing preferences,
111
+ applies authorized scoped changes through the CLI, and reports verification
112
+ gaps. The CLI remains available as the reproducible installation backend.
113
+ - Codex workflow guidance uses native role delegation when supported, with an
114
+ explicit inline fallback for environments without native subagents. Normal
115
+ reinstallation preserves recorded routing; model changes use explicit
116
+ overrides or documented operator synchronization.
117
+
118
+
10
119
  ## [0.28.0] - 2026-09-04
11
120
 
12
121
  ### Added
package/INSTALL-AGENT.md CHANGED
@@ -17,21 +17,23 @@ which is mutable. For a stable audit, pin the URL to a commit SHA instead
17
17
 
18
18
  ## What the linked instructions do
19
19
 
20
- 1. **Locate existing harness configs** in the repo root and report them to
21
- you (Claude Code, opencode, Codex marker files; full list in step 1
22
- below).
23
- 2. **Ask you, not guess**: which harnesses should get adapters, which role
24
- profile to install (`full` every role, or `minimal` — implementer and
25
- reviewer only; the reviewer is never optional), which model each
26
- installed subagent role should use, and whether to also render effort-tier
27
- subagent variants (`--tiers`; off by default, no per-tier model prompt
28
- since tier models are chosen automatically). Suggested defaults: profile
29
- `full`; explorer `sonnet`, task-slicer `sonnet`, implementer `sonnet`,
30
- reviewer `opus`, advisor `opus`; tiers off.
31
- 3. **Run the non-interactive installer** with your answers:
32
- `npx orchestrator-workflow init --yes --harness ... --profile ... --models ... [--tiers]`.
33
- If the installer reports conflicts with locally edited files, the agent
34
- shows them to you and asks before any `--force` re-run. **The operator
20
+ 1. **Inspect the repository and installed state**: detect harness configs,
21
+ read an existing workflow manifest, and inspect native model capabilities
22
+ where the harness provides them. Existing choices and authorization are
23
+ evidence; the agent does not make you answer them again.
24
+ 2. **Prepare a concrete configuration diff**: selected harnesses, profile,
25
+ tier variants, and the complete per-harness role/tier routing that will be
26
+ persisted. Existing routing leaves remain exact unless you asked to change
27
+ them. The agent records the prior routing in its handoff as the rollback
28
+ input and never treats "latest" or "newer" as a reason to change models.
29
+ 3. **Ask only when needed**, for a material preference, missing authority, or
30
+ a conflict that changes the result. Then run the non-interactive CLI with
31
+ `--routing <json-file>` for the reviewed deep patch and, when available,
32
+ `--codex-catalog <json-file>` for deterministic Codex capability checking.
33
+ If the installer reports conflicts with locally edited files, inspect the
34
+ concrete files and reuse any overwrite authority already granted for that
35
+ scope. Ask before a `--force` re-run only when authority or conflict scope
36
+ remains unresolved. **The operator
35
37
  path**: when an operator has already run `orchestrator-workflow setup`
36
38
  on this machine (an operator manifest exists at
37
39
  `<operator home>/manifest.json`, where the operator home is
@@ -48,9 +50,12 @@ which is mutable. For a stable audit, pin the URL to a commit SHA instead
48
50
  following the byte-precise rules in step 4 below. This manual path
49
51
  covers `init` only; there is no manual equivalent for `apply` or
50
52
  `adopt`, both of which require the installed CLI.
51
- 5. **Report back**: which harnesses were installed, which profile and model
52
- each role uses, whether effort-tier variants were rendered, and any
53
- conflicts left in place.
53
+ 5. **Verify and report back**: describe the applied routing, prior routing
54
+ rollback input, installed profile and variants, and the supported dispatch
55
+ path (named selection, explicit model/effort spawn from the installed TOML,
56
+ or inline/sequential fallback). Include checks run, unknown capability or
57
+ entitlement gaps, and conflicts left in place. The workflow never opens a
58
+ GUI or changes fleet or global harness configuration.
54
59
 
55
60
  ### Write surface
56
61
 
@@ -77,24 +82,26 @@ The install creates or touches only these paths:
77
82
  is created with a short heading when absent (Claude Code harness only)
78
83
  - `.claude/skills/orchestrator-workflow/SKILL.md` and
79
84
  `.claude/agents/{explorer,task-slicer,implementer,reviewer,advisor}.md` (Claude Code)
80
- - `.agents/skills/orchestrator-workflow/SKILL.md` (Codex)
85
+ - `.agents/skills/orchestrator-workflow/SKILL.md` and
86
+ `.codex/agents/{explorer,task-slicer,implementer,reviewer,advisor}.toml` (Codex)
81
87
  - `.opencode/skills/orchestrator-workflow/SKILL.md` and
82
88
  `.opencode/agents/{explorer,task-slicer,implementer,reviewer,advisor}.md` (opencode)
83
89
 
84
90
  The per-role agent files above are the `full` profile (the default); the
85
- `minimal` profile writes only the `implementer` and `reviewer` files for
86
- Claude Code and opencode and skips `task-slicer`, `explorer`, and `advisor`
87
- entirely. Codex has no per-role files, so the profile choice does not change
88
- what it gets. When `--tiers` is on, each installed Claude Code and opencode role
91
+ `minimal` profile writes only the `implementer` and `reviewer` files for all
92
+ three harnesses and skips `task-slicer`, `explorer`, and `advisor` entirely.
93
+ When `--tiers` is on, each installed role
89
94
  additionally gets one subagent file per non-default effort tier, named
90
- `<role>-<tier>.md` (never a file for the role's own default tier, which
91
- would collide with the plain `<role>.md` file); see the package README's
95
+ `<role>-<tier>.md` for Claude Code/opencode or `<role>-<tier>.toml` for Codex
96
+ (never a file for the role's own default tier, which would collide with the
97
+ plain role file); see the package README's
92
98
  "Effort tiers" section for the full role/tier table and the per-harness
93
99
  frontmatter shape. `--tiers` is off by default and has no interactive
94
100
  prompt equivalent in the manual fallback below (nor does its negation,
95
101
  `--no-tiers`): the automated installer is the only path that renders
96
102
  tier-variant files; a manual scaffold (step 4) does not cover them.
97
- Nothing else in the repository is modified. Locally edited files are
103
+ The manifest records the complete effective routing map, including exact
104
+ Codex model and effort selections. Nothing else in the repository is modified. Locally edited files are
98
105
  reported as conflicts and left alone, never overwritten silently; the
99
106
  exceptions are the kit-owned surfaces: `.ai/workflow/manifest.json` (the
100
107
  kit's state file, rewritten whenever the applied state changes) and the
@@ -103,52 +110,64 @@ is fully reversible: `npx orchestrator-workflow uninstall` removes exactly
103
110
  this write surface again, keeping run history under `.ai/runs/` and any
104
111
  locally edited files. Network access is limited to the npm registry (for
105
112
  `npx`) and, in the manual fallback, this repository on github.com /
106
- raw.githubusercontent.com.
113
+ raw.githubusercontent.com. Native harness capability inspection is read-only;
114
+ the workflow does not open a GUI or mutate global or fleet configuration.
107
115
 
108
116
  ## Instructions for the agent
109
117
 
110
118
  You are a coding agent that was pointed at this file. Execute the following
111
119
  steps in the repository you were asked to install into.
112
120
 
113
- 1. Detect existing harness configs in the repo root: `.claude/` or
114
- `CLAUDE.md` (Claude Code), `.opencode/`, `opencode.json` or
115
- `opencode.jsonc` (opencode), `.agents/` or `.codex/` (Codex). Tell the
116
- operator what you found.
121
+ 1. Inspect the target before proposing changes:
122
+ - Detect `.claude/` or `CLAUDE.md` (Claude Code), `.opencode/`,
123
+ `opencode.json` or `opencode.jsonc` (opencode), and `.agents/` or
124
+ `.codex/` (Codex).
125
+ - Read `.ai/workflow/manifest.json` when present. Treat its harnesses,
126
+ profile, tiers, legacy models, and exact routing as the reinstall
127
+ baseline. Preserve them unless the operator already requested a change.
128
+ - Inspect native model capabilities when the installed harness exposes a
129
+ read-only command. For Codex, a refreshed `codex debug models` catalog
130
+ can be supplied to the installer with `--codex-catalog`; a bundled-only
131
+ view does not prove account entitlement. Do not invent a minimum harness
132
+ version. If the catalog or entitlement is unavailable offline, report
133
+ that gap instead of claiming validation.
134
+ - Check for an operator manifest as described under "Operator path" below.
135
+ Existing authorization and preferences remain valid. Do not open a GUI
136
+ or change global or fleet configuration.
117
137
 
118
- 2. Ask the operator, do not guess:
119
- - Which harnesses should get adapters: claude, codex, opencode?
120
- Suggest the detected ones.
121
- - Which role profile: `full` (explorer, task-slicer, implementer,
122
- reviewer, advisor the default) or `minimal` (implementer and reviewer
123
- only; the reviewer is never optional under either profile)?
124
- - Which model for each role the chosen profile installs? Suggest the
125
- defaults: explorer `sonnet`, task-slicer `sonnet`, implementer
126
- `sonnet`, reviewer `opus`, advisor `opus`. Accept the aliases `sonnet`,
127
- `opus`, `haiku` or a full model id. Skip asking about a role's model
128
- when the chosen profile does not install that role.
129
- - Whether to also render effort-tier subagent variants (`--tiers`)?
130
- Default: off. There is no per-tier model question: tier models are
131
- chosen automatically from the tier (see the package README's "Effort
132
- tiers" section for the role/tier table and the model-class mapping).
138
+ 2. Prepare a concrete, reviewable configuration diff. Infer the harness set
139
+ from installed state and detected configs; infer the existing profile,
140
+ tiers, and routing from the manifests. Use `full` for a fresh install
141
+ unless the repository clearly calls for `minimal`. Build a routing JSON
142
+ deep patch only for leaves that need to change. Its shape is
143
+ `harness -> role -> tier -> {model, effort}`; the role's default-tier key
144
+ configures the unsuffixed file. Preserve every omitted leaf. Keep the prior
145
+ routing in the handoff as the rollback input. Never upgrade a model merely
146
+ because a newer one exists, and ask the operator only when a material
147
+ preference, authority boundary, or conflict remains unresolved.
133
148
 
134
- 3. Run the non-interactive installer with the operator's answers:
149
+ 3. Run the non-interactive installer with the reviewed configuration:
135
150
 
136
151
  ```bash
137
152
  npx orchestrator-workflow init --yes \
138
153
  --harness <claude,codex,opencode> \
139
154
  --profile <minimal|full> \
140
- --models "explorer=<model>,task-slicer=<model>,implementer=<model>,reviewer=<model>,advisor=<model>" \
155
+ [--models "explorer=<model>,task-slicer=<model>,implementer=<model>,reviewer=<model>,advisor=<model>"] \
156
+ [--routing <routing.json>] \
157
+ [--codex-catalog <codex-catalog.json>] \
141
158
  [--tiers | --no-tiers]
142
159
  ```
143
160
 
144
161
  Omit `--profile` to keep `full` (or, on a re-run, whatever profile was
145
- installed previously); omit the models for roles the chosen profile does
146
- not install. Add `--tiers` only when the operator asked for tier
162
+ installed previously). `--models` is a backward-compatible input for
163
+ Claude Code and opencode only; never use it to configure Codex. `--routing`
164
+ is the highest-precedence deep patch. Add `--tiers` only when the operator asked for tier
147
165
  variants; add `--no-tiers` only when the operator explicitly wants them
148
166
  turned off on a re-run that previously had them on; omit both to keep
149
167
  tiers off on a fresh install, or whatever value was previously installed
150
- on a re-run. If the command reports conflicts, show them to the operator
151
- and ask before re-running with --force.
168
+ on a re-run. If the command reports conflicts, inspect the concrete files,
169
+ reuse prior overwrite authority for the same scope, and ask before
170
+ `--force` only when authority or scope remains unresolved.
152
171
 
153
172
  **Operator path**: before running `init`, check whether an operator
154
173
  manifest already exists on this machine, at
@@ -166,9 +185,13 @@ steps in the repository you were asked to install into.
166
185
  4. Only if npx or the registry is unavailable, scaffold manually from
167
186
  https://github.com/LanNguyenSi/agent-dx/tree/master/packages/orchestrator-workflow/assets.
168
187
  This manual path does not cover `--tiers`: it never renders
169
- `<role>-<tier>.md` variant files, regardless of what the operator asked
188
+ tier variant files, regardless of what the operator asked
170
189
  for in step 2; tell the operator tier variants require the automated
171
- installer (step 3).
190
+ installer (step 3). It also cannot safely reproduce native Codex TOML from
191
+ the Markdown assets without duplicating the installer's serializer. For a
192
+ Codex manual fallback, install the shared skill only and state that roles
193
+ must run inline and sequentially until the automated CLI can generate
194
+ `.codex/agents/*.toml`.
172
195
 
173
196
  - `.ai/workflow/templates/00-goal.md` through `06-handoff.md` from
174
197
  `assets/templates/`, unchanged.
@@ -197,6 +220,8 @@ steps in the repository you were asked to install into.
197
220
  directly after the `effort:` line. Ensure `CLAUDE.md` exists and
198
221
  contains a line `@AGENTS.md`.
199
222
  - Codex: `.agents/skills/orchestrator-workflow/SKILL.md`, same skill file.
223
+ Do not hand-author `.codex/agents/*.toml`; report the native-agent
224
+ limitation above and use the inline/sequential role fallback.
200
225
  - opencode: `.opencode/skills/orchestrator-workflow/SKILL.md` from
201
226
  `assets/skill/SKILL.md`, unchanged.
202
227
  For each role in the chosen profile (same set as Claude Code above),
@@ -237,7 +262,7 @@ steps in the repository you were asked to install into.
237
262
  ---
238
263
  ```
239
264
  - `.ai/workflow/manifest.json`, exactly this shape (harnesses MUST be an
240
- array, `profile` is `"minimal"` or `"full"`, models keyed by role,
265
+ array, `profile` is `"minimal"` or `"full"`, legacy models keyed by role,
241
266
  version = the kit version you installed, read from this kit's own
242
267
  `packages/orchestrator-workflow/package.json` `version` field):
243
268
 
@@ -270,6 +295,8 @@ steps in the repository you were asked to install into.
270
295
  run then treats existing kit files conservatively and reports conflicts
271
296
  rather than overwriting them.
272
297
 
273
- 5. Report back to the operator: which harnesses were installed, which model
274
- each role uses, whether effort-tier variants were rendered, and any
275
- conflicts that were left in place.
298
+ 5. Verify the expected files and manifest entries, then report back: which
299
+ harnesses and roles were installed; the exact model and effort per routed
300
+ role/tier; whether variants were rendered; the prior routing to use for a
301
+ rollback; the commands actually run; any offline capability or entitlement
302
+ gap; and conflicts left in place.