@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 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: '3.1.0'
6
+ version: '4.0.0'
7
7
  ---
8
8
 
9
9
  # agent-workflow-memory
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": "3.1.0",
6
+ "version": "4.0.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": "3.1.0",
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",