@sabaiway/agent-workflow-engine 1.8.0 → 1.10.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
@@ -4,6 +4,41 @@ All notable changes to the methodology engine. Versions are this **package's** n
4
4
  they are distinct from the **deployment-lineage** stamp written into a project's `docs/ai/`
5
5
  (which tracks the shared `agent-workflow` lineage, head `1.3.0`).
6
6
 
7
+ ## 1.10.0 — Cost-lane vocabulary in the orchestration canon (§5)
8
+
9
+ A **feature** release (canon text + its tests; installer unchanged). Work now has named **cost
10
+ lanes**, and the canon states who runs what:
11
+
12
+ - **`orchestration.md` §5 defines the lanes** — **L0** deterministic script · **L1** cheap
13
+ subagent (small model, low effort, read-only tools) · **L2** subscription bridge · **L3**
14
+ frontier — plus the two routing rules: route every step to the **cheapest adequate executor**,
15
+ and **a step with no named guardrail does not move down** a lane. The **red lines never move
16
+ down**: council review models · real code · ADR/plan/handover/changelog-entry wording ·
17
+ persuasive copy · go/no-go · the maintainer approval asks. Asymmetric pairing (cheap drafts,
18
+ a deterministic tool or the frontier verifies) and the incident-repair default (salvage
19
+ recorded state first, never frontier re-derivation) are canon now.
20
+ - **Lockstep tests** — `test/orchestration-canon.test.mjs` pins the four lane tokens, both
21
+ routing rules, the red-line list, and that §5 stays generic (the L0 examples name the family's
22
+ own surfaces — the gate runner over `docs/ai/gates.json`, the rotation checks — never a
23
+ project's publish mechanics); `test/procedures-canon.test.mjs` pins the same canon tokens the
24
+ composition root's advisor paraphrases, so the two cannot silently drift apart.
25
+
26
+ ## 1.9.0 — Honest installer messaging: the verb states what was observed, the note states facts
27
+
28
+ A **feature** release (installer output contract only; the canon text is unchanged). `bin/install.mjs`
29
+ no longer claims "updated the canon to vX" on every run and no longer accuses the npx cache on a
30
+ same-version re-run:
31
+
32
+ - **The final verb is keyed on the OBSERVED version comparison**, never on mere presence: fresh or
33
+ legacy/unstamped → `installed` (no transition claim when the prior version is unknowable); older →
34
+ `updated the canon to vX`; same → `refreshed the already-current canon`; newer → `downgraded the
35
+ canon to vX` (reachable only under the explicit `--allow-downgrade`).
36
+ - **The same-version note states observable facts only** — the copy still ran (a re-run repairs
37
+ locally modified or deleted files) — plus a CONDITIONAL hint: *if you expected a newer version*,
38
+ invoke the `@latest` tag explicitly. The "npx likely served a cached build" accusation is gone
39
+ (not observable without a network check).
40
+ - The never-downgrade gate, its refusal wording, and the read-before-write ordering are untouched.
41
+
7
42
  ## 1.8.0 — Mechanize the §9 review-loop discipline (round cap · crossover · finding-origin)
8
43
 
9
44
  A **feature** release. The methodology canon institutionalizes the review-loop economics so the round
package/SKILL.md CHANGED
@@ -3,7 +3,7 @@ name: agent-workflow-engine
3
3
  description: Canonical home of the agent-workflow planning methodology — the Plan→Phase→Step→Substep vocabulary, plan lifecycle, queue.md series index, mandatory Cleanup phase, the bounded methodology slot fragment, the orchestration-recipe vocabulary (Solo / Reviewed / Council / Delegated), and the activity-procedures canon (plan-authoring / plan-execution, with typed recipe slots). A published, installable npm package (available:true) that *provides* the methodology text; it mutates nothing. The composition root (agent-workflow-kit) reads this canon LIVE from the installed engine and injects the bounded slots from it — one source of truth, no bundled mirror; `npx @sabaiway/agent-workflow-kit@latest init` installs the engine.
4
4
  disable-model-invocation: true
5
5
  metadata:
6
- version: '1.8.0'
6
+ version: '1.10.0'
7
7
  ---
8
8
 
9
9
  # agent-workflow-engine
package/bin/install.mjs CHANGED
@@ -241,15 +241,25 @@ const main = async () => {
241
241
  await Promise.all(
242
242
  PAYLOAD.map((entry) => copyRecursive(resolve(PKG_ROOT, entry), resolve(target, entry), target)),
243
243
  );
244
- console.log(
245
- `[agent-workflow-engine] ${wasPresent ? 'updated the canon to' : 'installed'} v${version} -> ${tildify(target)}`,
246
- );
244
+ // Verb keyed on the OBSERVED version relation (cmp), never on mere presence: null (fresh install,
245
+ // or a legacy/unstamped one whose prior version is unknowable) → "installed"; -1 a real update;
246
+ // 0 → already current (the copy still ran — see the note below); 1 is reachable only under
247
+ // --allow-downgrade (the gate above refused otherwise) and says so plainly.
248
+ const verb =
249
+ cmp === 0 ? 'refreshed the already-current canon'
250
+ : cmp === 1 ? 'downgraded the canon to'
251
+ : cmp === -1 ? 'updated the canon to'
252
+ : 'installed';
253
+ console.log(`[agent-workflow-engine] ${verb} v${version} -> ${tildify(target)}`);
247
254
 
248
- // No-op re-run (same version) almost always npx served a cached build; say so + point at @latest.
255
+ // Same-version re-run: state observable facts only. The copy DID run (repair-on-rerun is a feature
256
+ // it restores locally modified/deleted files), and whether npx served a cached build is NOT
257
+ // observable here (no network), so the note never claims it; the @latest hint is conditional.
249
258
  if (cmp === 0) {
250
259
  console.log(
251
- `[agent-workflow-engine] note: no version change — the canon was already v${version}. If you ` +
252
- `expected an update, npx likely served a cached build; re-run bypassing the cache:\n` +
260
+ `[agent-workflow-engine] note: the canon was already v${version} the copy still ran, restoring ` +
261
+ `any locally modified or deleted canon file to this version's packaged contents. If you ` +
262
+ `expected a NEWER version, invoke the @latest tag explicitly:\n` +
253
263
  ` npx @sabaiway/agent-workflow-engine@latest init`,
254
264
  );
255
265
  }
package/capability.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "schema": 1,
4
4
  "name": "agent-workflow-engine",
5
5
  "kind": "methodology-engine",
6
- "version": "1.8.0",
6
+ "version": "1.10.0",
7
7
  "available": true,
8
8
  "provides": ["plan"],
9
9
  "roles": {},
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sabaiway/agent-workflow-engine",
3
- "version": "1.8.0",
3
+ "version": "1.10.0",
4
4
  "description": "Canonical home of the agent-workflow planning methodology — the Plan→Phase→Step vocabulary, plan lifecycle, queue.md series index, and mandatory Cleanup phase, consumed by the kit (composition root). The methodology engine of the agent-workflow family.",
5
5
  "keywords": [
6
6
  "ai-agents",
@@ -101,6 +101,41 @@ already accepted: run both, every round, until a round comes back clean — or u
101
101
  marks the crossover (§4), resolved at altitude rather than by exhausting the strictest backend. Spending
102
102
  quota to line-by-line re-review mechanics past that crossover is the over-run the divergence stop prevents.
103
103
 
104
+ ### Cost lanes — route every step to the cheapest adequate executor
105
+
106
+ Model quota is one axis of a wider guard: work has **lanes**, and every step routes to the
107
+ **cheapest adequate executor**:
108
+
109
+ - **L0 — deterministic script.** Anything rule-driven and verifiable by exit code: the batched
110
+ project gate matrix (the family's generic gate runner over a project-declared
111
+ `docs/ai/gates.json`), the docs cap/index checks, the rotation `--check` scripts
112
+ (changelog / issues / decisions). If a step CAN be a script, it IS a script — a model
113
+ re-reading what an exit code already proves is the canonical waste.
114
+ - **L1 — cheap subagent** (a small model at low effort, bounded read-only tools): mechanical
115
+ extraction at scale — inventories, fact sweeps, changelog fact-skeletons, digesting long
116
+ failing output. Extraction and drafting ONLY; the orchestrator verifies the output against
117
+ sources and owns every conclusion.
118
+ - **L2 — subscription bridge** (`codex` / `agy`): review and bounded delegated execution,
119
+ governed by the recipes above; real review work stays on frontier bridge models
120
+ (quality-first — economy on this lane comes from precomputed context, never a weaker model).
121
+ - **L3 — frontier main lane**: judgment — plans, folds, syntheses, ADR / handover /
122
+ changelog-entry wording, user-facing copy, go/no-go, real code.
123
+
124
+ Two rules bound the routing. **A step with no named guardrail does not move down a lane** — a
125
+ deterministic checker, a pinned test, or a verifying orchestrator must catch a cheaper executor's
126
+ error, otherwise the step stays where it is. And the **red lines never move down**: council
127
+ reviews on frontier bridge models · real code implementation · ADR / plan / handover /
128
+ changelog-entry wording · persuasive user-facing copy · go/no-go judgment · the maintainer's
129
+ approval asks (commit / push / publish — cost tiering never touches approval gates).
130
+
131
+ **Asymmetric pairing** is the default composition: the cheap lane drafts, a deterministic tool or
132
+ the frontier verifies and signs — never the reverse.
133
+
134
+ **Incident repair (your own error) defaults down-lane:** salvage recorded state first (journals,
135
+ transcripts, git), replay it deterministically (L0), hand the leftovers to L1 in one batch —
136
+ frontier re-derivation of recoverable state is the expensive failure mode, and the maintainer
137
+ never pays frontier tokens for the agent's own mistake.
138
+
104
139
  A **standing health advisory** applies to `agy`: the Antigravity service can **stall on substantive
105
140
  prompts** (a long hang that returns nothing — an external service issue, not a setup problem;
106
141
  tracked as **Issue-001** in the kit's known issues). It is **invisible to file-presence detection**,