@sabaiway/agent-workflow-memory 2.0.0 → 2.2.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,30 @@ All notable changes to the memory substrate. Versions are this **package's** npm
4
4
  they are distinct from the **deployment-lineage** stamp written into a project's
5
5
  `docs/ai/.memory-version` (which tracks the shared `agent-workflow` lineage, head `2.0.0`).
6
6
 
7
+ ## 2.2.0 — agent_rules template re-render: the lens gains the prompt-economy clause (REC-UX-REWORK D7, AD-053)
8
+
9
+ A **feature** release (ships with kit 1.46.0 / engine 1.16.0; the deployment lineage head stays
10
+ `2.0.0` — no deployed-`docs/ai` structure change). The bundled
11
+ `references/templates/agent_rules.md` §2.6 lens block is re-rendered to the current engine canon:
12
+ its cost-lanes line now carries the **prompt-economy clause** (read-only fan-out on restricted-tool
13
+ vehicles only; one plain pipeline per call; capability-gated launcher guidance; judgment, code and
14
+ synthesis stay at the frontier lane; the stated honest limit). Template-only — seeding, upgrade and
15
+ every other substrate behavior are unchanged; the render is byte-parity-pinned against the engine
16
+ fragment by the kit's lens-mirror guard.
17
+
18
+ ## 2.1.0 — Autonomy template seed (AD-044 Plan 4)
19
+
20
+ A **feature** release (ships with kit 1.45.0 / engine 1.15.0; the deployment lineage head stays
21
+ `2.0.0` — the seed is ensure-if-missing, stamp-independent). `references/templates/autonomy.json`
22
+ — the sparse, defaults-equivalent autonomy-policy seed (`_README` only): resolving it equals
23
+ resolving no file at all, TEST-PINNED, so the seed can never drift from the computed defaults
24
+ (commit/push/publish `ask`; network/credentials/fs-outside-repo `deny`; absent activities floor at
25
+ `prompt`); it is STRUCTURALLY a seed (meta keys only) — an explicit policy declaring the same
26
+ values reads as a real declaration on every kit surface. Lifecycle follows gates.json: bootstrap
27
+ seeds it, upgrade ensures-if-missing (byte-preserving), hand-editable; the kit mirrors it via the
28
+ template manifest. Tarball sentinel 43→44. Deliberately NOT a delegated-bootstrap required asset
29
+ (the AD-044 Plan-3 no-gate decision holds).
30
+
7
31
  ## 2.0.0 — One-file-per-ADR store: the 3-tier decisions cascade retired (AD-051)
8
32
 
9
33
  A **MAJOR** release (BREAKING; co-released with the workflow kit 1.42.0). The deployment-lineage
package/README.md CHANGED
@@ -33,11 +33,12 @@ Open your agent inside a project and run the skill:
33
33
  - **`/agent-workflow-memory`** — bootstrap a new or empty project. Asks the three setup
34
34
  questions (visibility, conversational language, agent attribution), then writes `docs/ai/`,
35
35
  `AGENTS.md`, the enforcement scripts + pre-commit hook, and stamps
36
- `docs/ai/.memory-version`. The two pointer slots in `AGENTS.md` (the **methodology** and
37
- **orchestration** pointers, filled later by the family composition root) are left **empty**.
36
+ `docs/ai/.memory-version`. The three pointer slots in `AGENTS.md` (the **methodology**,
37
+ **orchestration** and **autonomy** pointers, filled later by the family composition root) are
38
+ left **empty**.
38
39
  - **`/agent-workflow-memory upgrade`** — migrate an existing deployment to the skill's current
39
40
  version. Reads `docs/ai/.memory-version`, runs only newer migrations in semver order, and
40
- **preserves** anything already in either pointer slot (extract-and-reinsert — it never
41
+ **preserves** anything already in every pointer slot (extract-and-reinsert — it never
41
42
  regenerates `AGENTS.md` wholesale).
42
43
 
43
44
  ## Stamps & lineage
package/SKILL.md CHANGED
@@ -3,7 +3,7 @@ name: agent-workflow-memory
3
3
  description: Deploy or upgrade a portable AI-agent memory substrate in any project — an entry-point `AGENTS.md` (+ `CLAUDE.md` alias) and a structured `docs/ai/` context store with cap/archive/index enforcement. Use when the user wants to bootstrap `docs/ai/`, set up the Memory Map and session protocols, install the docs-rotation pre-commit hook, or run `/agent-workflow-memory` / `/agent-workflow-memory upgrade`. Triggers on "set up the memory system", "deploy the AI memory here", "bootstrap docs/ai", "upgrade the memory substrate". This is the substrate only — the workflow methodology (plan→execute→review, queue, Cleanup) is owned elsewhere and injected into AGENTS.md by the family composition root.
4
4
  disable-model-invocation: true
5
5
  metadata:
6
- version: '2.0.0'
6
+ version: '2.2.0'
7
7
  ---
8
8
 
9
9
  # agent-workflow-memory
@@ -20,12 +20,13 @@ manually).
20
20
 
21
21
  This skill is the **memory layer** of the `agent-workflow` family. It **knows nobody else** in
22
22
  the family. In particular it does **not** own the **workflow methodology** (plan → execute →
23
- review vocabulary, lifecycle, `docs/plans/queue.md`, mandatory Cleanup, plan-then-execute) **or the
24
- orchestration recipes** — those are injected into **two delimited pointer slots** in `AGENTS.md`
25
- (`workflow:methodology` + `workflow:orchestration`) by the family **composition root**, never by this
23
+ review vocabulary, lifecycle, `docs/plans/queue.md`, mandatory Cleanup, plan-then-execute), **the
24
+ orchestration recipes, or the autonomy-policy contract** — those are injected into **three delimited
25
+ pointer slots** in `AGENTS.md` (`workflow:methodology` + `workflow:orchestration` +
26
+ `workflow:autonomy`) by the family **composition root**, never by this
26
27
  skill. (This substrate does not name or depend on any specific sibling — it only honours the slot
27
- contract.) This skill only ever ships **both** slots **empty** and **preserves** whatever is already
28
- in them on upgrade.
28
+ contract.) This skill only ever ships **all three** slots **empty** and **preserves** whatever is
29
+ already in them on upgrade.
29
30
 
30
31
  The substrate **artifacts** (this skill, the templates, the deployed `docs/ai/` files) stay in
31
32
  their **source language** — for cross-agent and cross-team portability. That is separate from the
@@ -36,8 +37,8 @@ contents).
36
37
 
37
38
  ## Ownership table
38
39
 
39
- What this substrate owns vs what it only points at. The methodology + orchestration pointers are the
40
- **two empty slots** the composition root fills — never author that text here.
40
+ What this substrate owns vs what it only points at. The methodology + orchestration + autonomy
41
+ pointers are the **three empty slots** the composition root fills — never author that text here.
41
42
 
42
43
  | Concern | Owner | In the deployed `AGENTS.md` |
43
44
  |---|---|---|
@@ -47,9 +48,11 @@ What this substrate owns vs what it only points at. The methodology + orchestrat
47
48
  | Deployment-lineage stamp | **memory** | `docs/ai/.memory-version` |
48
49
  | Plan→Phase→Step vocabulary, lifecycle, `queue.md`, mandatory Cleanup | **methodology** (not this skill) | the empty `workflow:methodology` slot — filled by the composition root |
49
50
  | Orchestration recipes (Solo / Reviewed / Council / Delegated) | **methodology engine** (not this skill) | the empty `workflow:orchestration` slot — filled by the composition root |
51
+ | Autonomy-policy read contract (`docs/ai/autonomy.json`) | **methodology engine** (not this skill) | the empty `workflow:autonomy` slot — filled by the composition root |
50
52
  | Per-project recipe **CONFIG** (which recipe each activity/slot uses) | **memory** seeds an *editable default* | `docs/ai/orchestration.json` (agent-writable via the composition root's `set-recipe` writer, or hand-edited; the recipe **canon** + the slot **vocabulary** live in the engine / composition root, never here) |
51
53
  | Per-project **gate declaration** (which verification commands must be green) | **memory** seeds an *editable default* | `docs/ai/gates.json` (hand-editable; an empty list as shipped — the project declares its own commands; the **runner** lives in the composition root, never here) |
52
54
  | Per-project **verification profile** (optional; the fold-completeness language-independence contract) | **memory** seeds an *editable default* | `docs/ai/verification-profile.json` (hand-editable; the seeded default reproduces the composition root's default V8 + node:test behaviour — delete it for exactly that; declares coverage source / single-test format / optional SARIF path; the **runner** lives in the composition root, never here) |
55
+ | Per-project **autonomy policy** (red-lines + per-activity autonomy level) | **memory** seeds an *editable default* | `docs/ai/autonomy.json` (hand-editable, or agent-writable via the composition root's `set-autonomy` writer; the seed is SPARSE — the onboarding note only, defaults-equivalent, so deploying it never changes behavior; the policy **canon** + the render live in the engine / composition root, never here) |
53
56
 
54
57
  ---
55
58
 
@@ -97,19 +100,22 @@ bootstrapping over a live system, but the user makes the final call.
97
100
  5. **Entry-point doc.** If `AGENTS.md` / `CLAUDE.md` already exist (recon), do **not**
98
101
  overwrite — show the user and ask whether to merge or replace. Otherwise create `AGENTS.md`
99
102
  from `${CLAUDE_SKILL_DIR}/references/templates/AGENTS.md` and symlink `CLAUDE.md -> AGENTS.md`
100
- (`ln -s AGENTS.md CLAUDE.md`). **Leave BOTH pointer slots (`workflow:methodology` +
101
- `workflow:orchestration`) exactly as shipped — empty.** Filling them is the composition root's job.
103
+ (`ln -s AGENTS.md CLAUDE.md`). **Leave ALL THREE pointer slots (`workflow:methodology` +
104
+ `workflow:orchestration` + `workflow:autonomy`) exactly as shipped — empty.** Filling them is the
105
+ composition root's job.
102
106
  6. **Deploy `docs/ai/`.** Create the files + `pages/` + the seed `adr/` store from
103
107
  `${CLAUDE_SKILL_DIR}/references/templates/` (every non-`AGENTS.md`, non-`adr-record.md` template —
104
108
  the latter is a skill-home authoring reference, never deployed). This deploys the HOT ADR window
105
109
  `docs/ai/decisions.md` **and** the seed navigator `docs/ai/adr/log.md` (its `adr/` subdir copies
106
- in wholesale), plus the three seeded, **user-editable** strict-JSON configs:
110
+ in wholesale), plus the four seeded, **user-editable** strict-JSON configs:
107
111
  `docs/ai/orchestration.json` — the per-project recipe defaults the composition root's `procedures`
108
112
  advisor reads — `docs/ai/gates.json` — the project's gate declaration, an empty list to fill with
109
- its own verification commands, consumed by the composition root's gate runner — and
113
+ its own verification commands, consumed by the composition root's gate runner —
110
114
  `docs/ai/verification-profile.json` — the OPTIONAL fold-completeness verification profile (the
111
115
  language-independence contract; the seeded default reproduces the composition root's default V8 +
112
- node:test behaviour, delete it for exactly that). Keep each `.md` file's frontmatter.
116
+ node:test behaviour, delete it for exactly that) and `docs/ai/autonomy.json` the per-project
117
+ autonomy policy, seeded SPARSE (the onboarding note only, defaults-equivalent — behavior changes
118
+ only when the user declares levels). Keep each `.md` file's frontmatter.
113
119
  7. **Fill templates** per the table below.
114
120
  8. **Install enforcement (Node projects).** Copy `${CLAUDE_SKILL_DIR}/references/scripts/*.mjs`
115
121
  (+ `*.test.mjs`) into the project's `scripts/`. **No Node runtime** → skip this + the hook;
@@ -136,7 +142,7 @@ bootstrapping over a live system, but the user makes the final call.
136
142
  > upgrade**, do the write steps (bootstrap 1–10 / upgrade 1–7: write `docs/ai/` + `AGENTS.md` +
137
143
  > `.memory-version`, **including seeding / stamp-independently ensuring `docs/ai/orchestration.json`**)
138
144
  > but **do NOT** run **any** commit gate and **do NOT** ask to commit — the
139
- > composition root owns the **single** commit gate, raised after it injects the two pointer slots.
145
+ > composition root owns the **single** commit gate, raised after it injects the three pointer slots.
140
146
  > The three setup answers and the target dir are passed in by the composition root; you perform no
141
147
  > commit and no slot injection. **Standalone** invocation keeps its own commit gate (bootstrap step
142
148
  > 11 / upgrade step 7).
@@ -178,8 +184,9 @@ Fill strategy:
178
184
  **untracked AND not ignored** → **AMBIGUOUS** → **ASK** the user before writing. This visibility check
179
185
  runs on **every** in-range upgrade, even at head — it is not gated by the stamp delta, but it is gated
180
186
  **behind** the never-downgrade STOP above. **Also stamp-independent (same gate, before the equal-head
181
- short-circuit): ensure the THREE seeded `.json` configs** — for `docs/ai/orchestration.json`,
182
- `docs/ai/gates.json`, AND `docs/ai/verification-profile.json`, **create the file from its
187
+ short-circuit): ensure the FOUR seeded `.json` configs** — for `docs/ai/orchestration.json`,
188
+ `docs/ai/gates.json`, `docs/ai/verification-profile.json`, AND `docs/ai/autonomy.json`,
189
+ **create the file from its
183
190
  `${CLAUDE_SKILL_DIR}/references/templates/` template if missing**, **preserve it byte-for-byte
184
191
  if it already exists** (a user may have edited it; never clobber it). The shipped
185
192
  `orchestration.json` template's `_README` already frames that config as agent-writable (set it
@@ -187,7 +194,9 @@ Fill strategy:
187
194
  declaration (what to verify — consumed by the composition root's gate runner);
188
195
  `verification-profile.json` is the OPTIONAL fold-completeness verification profile — the seeded
189
196
  default reproduces the composition root's default V8 + node:test behaviour, so a project deletes
190
- it to fall back to exactly that, or edits it for another language/runner. (Refreshing the
197
+ it to fall back to exactly that, or edits it for another language/runner; `autonomy.json` is the
198
+ per-project autonomy policy, seeded SPARSE (the onboarding note only, defaults-equivalent —
199
+ agent-writable via the composition root's `set-autonomy` writer, hand-editing supported). (Refreshing the
191
200
  orchestration `_README` note in place on an existing file is the **composition root's** job on
192
201
  its own reconcile — this substrate is standalone and only seeds-or-preserves; it owns no
193
202
  cross-package refresh helper. The gates declaration gets no note-refresh at all — authored
@@ -232,12 +241,13 @@ Fill strategy:
232
241
  (`migrations/1.1.0-communication-language.md`); pre-1.2.0 with no *Attribution* block, ask +
233
242
  insert defaulting to `off` (`migrations/1.2.0-agent-attribution.md`). (An answer already
234
243
  collected by the step-4 batched prompt is carried in — never re-asked here.)
235
- 6. **Preserve BOTH pointer slots.** If `AGENTS.md` has the `workflow:methodology` and/or
236
- `workflow:orchestration` markers, **never regenerate the file wholesale** — extract any bytes
237
- between each pair and reinsert them unchanged. If a pair is absent (a legacy `AGENTS.md`),
238
- gracefully **no-op** on that slot (adding a slot to already-deployed files is the composition
239
- root's reconcile, not this substrate's job). On any malformed marker state (single, reversed,
240
- nested, or duplicate pair), **no-op with an error** — never edit.
244
+ 6. **Preserve ALL pointer slots.** If `AGENTS.md` has the `workflow:methodology`,
245
+ `workflow:orchestration` and/or `workflow:autonomy` markers, **never regenerate the file
246
+ wholesale** — extract any bytes between each pair and reinsert them unchanged. If a pair is
247
+ absent (a legacy `AGENTS.md`), gracefully **no-op** on that slot (adding a slot to
248
+ already-deployed files is the composition root's reconcile, not this substrate's job). On any
249
+ malformed marker state (single, reversed, nested, or duplicate pair), **no-op with an error** —
250
+ never edit.
241
251
  7. **Re-stamp** `docs/ai/.memory-version` to the lineage head (atomic write — mechanics unchanged).
242
252
  Report changes **in plain human terms** (which parts of the deployment are now different);
243
253
  **omit the raw structure number**, and do not recite the two-axes note here (it belongs to
@@ -279,9 +289,9 @@ memory substrate has none, so it relies on the STOP + the explicit ask — never
279
289
  - **Stamp = lineage head, not package version.** `.memory-version` carries the **deployment-lineage
280
290
  head** (`2.0.0`, the shared `agent-workflow` lineage) — a **separate axis** from this package's npm
281
291
  version (the two may even coincide by accident). They move independently.
282
- - **Both pointer slots ship empty and stay the user's.** Never author methodology or orchestration
283
- text into them; on upgrade, preserve their content byte-for-byte. The composition root is their only
284
- writer.
292
+ - **All three pointer slots ship empty and stay the user's.** Never author methodology,
293
+ orchestration or autonomy text into them; on upgrade, preserve their content byte-for-byte. The
294
+ composition root is their only writer.
285
295
  - **The `Co-Authored-By` trailer is added by the harness, not by prose.** When attribution is
286
296
  `off` + Claude Code, also set `"includeCoAuthoredBy": false` in `.claude/settings.json`.
287
297
  - **Hidden mode is project-local, never machine-global.** Memory's hide writes to the repo's
@@ -307,10 +317,10 @@ The three setup choices each have a full contract in
307
317
  ## References
308
318
 
309
319
  - [`references/contracts.md`](references/contracts.md) — the three setup contracts in full.
310
- - [`references/templates/`](references/templates/) — stack-agnostic `AGENTS.md` (with the two empty
311
- pointer slots — methodology + orchestration), `agent_rules.md`, the seeded user-editable
312
- `orchestration.json` config, the `adr-record.md` ADR authoring reference + the seed `adr/log.md`
313
- navigator, and all `docs/ai/` files to deploy.
320
+ - [`references/templates/`](references/templates/) — stack-agnostic `AGENTS.md` (with the three empty
321
+ pointer slots — methodology + orchestration + autonomy), `agent_rules.md`, the seeded user-editable
322
+ `orchestration.json` + `autonomy.json` configs, the `adr-record.md` ADR authoring reference + the
323
+ seed `adr/log.md` navigator, and all `docs/ai/` files to deploy.
314
324
  - [`references/scripts/`](references/scripts/) — the Node enforcement scripts (caps + staleness +
315
325
  index-freshness gate, one-file-per-ADR archive, hook installer) and their unit tests.
316
326
  - [`scripts/stamp-takeover.mjs`](scripts/stamp-takeover.mjs) — the upgrade-time lineage state
package/capability.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "schema": 1,
4
4
  "name": "agent-workflow-memory",
5
5
  "kind": "memory-substrate",
6
- "version": "2.0.0",
6
+ "version": "2.2.0",
7
7
  "provides": ["context"],
8
8
  "roles": {},
9
9
  "detect": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sabaiway/agent-workflow-memory",
3
- "version": "2.0.0",
3
+ "version": "2.2.0",
4
4
  "description": "Portable, cross-agent memory substrate for AI coding agents — an AGENTS.md entry point + docs/ai context with cap/archive/index enforcement, deployable standalone or as part of the agent-workflow family. The memory layer of the agent-workflow family.",
5
5
  "keywords": [
6
6
  "ai-agents",
@@ -57,6 +57,8 @@ Start-of-session, during-work, and task-completion procedures live in [`docs/ai/
57
57
  <!-- workflow:methodology:end -->
58
58
  <!-- workflow:orchestration:start -->
59
59
  <!-- workflow:orchestration:end -->
60
+ <!-- workflow:autonomy:start -->
61
+ <!-- workflow:autonomy:end -->
60
62
 
61
63
  ---
62
64
 
@@ -68,7 +70,6 @@ Start-of-session, during-work, and task-completion procedures live in [`docs/ai/
68
70
  | No `any` / no unsafe casts | Linter / type-checker |
69
71
  | Functional style (no mutation in app code) | Linter |
70
72
  | Interactive elements semantic (button/link, not div+onClick) | Linter / a11y |
71
- | No hardcoded colors — design tokens only | Code review |
72
73
  | No business logic in components → hooks/services | Architecture review |
73
74
  | No changes without tests (TDD) | Required |
74
75
  | Check page docs before changes; update them after | Process |
@@ -85,7 +85,7 @@ Apply these when authoring a plan, reviewing, folding a finding, or editing code
85
85
  - **Per-round emission.** Every review round emits **{round N · finding-origin tally · per-backend verdict}** so the crossover is a computed, visible signal, not a remembered rule.
86
86
  - **Recipe fidelity.** Council runs every backend the recipe names, **every round**; silently dropping a ready backend for quota/convenience is a forbidden downgrade — an unavailable backend is a LOUD, stated degrade, never a quiet drop.
87
87
  - **ExitPlanMode ≠ execute.** A harness "approved — start coding" prompt authorizes the PLAN only; this methodology overrides it. Continue into execution only as a DELIBERATE transition after the plan + cold-start prompt exist, never an implicit slide.
88
- - **Cost lanes.** Route every step to the **cheapest adequate executor** — L0 deterministic script (the batched gate matrix over `gates.json`, the rotation `--check`s) · L1 cheap subagent (extraction/drafting only; the orchestrator verifies) · L2 subscription bridge · L3 frontier judgment. A step with **no named guardrail does not move down** a lane, and the **red lines never move down** (council review models · real code · ADR/handover/changelog-entry wording · persuasive copy · go/no-go · the approval asks). Own-error repair: salvage recorded state first (L0/L1, batched), never frontier re-derivation.
88
+ - **Cost lanes.** Route every step to the **cheapest adequate executor** — L0 deterministic script (the batched gate matrix over `gates.json`, the rotation `--check`s) · L1 cheap subagent (extraction/drafting only; the orchestrator verifies) · L2 subscription bridge · L3 frontier judgment. A step with **no named guardrail does not move down** a lane, and the **red lines never move down** (council review models · real code · ADR/handover/changelog-entry wording · persuasive copy · go/no-go · the approval asks). Own-error repair: salvage recorded state first (L0/L1, batched), never frontier re-derivation. **Prompt economy:** read-only fan-out (research/sweeps/extraction) runs ONLY on restricted-tool vehicles — a full-tool subagent for read-only work is a forbidden lane downgrade (invisible prompt-flood + blast radius), and a subagent is never told to shell out for facts obtainable read-only; the orchestrator's own shell form is ONE plain pipeline per call (a `;`/`&&` chain or env-prefixed invocation never matches a prefix allow rule); a fan-out launcher that gates per call yields to the agent-spawn lane — capability-gated: without restricted-tool vehicles (generic full-tool spawning does not count), read-only research stays in the orchestrator's own context, never a vehicle mandate a host cannot satisfy. Judgment, code, synthesis stay at the frontier lane (a task that genuinely runs/writes keeps a full-tool subagent); honest limit: no deterministic gate classifies a dispatch — canon at the point of use + placed vehicles + the retro loop.
89
89
 
90
90
  ---
91
91
 
@@ -0,0 +1,3 @@
1
+ {
2
+ "_README": "Per-project autonomy policy: red-lines (always) + per-activity autonomy level. Hand-editable; or use the set-autonomy writer (previews, then writes valid JSON). Strict JSON — no comments."
3
+ }