docguard-cli 0.41.0 → 0.41.2

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
@@ -7,6 +7,49 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.41.2] - 2026-09-15
11
+
12
+ Automated weekly release — batches everything merged since `v0.41.1`.
13
+
14
+ ### Changed
15
+
16
+ - Require exact packed CLI version (#402)
17
+
18
+
19
+ ### Fixed
20
+
21
+ - Require the extracted npm package's `--version` output to equal its exact
22
+ packed `package.json` version, preventing a plausible but stale semantic
23
+ version from passing release smoke tests.
24
+
25
+ ## [0.41.1] - 2026-09-15
26
+
27
+ Automated weekly release — batches everything merged since `v0.41.0`.
28
+
29
+ ### Changed
30
+
31
+ - Anchor lifecycle evidence to main (#400)
32
+ - Anchor R9 lifecycle evidence to main (#399)
33
+ - Fix living spec finalization and close R9 (#398)
34
+
35
+
36
+ ### Fixed
37
+
38
+ - Allow an evidence-complete living specification to finish without creating a
39
+ stale `tasks.md` solely for lifecycle bookkeeping, while continuing to reject
40
+ missing task ledgers for other persistence models and empty or incomplete
41
+ ledgers wherever they are declared. Released living contracts can record later
42
+ maintenance without downgrading their release state.
43
+ - Record the reviewed document-lifecycle maintenance outcome against its exact
44
+ source revision and qualified implementation/test evidence.
45
+ - Close roadmap milestone R9 after independently verifying every v0.41.0
46
+ publication target and record the adoption workflow's reviewed outcome without
47
+ creating a stale task ledger.
48
+ - Anchor the adoption workflow's final maintenance outcome to durable main commit
49
+ `2ff1baa` after the protected merge checks completed.
50
+ - Anchor the document-lifecycle maintenance outcome to durable main commit
51
+ `2a47de5`, completing the post-merge evidence chain.
52
+
10
53
  ## [0.41.0] - 2026-09-15
11
54
 
12
55
  Automated weekly release — batches everything merged since `v0.40.5`.
@@ -57,7 +57,10 @@ function archiveReadiness(spec, targetVerified = false) {
57
57
  }
58
58
 
59
59
  function completionTransition(spec) {
60
- if (spec?.reviewed.lifecycle.delivery === 'verified') return 'verified→verified';
60
+ if (spec?.reviewed.lifecycle.persistenceModel === 'living'
61
+ && ['verified', 'released'].includes(spec.reviewed.lifecycle.delivery)) {
62
+ return `${spec.reviewed.lifecycle.delivery}→${spec.reviewed.lifecycle.delivery}`;
63
+ }
61
64
  return spec?.reviewed.lifecycle.delivery === 'in_progress'
62
65
  ? 'in_progress→implemented→verified'
63
66
  : 'implemented→verified';
@@ -77,14 +80,22 @@ export function planSpecCompletion(projectDir, config, flags, options = {}) {
77
80
 
78
81
  let reconcile = null;
79
82
  if (spec) {
80
- const maintenance = spec.reviewed.lifecycle.delivery === 'verified'
83
+ const maintenance = ['verified', 'released'].includes(spec.reviewed.lifecycle.delivery)
81
84
  && spec.reviewed.lifecycle.persistenceModel === 'living';
82
85
  if (spec.reviewed.lifecycle.approval !== 'approved') blockers.push({ code: 'SPC002', message: 'Only an approved spec can become verified.' });
83
86
  if (!['in_progress', 'implemented'].includes(spec.reviewed.lifecycle.delivery) && !maintenance) {
84
87
  blockers.push({ code: 'SPC002', message: `Expected delivery=in_progress, implemented, or verified with persistenceModel=living; found ${spec.reviewed.lifecycle.delivery}/${spec.reviewed.lifecycle.persistenceModel || 'unset'}.` });
85
88
  }
86
89
  const tasks = spec.observed.taskCompletion;
87
- if (!tasks.total || tasks.checked !== tasks.total) blockers.push({ code: 'SPC003', message: `All tasks must be checked (${tasks.checked}/${tasks.total}).` });
90
+ const hasTaskLedger = spec.observed.artifacts.some(artifact => /(?:^|\/)tasks\.md$/i.test(artifact.path));
91
+ if (hasTaskLedger && (!tasks.total || tasks.checked !== tasks.total)) {
92
+ blockers.push({ code: 'SPC003', message: `All declared tasks must be checked (${tasks.checked}/${tasks.total}).` });
93
+ } else if (!hasTaskLedger && spec.reviewed.lifecycle.persistenceModel !== 'living') {
94
+ blockers.push({
95
+ code: 'SPC003',
96
+ message: 'Completion requires a task ledger unless the approved spec is a living verification contract with qualified evidence for every requirement.',
97
+ });
98
+ }
88
99
  if (spec.observed.implementationEvidence.length === 0) blockers.push({ code: 'SPC004', message: 'At least one qualified source implementation annotation is required.' });
89
100
  if (spec.observed.testEvidence.length === 0) blockers.push({ code: 'SPC004', message: 'At least one qualified test annotation is required.' });
90
101
  const covered = new Set([...spec.observed.implementationEvidence, ...spec.observed.testEvidence].map(item => item.requirementId));
@@ -162,7 +173,7 @@ export function completeSpec(projectDir, config, flags, options = {}) {
162
173
  successor: flags.successor || null,
163
174
  };
164
175
  const specContent = appendImplementationOutcome(readFileSync(specPath, 'utf8'), outcome);
165
- spec.reviewed.lifecycle.delivery = 'verified';
176
+ if (spec.reviewed.lifecycle.delivery !== 'released') spec.reviewed.lifecycle.delivery = 'verified';
166
177
  spec.reviewed.reconciliation.lastReviewedRevision = plan.revision;
167
178
  spec.reviewed.reconciliation.outcomes = [...spec.reviewed.reconciliation.outcomes, outcome].slice(-20);
168
179
  const artifact = spec.observed.artifacts.find(item => item.path === spec.path);
@@ -3,7 +3,7 @@ schema_version: "1.0"
3
3
  extension:
4
4
  id: "docguard"
5
5
  name: "DocGuard — CDD Enforcement"
6
- version: "0.41.0"
6
+ version: "0.41.2"
7
7
  description: "Documentation integrity for AI-assisted repositories: lifecycle registry, drift validation, traceability, safe archival, SARIF/JUnit, MCP, GitHub Actions, and Spec Kit hooks."
8
8
  author: "Ricardo Accioly"
9
9
  repository: "https://github.com/raccioly/docguard"
@@ -6,10 +6,10 @@ description: AI-driven documentation repair with structured research workflow, t
6
6
  compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
7
7
  metadata:
8
8
  author: docguard
9
- version: 0.41.0
9
+ version: 0.41.2
10
10
  source: extensions/spec-kit-docguard/skills/docguard-fix
11
11
  ---
12
- <!-- docguard:version: 0.41.0 -->
12
+ <!-- docguard:version: 0.41.2 -->
13
13
 
14
14
  # DocGuard Fix Skill
15
15
 
@@ -7,10 +7,10 @@ description: Run DocGuard guard validation against Canonical-Driven Development
7
7
  compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
8
8
  metadata:
9
9
  author: docguard
10
- version: 0.41.0
10
+ version: 0.41.2
11
11
  source: extensions/spec-kit-docguard/skills/docguard-guard
12
12
  ---
13
- <!-- docguard:version: 0.41.0 -->
13
+ <!-- docguard:version: 0.41.2 -->
14
14
 
15
15
  # DocGuard Guard Skill
16
16
 
@@ -6,10 +6,10 @@ description: Cross-document consistency analysis and quality assessment. Perform
6
6
  compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
7
7
  metadata:
8
8
  author: docguard
9
- version: 0.41.0
9
+ version: 0.41.2
10
10
  source: extensions/spec-kit-docguard/skills/docguard-review
11
11
  ---
12
- <!-- docguard:version: 0.41.0 -->
12
+ <!-- docguard:version: 0.41.2 -->
13
13
 
14
14
  # DocGuard Review Skill
15
15
 
@@ -6,10 +6,10 @@ description: CDD maturity assessment with category-aware improvement roadmap. Ru
6
6
  compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
7
7
  metadata:
8
8
  author: docguard
9
- version: 0.41.0
9
+ version: 0.41.2
10
10
  source: extensions/spec-kit-docguard/skills/docguard-score
11
11
  ---
12
- <!-- docguard:version: 0.41.0 -->
12
+ <!-- docguard:version: 0.41.2 -->
13
13
 
14
14
  # DocGuard Score Skill
15
15
 
@@ -4,10 +4,10 @@ description: Keep canonical documentation ALWAYS UP TO DATE. Refreshes code-trut
4
4
  compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
5
5
  metadata:
6
6
  author: docguard
7
- version: 0.41.0
7
+ version: 0.41.2
8
8
  source: extensions/spec-kit-docguard/skills/docguard-sync
9
9
  ---
10
- <!-- docguard:version: 0.41.0 -->
10
+ <!-- docguard:version: 0.41.2 -->
11
11
 
12
12
  # DocGuard Sync Skill
13
13
 
@@ -44,7 +44,7 @@ jobs:
44
44
  fetch-depth: 0
45
45
 
46
46
  - name: Run DocGuard fix --write + auto-commit + PR comment
47
- uses: raccioly/docguard@v0.41.0
47
+ uses: raccioly/docguard@v0.41.2
48
48
  with:
49
49
  command: fix
50
50
  auto-commit: 'true'
@@ -35,7 +35,7 @@ jobs:
35
35
  node-version: '20'
36
36
 
37
37
  - name: Install DocGuard
38
- run: npm install --global --ignore-scripts docguard-cli@0.41.0
38
+ run: npm install --global --ignore-scripts docguard-cli@0.41.2
39
39
 
40
40
  - name: Run DocGuard
41
41
  shell: bash
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "docguard-cli",
3
- "version": "0.41.0",
3
+ "version": "0.41.2",
4
4
  "description": "The enforcement tool for Canonical-Driven Development (CDD). Audit, generate, and guard your project documentation.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -31,7 +31,7 @@ jobs:
31
31
  node-version: '20'
32
32
 
33
33
  - name: Install DocGuard
34
- run: npm install --global --ignore-scripts docguard-cli@0.41.0
34
+ run: npm install --global --ignore-scripts docguard-cli@0.41.2
35
35
 
36
36
  - name: Run DocGuard
37
37
  shell: bash