@sabaiway/agent-workflow-engine 1.9.0 → 1.11.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 +38 -0
- package/SKILL.md +1 -1
- package/capability.json +1 -1
- package/package.json +1 -1
- package/references/orchestration.md +35 -0
- package/references/planning.md +1 -1
- package/references/procedures.md +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,44 @@ 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.11.0 — Plans carry only checked syntax (the §9 checked-vs-unchecked boundary)
|
|
8
|
+
|
|
9
|
+
A **feature** release (canon text + its tests; installer unchanged). The §9 "No code-mechanics in
|
|
10
|
+
the plan" rule now names a hard discriminator for what syntax plan prose may carry:
|
|
11
|
+
|
|
12
|
+
- **`references/planning.md` §9 (B5)** — **checked syntax**: a Step's exact paths + commands stay
|
|
13
|
+
REQUIRED (§7/§8) and count as checked because the plan's own Verification runs them against an
|
|
14
|
+
explicit expected outcome or gate — merely running without asserting checks nothing; the only
|
|
15
|
+
other syntax a plan may carry is a literal fixture/schema fragment a named test copies or
|
|
16
|
+
validates. **Un-run, logic-bearing syntax** — control-flow, a regex, a glob, a grammar, an
|
|
17
|
+
algorithm body, a mini-DSL, anything that transforms data or evaluates a condition — never lives
|
|
18
|
+
in plan prose, however plausible or shell-verified it looks ("I ran it in my shell" is not a
|
|
19
|
+
checker): a fold or draft that wants one writes the red→green test-as-spec at Execute instead.
|
|
20
|
+
- **`references/procedures.md` plan-authoring step 5** — the terse mirror of the same boundary at
|
|
21
|
+
the point of use (the kit advisor prints this section verbatim).
|
|
22
|
+
- **Lockstep tests** — `planning-canon.test.mjs` (§9 it-block) and `procedures-canon.test.mjs`
|
|
23
|
+
(Set-1) pin the two new tokens `checked syntax` + `logic-bearing`; non-vacuity proven by an
|
|
24
|
+
injected red→green in both guards.
|
|
25
|
+
|
|
26
|
+
## 1.10.0 — Cost-lane vocabulary in the orchestration canon (§5)
|
|
27
|
+
|
|
28
|
+
A **feature** release (canon text + its tests; installer unchanged). Work now has named **cost
|
|
29
|
+
lanes**, and the canon states who runs what:
|
|
30
|
+
|
|
31
|
+
- **`orchestration.md` §5 defines the lanes** — **L0** deterministic script · **L1** cheap
|
|
32
|
+
subagent (small model, low effort, read-only tools) · **L2** subscription bridge · **L3**
|
|
33
|
+
frontier — plus the two routing rules: route every step to the **cheapest adequate executor**,
|
|
34
|
+
and **a step with no named guardrail does not move down** a lane. The **red lines never move
|
|
35
|
+
down**: council review models · real code · ADR/plan/handover/changelog-entry wording ·
|
|
36
|
+
persuasive copy · go/no-go · the maintainer approval asks. Asymmetric pairing (cheap drafts,
|
|
37
|
+
a deterministic tool or the frontier verifies) and the incident-repair default (salvage
|
|
38
|
+
recorded state first, never frontier re-derivation) are canon now.
|
|
39
|
+
- **Lockstep tests** — `test/orchestration-canon.test.mjs` pins the four lane tokens, both
|
|
40
|
+
routing rules, the red-line list, and that §5 stays generic (the L0 examples name the family's
|
|
41
|
+
own surfaces — the gate runner over `docs/ai/gates.json`, the rotation checks — never a
|
|
42
|
+
project's publish mechanics); `test/procedures-canon.test.mjs` pins the same canon tokens the
|
|
43
|
+
composition root's advisor paraphrases, so the two cannot silently drift apart.
|
|
44
|
+
|
|
7
45
|
## 1.9.0 — Honest installer messaging: the verb states what was observed, the note states facts
|
|
8
46
|
|
|
9
47
|
A **feature** release (installer output contract only; the canon text is unchanged). `bin/install.mjs`
|
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.
|
|
6
|
+
version: '1.11.0'
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# agent-workflow-engine
|
package/capability.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sabaiway/agent-workflow-engine",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.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**,
|
package/references/planning.md
CHANGED
|
@@ -115,7 +115,7 @@ These disciplines keep a plan converging instead of churning, and keep a fold or
|
|
|
115
115
|
|
|
116
116
|
**Right altitude.** A plan pins *intent + architecture + invariants + acceptance criteria* — the named tests that must stay green and the new tests that must pass. It does NOT spell out fine code-mechanics in prose: those are resolved in code at Execute (against the real files + the per-Step review + the gates), where prose cannot diverge from reality. Most "blockers" that resurface across review rounds are code-level details that never belonged in a prose plan.
|
|
117
117
|
|
|
118
|
-
**No code-mechanics in the plan.** A Step still carries its exact paths + commands (§7, §8); the
|
|
118
|
+
**No code-mechanics in the plan.** A Step still carries its exact paths + commands (§7, §8) — checked syntax: the plan's own Verification runs them against an explicit expected outcome or gate, and merely running without asserting checks nothing; the only other syntax a plan may carry is a literal fixture/schema fragment a named test copies or validates. Un-run, logic-bearing syntax — control-flow, a regex, a glob, a grammar, an algorithm body, a mini-DSL, anything that transforms data or evaluates a condition — never lives in plan prose, however plausible or shell-verified it looks ("I ran it in my shell" is not a checker): a fold or draft that wants one is the trigger to write the red→green test-as-spec at Execute instead.
|
|
119
119
|
|
|
120
120
|
**Fold by code, not prose.** Before folding any code-touching finding into the plan, READ the cited `file:line`; the fold cites it. A fold grounded in prose alone drifts from the code and seeds the next bug.
|
|
121
121
|
|
package/references/procedures.md
CHANGED
|
@@ -57,8 +57,10 @@ Produce a self-contained, cold-readable plan, reviewed to the configured depth b
|
|
|
57
57
|
**0 blockers + 0 majors** from every backend the recipe names (the convergence bar,
|
|
58
58
|
[`planning.md`](planning.md) §9); folding ≠ convergence — re-review after folding. Fold a
|
|
59
59
|
code-touching finding **test-as-spec** (a named acceptance test, not a prose paragraph); a fold must
|
|
60
|
-
add **no code-mechanics** to the plan — a Step still carries its own exact paths + commands
|
|
61
|
-
|
|
60
|
+
add **no code-mechanics** to the plan — a Step still carries its own exact paths + commands
|
|
61
|
+
(checked syntax: its Verification asserts an expected outcome), but un-run, logic-bearing syntax
|
|
62
|
+
(control-flow, a regex, a glob, a mini-DSL) never enters plan prose — a fold needing one is the
|
|
63
|
+
trigger to name the test instead. Council runs every named backend
|
|
62
64
|
**every round** (recipe fidelity,
|
|
63
65
|
[`orchestration.md`](orchestration.md) §4) — never quietly drop a ready backend. Cap architecture
|
|
64
66
|
plan-review at **≤2 rounds**, stopping at the **crossover** where **backend divergence** (one backend
|