orchestrator-workflow 0.23.0 → 0.24.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 +95 -0
- package/assets/agents/reviewer.md +5 -0
- package/assets/agents-md-section.md +11 -19
- package/assets/skill/SKILL.md +16 -23
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,101 @@ All notable changes to `orchestrator-workflow` are documented here.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.24.0] - 2026-08-24
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **Moved org-, machine-, and point-in-time-bound evidence out of the kit's
|
|
13
|
+
reusable instruction files; rule text is unchanged.** Public,
|
|
14
|
+
tool-agnostic kit files (`SKILL.md`, `agents-md-section.md`) now carry
|
|
15
|
+
rules and procedures only; the measurements, dates, sample sizes, task
|
|
16
|
+
ids, and incident tallies that used to sit inline are recorded here in
|
|
17
|
+
the changelog instead, with a one-line pointer left in prose.
|
|
18
|
+
- `SKILL.md` step 6 ("Delegate implementation"): the parenthetical
|
|
19
|
+
`(2026-08-24 A/B measurement, n=8: implementer-low reached accept a
|
|
20
|
+
median 320 seconds slower, p=0.016, with 9 high-plus-critical review
|
|
21
|
+
findings against 1 and 8 fix rounds against 1)` is now `(anchored by an
|
|
22
|
+
A/B measurement; see CHANGELOG 0.23.0)`. The full numbers already live
|
|
23
|
+
in the 0.23.0 entry below.
|
|
24
|
+
- `agents-md-section.md`'s Scaling delegation bullet: the paragraph
|
|
25
|
+
naming the A/B's `n=8`, the median slowdown, `p=0.016`, the
|
|
26
|
+
high-plus-critical finding count, the fix-round count, the Haiku 4.5
|
|
27
|
+
model detail, and agent-tasks task `7f38899d` is replaced by "This rule
|
|
28
|
+
is anchored by an A/B measurement; the data and the model caveat are
|
|
29
|
+
recorded in the orchestrator-workflow CHANGELOG (0.23.0)." Same data,
|
|
30
|
+
same 0.23.0 entry.
|
|
31
|
+
- `SKILL.md`'s "Subagent misfire rule": the incident tally `(four so
|
|
32
|
+
far)` and the whole reviewer/model-correlation passage ("So far this
|
|
33
|
+
signal has only been observed for the reviewer role ...", including the
|
|
34
|
+
0.21.0 advisor remark and the pointer to the per-role model
|
|
35
|
+
preferences) are removed. The rule itself (the signal definition, the
|
|
36
|
+
contract-parse and near-instant detection signals, the
|
|
37
|
+
resume-over-respawn preference and its reasoning, the respawn fallback,
|
|
38
|
+
the watchdog-stall exception, the `03-decisions.md` record requirement,
|
|
39
|
+
and "a misfired review is not a review") is unchanged. The removed
|
|
40
|
+
passage, verbatim, for the durable record: "Every incident of this
|
|
41
|
+
exact signal (a return within seconds, zero tool calls, harness or
|
|
42
|
+
system boilerplate instead of the output contract) whose outcome was
|
|
43
|
+
recorded (four so far) has resolved on the first resume attempt; fall
|
|
44
|
+
back to a fresh respawn only if the resume attempt itself misfires the
|
|
45
|
+
same way. So far this signal has only been observed for the reviewer
|
|
46
|
+
role, a role whose default model differs from explorer's,
|
|
47
|
+
task-slicer's, and implementer's (since 0.21.0 the advisor shares the
|
|
48
|
+
reviewer's default model too; the advisor has had no spawns yet, so it
|
|
49
|
+
contributes no evidence either way; see the per-role model
|
|
50
|
+
preferences); treat that correlation as an open lead worth watching as
|
|
51
|
+
more incidents accumulate, not as a confirmed cause." Of the four
|
|
52
|
+
resume outcomes recorded for that signal, three were on 2026-07-16 and
|
|
53
|
+
one was on 2026-07-20. The watchdog-stall exception's removed sentence,
|
|
54
|
+
also verbatim: "This resume-over-respawn preference does not extend to
|
|
55
|
+
a structurally different misfire class: a mid-run watchdog stall (the
|
|
56
|
+
subagent goes idle partway through a run rather than returning
|
|
57
|
+
near-instantly) did not resolve on resume in the one measured incident
|
|
58
|
+
of that class, it stalled a second time, and only a fresh, explicitly
|
|
59
|
+
constrained respawn produced a contract-valid review; treat a watchdog
|
|
60
|
+
stall as outside this preference."
|
|
61
|
+
- `SKILL.md`'s Run state paragraph: "see the grounding-mcp 0.6.0 docs for
|
|
62
|
+
the full consumer semantics" is now "see the consuming gate's
|
|
63
|
+
documentation (grounding-mcp) for the full consumer semantics", dropping
|
|
64
|
+
the pinned version number.
|
|
65
|
+
|
|
66
|
+
### Added
|
|
67
|
+
|
|
68
|
+
- **Reviewer placement check.** `reviewer.md`'s "Check, at minimum" list
|
|
69
|
+
gains a check for org-, machine-, or point-in-time-bound evidence (dates,
|
|
70
|
+
sample sizes, task ids, home paths, incident tallies) leaking into a
|
|
71
|
+
reusable instruction file (a skill, an agent prompt, an AGENTS.md
|
|
72
|
+
section, a template); the fix it recommends is moving the evidence to the
|
|
73
|
+
changelog, the run files, or the consuming workspace and leaving a
|
|
74
|
+
one-line pointer.
|
|
75
|
+
- **Hand-off placement check.** `SKILL.md` step 9 ("Hand off") gains one
|
|
76
|
+
sentence for the orchestrator: check before handing off that no such
|
|
77
|
+
evidence was added to a reusable instruction file.
|
|
78
|
+
- **`placement-guard` CI job.** A dedicated job in agent-dx's
|
|
79
|
+
`.github/workflows/ci.yml`, separate from the package matrix, builds
|
|
80
|
+
`slop-detector` and runs its opt-in `placement-slop` pack against the
|
|
81
|
+
monorepo's instruction files (`packages/orchestrator-workflow/assets/**`
|
|
82
|
+
and `packages/agentic-coding-playbook/**`, configured via the repo-root
|
|
83
|
+
`slop.config.yml`), failing on block-level violations.
|
|
84
|
+
- **Root `slop.config.yml`.** Opts the `placement-slop` pack in for the CI
|
|
85
|
+
job, configures the `LanNguyenSi` org marker with `allow` entries for its
|
|
86
|
+
two legitimate repo links (`github.com/LanNguyenSi/`,
|
|
87
|
+
`raw.githubusercontent.com/LanNguyenSi/`, both anchored to a full
|
|
88
|
+
`https://` URL), widens the pack's instruction-file globs to cover this
|
|
89
|
+
package's `assets/` tree and the `agentic-coding-playbook` package, and
|
|
90
|
+
overrides `placement-slop/dated-evidence`, `placement-slop/tally-phrase`,
|
|
91
|
+
and `placement-slop/opaque-id` from their pack default of `warn` to
|
|
92
|
+
`block`, so the CI job actually fails on a leaked date, tally phrase, or
|
|
93
|
+
opaque id instead of only warning (a home path or an unlisted org marker
|
|
94
|
+
was already `block` by pack default). `packages/github-api-tool/SKILL.md`
|
|
95
|
+
carries two pre-existing dated examples that this severity change would
|
|
96
|
+
now block; it is `ignorePaths`-excluded pending a follow-up cleanup of
|
|
97
|
+
that unrelated package.
|
|
98
|
+
Known limit of the pack, unchanged here: an `allow` match suppresses
|
|
99
|
+
every placement rule on that line, so a home path or a date that shares
|
|
100
|
+
a line with an allowed repo URL is not reported; a span-scoped allow is
|
|
101
|
+
a slop-detector follow-up.
|
|
102
|
+
|
|
8
103
|
## [0.23.0] - 2026-08-24
|
|
9
104
|
|
|
10
105
|
### Changed
|
|
@@ -21,6 +21,11 @@ Check, at minimum:
|
|
|
21
21
|
- Test adequacy: are the new or changed behaviors covered, and would the new
|
|
22
22
|
tests actually fail if the change were reverted? Flag inert tests.
|
|
23
23
|
- Maintainability: naming, dead code, needless abstraction, doc drift.
|
|
24
|
+
- Placement: does the change add org-, machine-, or point-in-time-bound
|
|
25
|
+
evidence (dates, sample sizes, task ids, home paths, incident tallies) to a
|
|
26
|
+
reusable instruction file (a skill, an agent prompt, an AGENTS.md section, a
|
|
27
|
+
template)? Report it; the fix is to move the evidence to the changelog, the
|
|
28
|
+
run files, or the consuming workspace and leave a one-line pointer.
|
|
24
29
|
|
|
25
30
|
Rules:
|
|
26
31
|
|
|
@@ -61,25 +61,17 @@ default, not a ritual.
|
|
|
61
61
|
those three excludes `implementer-low`, and the task runs on the unsuffixed
|
|
62
62
|
implementer or higher, even when the change looks mechanical (a bugfix
|
|
63
63
|
included); when it is unclear whether a criterion demands a run, exclude
|
|
64
|
-
`implementer-low`. This rule is anchored by an A/B measurement
|
|
65
|
-
|
|
66
|
-
(
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
mechanical work; no equivalent measurement exists for those two roles, so
|
|
76
|
-
their rule is unchanged. Not every role gets every tier: `-xhigh` exists
|
|
77
|
-
only for the implementer, the reviewer, and the advisor. The reviewer's
|
|
78
|
-
downshift is `-medium` rather than `-low`, since its default already sits at
|
|
79
|
-
high. The advisor has no downshift at all: its default `high` is already its
|
|
80
|
-
only non-`-xhigh` tier. Spawn only variants that are actually installed.
|
|
81
|
-
Tier choice is a conscious decision, not a ritual; when unsure, use the
|
|
82
|
-
default.
|
|
64
|
+
`implementer-low`. This rule is anchored by an A/B measurement; the data and
|
|
65
|
+
the model caveat are recorded in the orchestrator-workflow CHANGELOG
|
|
66
|
+
(0.23.0). For the explorer and the task-slicer, a `-low` variant still suits
|
|
67
|
+
narrowly scoped, mechanical work; no equivalent measurement exists for those
|
|
68
|
+
two roles, so their rule is unchanged. Not every role gets every tier:
|
|
69
|
+
`-xhigh` exists only for the implementer, the reviewer, and the advisor. The
|
|
70
|
+
reviewer's downshift is `-medium` rather than `-low`, since its default
|
|
71
|
+
already sits at high. The advisor has no downshift at all: its default `high`
|
|
72
|
+
is already its only non-`-xhigh` tier. Spawn only variants that are actually
|
|
73
|
+
installed. Tier choice is a conscious decision, not a ritual; when unsure,
|
|
74
|
+
use the default.
|
|
83
75
|
- Every unsuffixed default subagent carries its own pinned default effort
|
|
84
76
|
baked into its own file, not inherited from the orchestrator session:
|
|
85
77
|
medium for the explorer, the task-slicer, and the implementer; high for
|
package/assets/skill/SKILL.md
CHANGED
|
@@ -90,8 +90,8 @@ run-completeness readers, not an acceptance verdict, and it fails open:
|
|
|
90
90
|
left as `TODO` it does not block anything, the reader just falls back to a
|
|
91
91
|
tolerant day-granular date heuristic. The recorded base must resolve in the
|
|
92
92
|
repo, be an ancestor of HEAD, and must not lie behind the fork point of the
|
|
93
|
-
change (the merge-base with the remote default branch); see the
|
|
94
|
-
grounding-mcp
|
|
93
|
+
change (the merge-base with the remote default branch); see the consuming
|
|
94
|
+
gate's documentation (grounding-mcp) for the full consumer semantics.
|
|
95
95
|
|
|
96
96
|
## Workflow
|
|
97
97
|
|
|
@@ -147,10 +147,8 @@ directory and the subagents.
|
|
|
147
147
|
task assignment names mutation probes to run; or the task slicer's
|
|
148
148
|
`suggested_tests` came back non-empty. Any one of those three excludes
|
|
149
149
|
`implementer-low`, even for a change that looks mechanical (a bugfix
|
|
150
|
-
included) (
|
|
151
|
-
a
|
|
152
|
-
findings against 1 and 8 fix rounds against 1). When it is unclear
|
|
153
|
-
whether a criterion demands a run, exclude `implementer-low`. When a
|
|
150
|
+
included) (anchored by an A/B measurement; see CHANGELOG 0.23.0). When it is
|
|
151
|
+
unclear whether a criterion demands a run, exclude `implementer-low`. When a
|
|
154
152
|
task's acceptance rests on a test that must fail without the change, name
|
|
155
153
|
the mutation probes to run in the task assignment; the implementer reports
|
|
156
154
|
each one in the output contract's `mutation_probes` field (apply the mutant
|
|
@@ -213,7 +211,10 @@ directory and the subagents.
|
|
|
213
211
|
validator when one is available (for example `okf-kit check`). Repos
|
|
214
212
|
without a bundle are unaffected. Then fill `06-handoff.md` and report to the
|
|
215
213
|
operator: what changed, why, how it was verified, known risks, accepted
|
|
216
|
-
waivers, suggested next step.
|
|
214
|
+
waivers, suggested next step. Before handing off, check that no org-,
|
|
215
|
+
machine-, or point-in-time-bound evidence was added to a reusable
|
|
216
|
+
instruction file; such evidence belongs in the changelog, the run files,
|
|
217
|
+
or the consuming workspace, with a pointer left behind.
|
|
217
218
|
|
|
218
219
|
When finalizing `05-review-findings.md` and `06-handoff.md`, replace the `TODO`
|
|
219
220
|
in each `<!-- solution-acceptance: ... = TODO -->` marker with the chosen enum
|
|
@@ -451,22 +452,14 @@ explicitly repeats the original assignment rather than a generic retry,
|
|
|
451
452
|
since resume keeps the subagent's prior turn in context while a fresh spawn
|
|
452
453
|
starts cold and risks the same misfire again. Every incident of this exact
|
|
453
454
|
signal (a return within seconds, zero tool calls, harness or system
|
|
454
|
-
boilerplate instead of the output contract) whose outcome was recorded
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
worth watching as more incidents accumulate, not as a confirmed cause. This
|
|
463
|
-
resume-over-respawn preference does not extend to a structurally different
|
|
464
|
-
misfire class: a mid-run watchdog stall (the subagent goes idle partway
|
|
465
|
-
through a run rather
|
|
466
|
-
than returning near-instantly) did not resolve on resume in the one
|
|
467
|
-
measured incident of that class, it stalled a second time, and only a
|
|
468
|
-
fresh, explicitly constrained respawn produced a contract-valid review;
|
|
469
|
-
treat a watchdog stall as outside this preference. Record every misfire in
|
|
455
|
+
boilerplate instead of the output contract) whose outcome was recorded has
|
|
456
|
+
resolved on the first resume attempt; fall back to a fresh respawn only if
|
|
457
|
+
the resume attempt itself misfires the same way. This resume-over-respawn
|
|
458
|
+
preference does not extend to a structurally different misfire class: a
|
|
459
|
+
mid-run watchdog stall (the subagent goes idle partway through a run rather
|
|
460
|
+
than returning near-instantly) did not resolve on resume; only a fresh,
|
|
461
|
+
explicitly constrained respawn produced a contract-valid review; treat a
|
|
462
|
+
watchdog stall as outside this preference. Record every misfire in
|
|
470
463
|
`03-decisions.md`. This matters most for review: a misfired review is not a
|
|
471
464
|
review and never satisfies the review gate, since review is never skipped.
|
|
472
465
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "orchestrator-workflow",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
4
4
|
"description": "Installer for an orchestrator-led agent workflow: .ai/ run state, an AGENTS.md policy section, and per-harness subagent definitions for Claude Code, OpenAI Codex, and opencode",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|