@sabaiway/agent-workflow-memory 3.1.0 → 4.0.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 +64 -0
- package/SKILL.md +1 -1
- package/capability.json +1 -1
- package/package.json +1 -1
- package/references/scripts/archive-changelog.mjs +300 -192
- package/references/scripts/archive-changelog.test.mjs +341 -0
- package/references/scripts/archive-conservation.test.mjs +466 -0
- package/references/scripts/archive-decisions.mjs +48 -20
- package/references/scripts/archive-decisions.test.mjs +120 -0
- package/references/scripts/archive-issues.mjs +344 -108
- package/references/scripts/archive-issues.test.mjs +762 -32
- package/references/scripts/archiver-structure.test.mjs +39 -0
- package/references/scripts/markdown-blocks.mjs +143 -0
- package/references/scripts/markdown-blocks.test.mjs +310 -0
- package/references/templates/changelog.md +3 -1
- package/references/templates/known_issues.md +13 -5
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,70 @@ 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 `3.0.0`).
|
|
6
6
|
|
|
7
|
+
## 4.0.0 — the archivers stop reporting green on files they did not understand (AD-084)
|
|
8
|
+
|
|
9
|
+
> ### ⚠ BREAKING — the rotation gates fail CLOSED now
|
|
10
|
+
>
|
|
11
|
+
> A `--check` that silently passed over unparseable content now **refuses with `file:line` and a
|
|
12
|
+
> remedy**. If your changelog carries a malformed date heading, an issue claims resolution without
|
|
13
|
+
> a recognisable date, or one section carries both an open `Status:` and a dated `Resolved:` line,
|
|
14
|
+
> the gate goes red — that red is the fix arriving, not a regression. Every refusal message names
|
|
15
|
+
> exactly what to change. Nothing is ever rewritten on a refused input.
|
|
16
|
+
|
|
17
|
+
For years the failure mode of these scripts was a **green lie**: a changelog gate that printed
|
|
18
|
+
`OK` over a file it parsed nothing from (one real deployment passed 36 consecutive sessions
|
|
19
|
+
unparsed), and an issues gate that reported `archivable: 0` while nine resolved sections aged in
|
|
20
|
+
place and the file crept to one line under its cap. This release ends the class, not the instance:
|
|
21
|
+
|
|
22
|
+
- **One shared block tokenizer** (`references/scripts/markdown-blocks.mjs`, NEW): frontmatter,
|
|
23
|
+
fenced regions, heading tokens outside fences; CRLF-safe; an unclosed fence is a loud error.
|
|
24
|
+
All three archivers read through it — a structural test refuses any future raw-line scan.
|
|
25
|
+
- **Fail-closed contract, all three archivers:** every unit-shaped heading either parses or
|
|
26
|
+
refuses naming `file:line`; every verdict names the counts it acted on; a zero-unit outcome is
|
|
27
|
+
a stated decision; every reading mode refuses identically and **writes nothing** on refusal.
|
|
28
|
+
- **ISO dates are first-class:** `## YYYY-MM-DD — title` entry headings parse everywhere the
|
|
29
|
+
legacy dotted form does; each entry re-emits in its **source form, verbatim**. Write ISO; the
|
|
30
|
+
dotted archives keep working untouched.
|
|
31
|
+
- **The issues marker contract:** a resolved issue is recognised by a line-leading
|
|
32
|
+
`- **Resolved:** YYYY-MM-DD …` or `- **Status:** … FIXED (YYYY-MM-DD) …` field — the shapes
|
|
33
|
+
real files use, list prefix optional, emphasis/emoji variants read, both separators, strict
|
|
34
|
+
calendar validation (the old code accepted `2026.02.30` — JS Date silently rolls it into
|
|
35
|
+
March). Strikethrough is cosmetic in BOTH directions: the dated marker decides alone, and an
|
|
36
|
+
explicit open `Status:` keeps a reopened-but-still-struck issue open. A resolution claim
|
|
37
|
+
**without** a recognisable date, a struck heading with an unrecognised status word, and
|
|
38
|
+
contradictory open+resolved state all refuse loudly instead of being skipped forever. The
|
|
39
|
+
exact pre-4.0.0 template example section stays inert, so a pristine legacy deployment never
|
|
40
|
+
reds its own gate.
|
|
41
|
+
- **The issues section model conserves your file:** category headings (`## 🟢 Resolved`), the
|
|
42
|
+
preamble and the canonical closing footer belong to the FILE and survive rotation; an issue
|
|
43
|
+
section contains only its own issue; rewrites are verbatim, guarded by an element-wise
|
|
44
|
+
partition tripwire and a line-accounting conservation test. (Previously the first real
|
|
45
|
+
rotation would have carried the category heading and footer into the archive and deleted them
|
|
46
|
+
from your file.) Stated residual: a **reworded or localized** closing note is not recognised
|
|
47
|
+
as the footer and travels with the last archived issue into the archive — conserved and
|
|
48
|
+
recoverable, never lost.
|
|
49
|
+
- **The templates stopped contradicting the parsers:** the changelog seed teaches ISO on both
|
|
50
|
+
`{{DATE}}` consumers; the known-issues template teaches ONE resolved shape inside a fenced
|
|
51
|
+
sample in the file preamble, so neither a fresh project nor a section inserted under a
|
|
52
|
+
category can ever red or lose the teaching text.
|
|
53
|
+
|
|
54
|
+
**Upgrading:** run your three `--check` gates once. If they refuse, the message names the line
|
|
55
|
+
and the remedy (typically: add the missing resolution date, repair a malformed date heading, or
|
|
56
|
+
delete the stale half of an open+resolved contradiction). The new `markdown-blocks.mjs` rides
|
|
57
|
+
every deploy path — old-layout projects get it companion-seeded by the kit's
|
|
58
|
+
`migrate-adr-store --apply`.
|
|
59
|
+
|
|
60
|
+
## 3.2.0 — the ADR rotation can be asked whether a seed is safe, without seeding (AD-083)
|
|
61
|
+
|
|
62
|
+
`archive-decisions.mjs --write-navigator` now honours `--dry-run`. It runs exactly the checks the
|
|
63
|
+
real write runs — the heading parse, the half-migrated guard, and the store-integrity check — and
|
|
64
|
+
then stops before touching anything, reporting how many decisions it validated.
|
|
65
|
+
|
|
66
|
+
Why it exists: a guarded caller (the kit's ADR-store migration) had no way to find out whether
|
|
67
|
+
seeding the store would succeed except by seeding it. A tree with a malformed decisions file could
|
|
68
|
+
therefore be told «go ahead», and only discover the problem after files had been written. The same
|
|
69
|
+
code now answers that question first. Nothing about the normal `--write-navigator` behaviour changes.
|
|
70
|
+
|
|
7
71
|
## 3.1.0 — plain-language communication bar in §2.5 of the agent_rules template (AD-061)
|
|
8
72
|
|
|
9
73
|
The `agent_rules.md` template's **§2.5 Communication** section gains a plain-language bar: every
|
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: '
|
|
6
|
+
version: '4.0.0'
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# agent-workflow-memory
|
package/capability.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sabaiway/agent-workflow-memory",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.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",
|