docguard-cli 0.17.0__tar.gz → 0.17.1__tar.gz

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.
Files changed (308) hide show
  1. {docguard_cli-0.17.0/extensions/spec-kit-docguard → docguard_cli-0.17.1/.agent}/skills/docguard-fix/SKILL.md +2 -2
  2. {docguard_cli-0.17.0/extensions/spec-kit-docguard → docguard_cli-0.17.1/.agent}/skills/docguard-guard/SKILL.md +2 -2
  3. {docguard_cli-0.17.0/extensions/spec-kit-docguard → docguard_cli-0.17.1/.agent}/skills/docguard-review/SKILL.md +2 -2
  4. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/skills/docguard-score/SKILL.md +2 -2
  5. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/skills/docguard-sync/SKILL.md +1 -1
  6. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/CHANGELOG.md +32 -0
  7. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/PKG-INFO +1 -1
  8. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/diff.mjs +19 -11
  9. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/guard.mjs +46 -0
  10. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/environment.mjs +6 -4
  11. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/extension.yml +1 -1
  12. {docguard_cli-0.17.0/.agent → docguard_cli-0.17.1/extensions/spec-kit-docguard}/skills/docguard-fix/SKILL.md +2 -2
  13. {docguard_cli-0.17.0/.agent → docguard_cli-0.17.1/extensions/spec-kit-docguard}/skills/docguard-guard/SKILL.md +2 -2
  14. {docguard_cli-0.17.0/.agent → docguard_cli-0.17.1/extensions/spec-kit-docguard}/skills/docguard-review/SKILL.md +2 -2
  15. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/skills/docguard-score/SKILL.md +2 -2
  16. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/skills/docguard-sync/SKILL.md +1 -1
  17. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/package.json +1 -1
  18. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/pyproject.toml +1 -1
  19. docguard_cli-0.17.1/tests/b7-node-env-symmetry.test.mjs +97 -0
  20. docguard_cli-0.17.1/tests/whats-new.test.mjs +65 -0
  21. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/commands/speckit.analyze.md +0 -0
  22. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/commands/speckit.checklist.md +0 -0
  23. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/commands/speckit.clarify.md +0 -0
  24. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/commands/speckit.constitution.md +0 -0
  25. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/commands/speckit.implement.md +0 -0
  26. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/commands/speckit.plan.md +0 -0
  27. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/commands/speckit.specify.md +0 -0
  28. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/commands/speckit.tasks.md +0 -0
  29. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/commands/speckit.taskstoissues.md +0 -0
  30. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/skills/speckit-analyze/SKILL.md +0 -0
  31. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/skills/speckit-checklist/SKILL.md +0 -0
  32. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/skills/speckit-clarify/SKILL.md +0 -0
  33. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/skills/speckit-constitution/SKILL.md +0 -0
  34. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/skills/speckit-implement/SKILL.md +0 -0
  35. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/skills/speckit-plan/SKILL.md +0 -0
  36. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/skills/speckit-specify/SKILL.md +0 -0
  37. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/skills/speckit-tasks/SKILL.md +0 -0
  38. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.agent/skills/speckit-taskstoissues/SKILL.md +0 -0
  39. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.docguard.json +0 -0
  40. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.docguardignore +0 -0
  41. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  42. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  43. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.github/dependabot.yml +0 -0
  44. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.github/scripts/patch-catalog.py +0 -0
  45. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.github/workflows/ci.yml +0 -0
  46. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.github/workflows/release.yml +0 -0
  47. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.github/workflows/supply-chain.yml +0 -0
  48. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.github/workflows/sync-speckit-catalog.yml +0 -0
  49. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.gitignore +0 -0
  50. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.jules/bolt.md +0 -0
  51. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.jules/palette.md +0 -0
  52. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.jules/sentinel.md +0 -0
  53. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.npmignore +0 -0
  54. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.npmrc +0 -0
  55. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.specify/extensions/.cache/catalog-ebf165086500aab1-metadata.json +0 -0
  56. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.specify/extensions/.cache/catalog-ebf165086500aab1.json +0 -0
  57. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.specify/extensions/.cache/catalog-metadata.json +0 -0
  58. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.specify/extensions/.cache/catalog.json +0 -0
  59. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.specify/init-options.json +0 -0
  60. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.specify/memory/constitution.md +0 -0
  61. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.specify/scripts/bash/check-prerequisites.sh +0 -0
  62. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.specify/scripts/bash/common.sh +0 -0
  63. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.specify/scripts/bash/create-new-feature.sh +0 -0
  64. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.specify/scripts/bash/setup-plan.sh +0 -0
  65. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.specify/scripts/bash/update-agent-context.sh +0 -0
  66. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.specify/templates/agent-file-template.md +0 -0
  67. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.specify/templates/checklist-template.md +0 -0
  68. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.specify/templates/constitution-template.md +0 -0
  69. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.specify/templates/plan-template.md +0 -0
  70. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.specify/templates/spec-template.md +0 -0
  71. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/.specify/templates/tasks-template.md +0 -0
  72. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/AGENTS.md +0 -0
  73. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/CODE_OF_CONDUCT.md +0 -0
  74. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/COMPARISONS.md +0 -0
  75. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/CONTRIBUTING.md +0 -0
  76. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/DRIFT-LOG.md +0 -0
  77. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/LICENSE +0 -0
  78. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/PHILOSOPHY.md +0 -0
  79. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/README.md +0 -0
  80. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/ROADMAP.md +0 -0
  81. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/SECURITY.md +0 -0
  82. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/STANDARD.md +0 -0
  83. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/SUPPLY-CHAIN-AUDIT.md +0 -0
  84. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/SUPPORT.md +0 -0
  85. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/action.yml +0 -0
  86. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/agents.mjs +0 -0
  87. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/badge.mjs +0 -0
  88. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/ci.mjs +0 -0
  89. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/diagnose.mjs +0 -0
  90. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/explain.mjs +0 -0
  91. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/fix.mjs +0 -0
  92. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/generate.mjs +0 -0
  93. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/hooks.mjs +0 -0
  94. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/impact.mjs +0 -0
  95. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/init.mjs +0 -0
  96. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/llms.mjs +0 -0
  97. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/memory.mjs +0 -0
  98. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/publish.mjs +0 -0
  99. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/score.mjs +0 -0
  100. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/setup.mjs +0 -0
  101. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/sync.mjs +0 -0
  102. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/trace.mjs +0 -0
  103. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/upgrade.mjs +0 -0
  104. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/commands/watch.mjs +0 -0
  105. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/docguard.mjs +0 -0
  106. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/ensure-skills.mjs +0 -0
  107. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/scanners/api-doc.mjs +0 -0
  108. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/scanners/cdk.mjs +0 -0
  109. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/scanners/doc-tools.mjs +0 -0
  110. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/scanners/frontend.mjs +0 -0
  111. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/scanners/iac.mjs +0 -0
  112. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/scanners/integrations.mjs +0 -0
  113. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/scanners/memory-plan.mjs +0 -0
  114. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/scanners/project-type.mjs +0 -0
  115. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/scanners/routes.mjs +0 -0
  116. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/scanners/schemas.mjs +0 -0
  117. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/scanners/speckit.mjs +0 -0
  118. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/shared-git.mjs +0 -0
  119. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/shared-ignore.mjs +0 -0
  120. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/shared-source.mjs +0 -0
  121. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/shared.mjs +0 -0
  122. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/api-surface.mjs +0 -0
  123. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/architecture.mjs +0 -0
  124. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/changelog.mjs +0 -0
  125. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/cross-reference.mjs +0 -0
  126. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/doc-quality.mjs +0 -0
  127. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/docs-coverage.mjs +0 -0
  128. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/docs-diff.mjs +0 -0
  129. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/docs-sync.mjs +0 -0
  130. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/drift.mjs +0 -0
  131. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/freshness.mjs +0 -0
  132. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/generated-staleness.mjs +0 -0
  133. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/metadata-sync.mjs +0 -0
  134. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/metrics-consistency.mjs +0 -0
  135. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/schema-sync.mjs +0 -0
  136. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/security.mjs +0 -0
  137. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/structure.mjs +0 -0
  138. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/test-spec.mjs +0 -0
  139. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/todo-tracking.mjs +0 -0
  140. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/validators/traceability.mjs +0 -0
  141. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/writers/api-reference.mjs +0 -0
  142. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/writers/fix-memory.mjs +0 -0
  143. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/writers/mechanical.mjs +0 -0
  144. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/cli/writers/sections.mjs +0 -0
  145. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/commands/docguard.fix.md +0 -0
  146. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/commands/docguard.guard.md +0 -0
  147. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/commands/docguard.review.md +0 -0
  148. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/commands/docguard.score.md +0 -0
  149. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/configs/fastify.json +0 -0
  150. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/configs/generic.json +0 -0
  151. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/configs/nextjs.json +0 -0
  152. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/configs/python.json +0 -0
  153. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/docguard_cli/__init__.py +0 -0
  154. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/docguard_cli/wrapper.py +0 -0
  155. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/docs/ai-integration.md +0 -0
  156. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/docs/commands.md +0 -0
  157. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/docs/configuration.md +0 -0
  158. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/docs/doc-sections.md +0 -0
  159. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/docs/faq.md +0 -0
  160. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/docs/installation.md +0 -0
  161. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/docs/profiles.md +0 -0
  162. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/docs/quickstart.md +0 -0
  163. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/docs-canonical/ARCHITECTURE.md +0 -0
  164. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/docs-canonical/CI-RECIPES.md +0 -0
  165. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/docs-canonical/DATA-MODEL.md +0 -0
  166. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/docs-canonical/ENVIRONMENT.md +0 -0
  167. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/docs-canonical/SECURITY.md +0 -0
  168. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/docs-canonical/TEST-SPEC.md +0 -0
  169. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/examples/01-express-api/README.md +0 -0
  170. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/examples/01-express-api/package.json +0 -0
  171. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/examples/01-express-api/server.js +0 -0
  172. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/examples/02-python-flask/README.md +0 -0
  173. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/examples/02-python-flask/app.py +0 -0
  174. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/examples/02-python-flask/docs-canonical/ARCHITECTURE.md +0 -0
  175. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/examples/02-python-flask/requirements.txt +0 -0
  176. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/examples/03-spec-kit-project/CHANGELOG.md +0 -0
  177. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/examples/03-spec-kit-project/README.md +0 -0
  178. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/examples/03-spec-kit-project/docs-canonical/ARCHITECTURE.md +0 -0
  179. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/examples/03-spec-kit-project/docs-canonical/TEST-SPEC.md +0 -0
  180. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/examples/03-spec-kit-project/package.json +0 -0
  181. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/examples/03-spec-kit-project/src/index.js +0 -0
  182. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/examples/03-spec-kit-project/tests/basic.test.js +0 -0
  183. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/examples/README.md +0 -0
  184. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/LICENSE +0 -0
  185. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/README.md +0 -0
  186. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/commands/diagnose.md +0 -0
  187. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/commands/fix.md +0 -0
  188. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/commands/generate.md +0 -0
  189. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/commands/guard.md +0 -0
  190. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/commands/init.md +0 -0
  191. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/commands/score.md +0 -0
  192. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/commands/sync.md +0 -0
  193. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/commands/trace.md +0 -0
  194. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/scripts/bash/common.sh +0 -0
  195. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh +0 -0
  196. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/scripts/bash/docguard-init-doc.sh +0 -0
  197. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/scripts/bash/docguard-suggest-fix.sh +0 -0
  198. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/templates/extensions.yml +0 -0
  199. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/templates/github-workflows/docguard-autofix.yml +0 -0
  200. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/extensions/spec-kit-docguard/templates/github-workflows/docguard-guard.yml +0 -0
  201. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/pr_description.md +0 -0
  202. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/schemas/docguard-config.schema.json +0 -0
  203. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/specs/001-fix-ignore-validators/plan.md +0 -0
  204. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/specs/001-fix-ignore-validators/spec.md +0 -0
  205. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/specs/001-fix-ignore-validators/tasks.md +0 -0
  206. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/specs/002-fix-test-discovery/plan.md +0 -0
  207. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/specs/002-fix-test-discovery/spec.md +0 -0
  208. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/specs/002-fix-test-discovery/tasks.md +0 -0
  209. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/specs/003-v011-false-positives/plan.md +0 -0
  210. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/specs/003-v011-false-positives/spec.md +0 -0
  211. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/specs/003-v011-false-positives/tasks.md +0 -0
  212. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/ADR.md.template +0 -0
  213. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/AGENTS.md.template +0 -0
  214. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/ARCHITECTURE.md.template +0 -0
  215. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/CHANGELOG.md.template +0 -0
  216. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/CURRENT-STATE.md.template +0 -0
  217. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/DATA-MODEL.md.template +0 -0
  218. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/DEPLOYMENT.md.template +0 -0
  219. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/DRIFT-LOG.md.template +0 -0
  220. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/ENVIRONMENT.md.template +0 -0
  221. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/KNOWN-GOTCHAS.md.template +0 -0
  222. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/REQUIREMENTS.md.template +0 -0
  223. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/ROADMAP.md.template +0 -0
  224. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/RUNBOOKS.md.template +0 -0
  225. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/SECURITY.md.template +0 -0
  226. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/TEST-SPEC.md.template +0 -0
  227. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/TROUBLESHOOTING.md.template +0 -0
  228. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/VENDOR-BUGS.md.template +0 -0
  229. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/ci/github-actions.yml +0 -0
  230. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/commands/docguard.fix.md +0 -0
  231. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/commands/docguard.guard.md +0 -0
  232. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/commands/docguard.init.md +0 -0
  233. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/commands/docguard.review.md +0 -0
  234. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/templates/commands/docguard.update.md +0 -0
  235. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/test-draft.js +0 -0
  236. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/test-metrics.js +0 -0
  237. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/anchor-autofix.test.mjs +0 -0
  238. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/api-doc.test.mjs +0 -0
  239. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/api-surface.test.mjs +0 -0
  240. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/api-write.test.mjs +0 -0
  241. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/architecture.test.mjs +0 -0
  242. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/backup-failure.test.mjs +0 -0
  243. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/cdk-detection.test.mjs +0 -0
  244. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/changed-only-scoping.test.mjs +0 -0
  245. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/changed-only.test.mjs +0 -0
  246. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/changelog.test.mjs +0 -0
  247. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/commands.test.mjs +0 -0
  248. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/cross-reference.test.mjs +0 -0
  249. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/doc-quality.test.mjs +0 -0
  250. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/docguardignore.test.mjs +0 -0
  251. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/docs-coverage.test.mjs +0 -0
  252. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/docs-diff.test.mjs +0 -0
  253. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/docs-sync.test.mjs +0 -0
  254. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/drift.test.mjs +0 -0
  255. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/environment.test.mjs +0 -0
  256. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/fix-memory.test.mjs +0 -0
  257. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/fix-suppression.test.mjs +0 -0
  258. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/fixture-projects.test.mjs +0 -0
  259. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/freshness.test.mjs +0 -0
  260. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/frontend-deep.test.mjs +0 -0
  261. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/frontend.test.mjs +0 -0
  262. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/generated-staleness.test.mjs +0 -0
  263. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/guard-classify.test.mjs +0 -0
  264. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/guard-no-throw.test.mjs +0 -0
  265. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/hooks.test.mjs +0 -0
  266. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/i18n.test.mjs +0 -0
  267. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/impact.test.mjs +0 -0
  268. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/integrations.test.mjs +0 -0
  269. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/mechanical.test.mjs +0 -0
  270. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/memory-plan.test.mjs +0 -0
  271. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/metadata-sync.test.mjs +0 -0
  272. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/metrics-consistency.test.mjs +0 -0
  273. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/metrics-dedup.test.mjs +0 -0
  274. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/monorepo-scanning.test.mjs +0 -0
  275. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/multi-spec.test.mjs +0 -0
  276. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/patch-0.11.2.test.mjs +0 -0
  277. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/profile-flag.test.mjs +0 -0
  278. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/project-type.test.mjs +0 -0
  279. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/regenerate-section.test.mjs +0 -0
  280. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/routes-multilang.test.mjs +0 -0
  281. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/schema-sync.test.mjs +0 -0
  282. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/schemas-multilang.test.mjs +0 -0
  283. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/schemas.test.mjs +0 -0
  284. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/scoping-extended.test.mjs +0 -0
  285. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/section-na-markers.test.mjs +0 -0
  286. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/sections.test.mjs +0 -0
  287. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/security.test.mjs +0 -0
  288. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/severity.test.mjs +0 -0
  289. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/shared-git.test.mjs +0 -0
  290. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/shared-source.test.mjs +0 -0
  291. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/stress-test.test.mjs +0 -0
  292. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/structure.test.mjs +0 -0
  293. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/sweep-nudge.test.mjs +0 -0
  294. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/sync-since.test.mjs +0 -0
  295. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/sync.test.mjs +0 -0
  296. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/test-spec.test.mjs +0 -0
  297. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/todo-tracking.test.mjs +0 -0
  298. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/trace-multilang.test.mjs +0 -0
  299. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/trace-reverse.test.mjs +0 -0
  300. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/traceability.test.mjs +0 -0
  301. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/upgrade-pr.test.mjs +0 -0
  302. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/upgrade.test.mjs +0 -0
  303. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/validator-naming.test.mjs +0 -0
  304. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/tests/version-pin.test.mjs +0 -0
  305. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/vscode-extension/.vscodeignore +0 -0
  306. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/vscode-extension/README.md +0 -0
  307. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/vscode-extension/extension.js +0 -0
  308. {docguard_cli-0.17.0 → docguard_cli-0.17.1}/vscode-extension/package.json +0 -0
@@ -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.17.0
9
+ version: 0.17.1
10
10
  source: extensions/spec-kit-docguard/skills/docguard-fix
11
11
  ---
12
- <!-- docguard:version: 0.17.0 -->
12
+ <!-- docguard:version: 0.17.1 -->
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.17.0
10
+ version: 0.17.1
11
11
  source: extensions/spec-kit-docguard/skills/docguard-guard
12
12
  ---
13
- <!-- docguard:version: 0.17.0 -->
13
+ <!-- docguard:version: 0.17.1 -->
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.17.0
9
+ version: 0.17.1
10
10
  source: extensions/spec-kit-docguard/skills/docguard-review
11
11
  ---
12
- <!-- docguard:version: 0.17.0 -->
12
+ <!-- docguard:version: 0.17.1 -->
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.17.0
9
+ version: 0.17.1
10
10
  source: extensions/spec-kit-docguard/skills/docguard-score
11
11
  ---
12
- <!-- docguard:version: 0.17.0 -->
12
+ <!-- docguard:version: 0.17.1 -->
13
13
 
14
14
  # DocGuard Score Skill
15
15
 
@@ -4,7 +4,7 @@ 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.17.0
7
+ version: 0.17.1
8
8
  source: extensions/spec-kit-docguard/skills/docguard-sync
9
9
  ---
10
10
 
@@ -7,6 +7,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.17.1] - 2026-05-26
11
+
12
+ Patch responding to a client-project feedback round: 1 real bug (B-7) and
13
+ a discoverability improvement that helps users on older versions find the
14
+ features they're asking for. **537 tests** (was 530, +7). 22 validators.
15
+
16
+ ### Fixed
17
+
18
+ - **B-7: `diff` and `guard.Environment` disagreed on env-var coverage.** My v0.16-P4 `SYSTEM_ENV_VARS` denylist was over-broad: `NODE_ENV`, `CI`, `GITHUB_TOKEN`, `GITHUB_REF`, `GITHUB_SHA` are legitimately app env vars (apps read `process.env.NODE_ENV` for production/dev branching, `process.env.CI` to detect CI runs, etc.). The denylist stripped them from the doc side of `diff` only, so a project that documented `NODE_ENV` in BOTH `ENVIRONMENT.md` AND `.env.example` would correctly pass the `Environment` validator but `diff` would falsely flag it as "in code but not documented". Trimmed the denylist to truly-system-only vars (PATH, HOME, SHELL, TERM, etc. — the names no sane app would treat as runtime config). Reported by the client project running v0.16.0; their env-var accuracy went 79/82 → 80/82 with the bogus `NODE_ENV` flag gone. New `tests/b7-node-env-symmetry.test.mjs` locks in the symmetry.
19
+
20
+ ### Added
21
+
22
+ - **What's-new highlights on the guard footer.** When `.docguard.json` carries a `docguardVersion` pin and the running CLI is newer, the guard footer now prints a short "New since v<pin>" list of headline features from intermediate releases. Top 5 inline, "N more in CHANGELOG.md" pointer when there's more. Closes the recurring pattern of users asking for features that shipped one or two releases ago — `sync --since`, `docguard impact`, `docguard explain`, `memory --diff`, `--quiet`, and Cross-Reference anchor hints all appear in the table.
23
+
24
+ ### Note to readers asking about S-1, S-11, S-12
25
+
26
+ These three features are **already shipped** as of the listed releases. The v0.17.1 what's-new nudge surfaces them inline for any project still pinned to v0.12 or earlier. Quick recap:
27
+
28
+ - **S-1: `docguard sync --since <ref>`** — shipped in **v0.13.0** as L-1. Refreshes only canonical doc sections touched by code changes in the diff range. Run `docguard sync --write --since main` on a feature branch to skip unrelated doc churn.
29
+ - **S-11: `docguard impact --since <ref>`** — shipped in **v0.13.1**. Post-commit "changed files → affected canonical doc sections" map. Run `docguard impact --since HEAD~1` after a commit; JSON mode for CI bots.
30
+ - **S-12: Anchor "did you mean...?" hints** — shipped in **v0.13.1** + extended in **v0.14.1** so high-confidence matches (edit distance ≤ 2, single close candidate) are now `[auto-fixable]` via `docguard fix --write`.
31
+
32
+ Upgrade with `docguard upgrade --apply` or `npm i -g docguard-cli@latest` to pick them up.
33
+
34
+ ### Internal
35
+
36
+ - **2 new test files**: `tests/b7-node-env-symmetry.test.mjs` (4 — diff/validator symmetry), `tests/whats-new.test.mjs` (3 — highlights surface). **Total: 530 → 537 tests (+7 new).**
37
+ - **`SYSTEM_ENV_VARS`** trimmed in both `cli/commands/diff.mjs` and `cli/validators/environment.mjs` (single source of truth would be better; deferred).
38
+ - **New highlight table** `_RELEASE_HIGHLIGHTS` in `cli/commands/guard.mjs` — add an entry per release going forward.
39
+ - **Dry-run on the client project**: env accuracy 80/82, the 2 remaining mismatches are genuine doc-only drift (not bugs in our tool). Full guard still 672/672 PASS.
40
+ - No new NPM deps.
41
+
10
42
  ## [0.17.0] - 2026-05-26
11
43
 
12
44
  Feature release picking up the 4 deferred items from v0.16 — **reproducibility
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: docguard-cli
3
- Version: 0.17.0
3
+ Version: 0.17.1
4
4
  Summary: The enforcement tool for Canonical-Driven Development (CDD). Audit, generate, and guard your project documentation. Zero dependencies.
5
5
  Project-URL: Homepage, https://github.com/raccioly/docguard
6
6
  Project-URL: Documentation, https://github.com/raccioly/docguard#readme
@@ -200,23 +200,31 @@ export function diffEntities(dir, config = {}) {
200
200
  };
201
201
  }
202
202
 
203
- // v0.16-P4: common system environment variables that get backticked in
204
- // prose ("the venv `PATH`", "your `HOME` directory") but are NEVER user-set
205
- // application env vars. Excluding them from the docVars set kills the
206
- // false-positive class reported by the Python user where `PATH` was flagged
207
- // as "documented-but-not-implemented".
203
+ // v0.16-P4 (revised in v0.17.1): conservative denylist of system env vars
204
+ // that appear in prose ("the venv `PATH`") but are never user-set app env
205
+ // vars. v0.17.1-B7: trimmed to TRULY-system-only after wu feedback
206
+ // NODE_ENV / CI / GITHUB_* are legitimately app env vars when read via
207
+ // process.env. Including them caused diff to falsely flag `NODE_ENV` as
208
+ // "in code but not docs" even when ENVIRONMENT.md documented it.
208
209
  //
209
- // Conservative list only the names that are unambiguously OS/shell vars.
210
- // Application names like `DATABASE_URL`, `API_KEY` etc. still count.
210
+ // Rule of thumb for inclusion: would a sane Node/Python/Go app ever
211
+ // `process.env.X` this name and treat it as app config? If yes → NOT a
212
+ // system var. PATH/HOME/SHELL/TERM never satisfy that bar.
211
213
  const SYSTEM_ENV_VARS = new Set([
212
- 'PATH', 'HOME', 'USER', 'USERNAME', 'SHELL', 'PWD', 'OLDPWD', 'TMPDIR', 'TEMP', 'TMP',
214
+ // POSIX shell / OS
215
+ 'PATH', 'HOME', 'USER', 'USERNAME', 'SHELL', 'PWD', 'OLDPWD',
216
+ 'TMPDIR', 'TEMP', 'TMP',
217
+ // Locale
213
218
  'LANG', 'LC_ALL', 'LC_CTYPE', 'LC_MESSAGES', 'TZ',
219
+ // Terminal / interactive
214
220
  'EDITOR', 'VISUAL', 'PAGER', 'TERM', 'COLORTERM',
221
+ // SSH / Display
215
222
  'DISPLAY', 'SSH_AUTH_SOCK', 'SSH_CONNECTION', 'SSH_TTY',
223
+ // XDG base directory spec
216
224
  'XDG_CONFIG_HOME', 'XDG_DATA_HOME', 'XDG_CACHE_HOME', 'XDG_RUNTIME_DIR',
217
- // CI/build platform vars (set by the platform, not by the app)
218
- 'CI', 'GITHUB_TOKEN', 'GITHUB_ACTIONS', 'GITHUB_REF', 'GITHUB_SHA',
219
- 'NODE_ENV', // could be app-set but more often platform-set; conservative skip
225
+ // NOTE: NODE_ENV / CI / GITHUB_* used to be here. Removed in v0.17.1
226
+ // because apps DO read them as app config (e.g. NODE_ENV=production
227
+ // gates branching in nearly every Node.js app).
220
228
  ]);
221
229
 
222
230
  export function diffEnvVars(dir, config = {}) {
@@ -66,6 +66,40 @@ function _checkVersionPin(config) {
66
66
  return null;
67
67
  }
68
68
 
69
+ /**
70
+ * v0.17.1: small in-code highlight reel surfaced when a project's pinned
71
+ * version is behind the running CLI. The biggest recurring user pattern is
72
+ * "I asked for feature X" → "X shipped two releases ago". This eliminates
73
+ * the need to grep the CHANGELOG. Keep entries short and command-oriented.
74
+ *
75
+ * Add to this table on every release. Format: [introducedIn, oneLineFeature].
76
+ */
77
+ const _RELEASE_HIGHLIGHTS = [
78
+ ['0.13.0', '`docguard sync --since <ref>` — surgical refresh of code-truth doc sections'],
79
+ ['0.13.1', '`docguard impact --since <ref>` — changed files → affected canonical docs map'],
80
+ ['0.13.1', '`Cross-Reference` validator + "did you mean #X?" hints for broken anchors'],
81
+ ['0.14.1', '`docguard fix --write` auto-fixes high-confidence anchor matches'],
82
+ ['0.15.0', '`docguard guard --timings` — per-validator wall-time profile'],
83
+ ['0.15.0', '`.docguard.json` JSON Schema for VS Code autocomplete'],
84
+ ['0.16.0', '`docguard explain "<warning>"` — paste any warning, get the validator help'],
85
+ ['0.16.0', '`docguard guard --quiet` — suppress banner in hooks/CI'],
86
+ ['0.16.0', '`docguard init --no-spec-kit` — opt out of Spec Kit scaffolding'],
87
+ ['0.16.0', 'Language-aware test patterns (Python `test_*.py`, Rust `tests/*.rs`, Go `*_test.go`, ...)'],
88
+ ['0.17.0', '`docguard memory --diff` — drill into accuracy mismatches (which claim ≠ code)'],
89
+ ['0.17.0', '`docguard guard --pin` — record running CLI version into .docguard.json'],
90
+ ];
91
+
92
+ function _whatsNewSince(pinnedVersion) {
93
+ if (!pinnedVersion) return [];
94
+ const out = [];
95
+ for (const [introducedIn, feature] of _RELEASE_HIGHLIGHTS) {
96
+ if (_semverCompare(introducedIn, pinnedVersion) > 0) {
97
+ out.push(`v${introducedIn}: ${feature}`);
98
+ }
99
+ }
100
+ return out;
101
+ }
102
+
69
103
  /**
70
104
  * v0.17-P1: update the docguardVersion field in .docguard.json after a
71
105
  * successful guard run. Triggered by `docguard guard --pin`. Idempotent.
@@ -445,6 +479,18 @@ export function runGuard(projectDir, config, flags) {
445
479
  const pinHint = _checkVersionPin(config);
446
480
  if (pinHint) {
447
481
  console.log(`\n ${c.yellow}📌 ${pinHint}${c.reset}`);
482
+ // v0.17.1: surface features added since the pinned version so users
483
+ // who pinned at v0.12 and just upgraded actually KNOW about sync,
484
+ // impact, explain, memory --diff, etc. The biggest user complaint
485
+ // pattern is "I asked for X but X already shipped two releases ago."
486
+ const whatsNew = _whatsNewSince(config.docguardVersion);
487
+ if (whatsNew.length > 0) {
488
+ console.log(` ${c.dim}New since v${config.docguardVersion}:${c.reset}`);
489
+ for (const item of whatsNew.slice(0, 5)) {
490
+ console.log(` ${c.dim}• ${item}${c.reset}`);
491
+ }
492
+ if (whatsNew.length > 5) console.log(` ${c.dim}... ${whatsNew.length - 5} more in CHANGELOG.md${c.reset}`);
493
+ }
448
494
  }
449
495
 
450
496
  // K-6 / S-2: sweep-needed nudge. Aggregates freshness warnings — if 2+
@@ -45,16 +45,18 @@ export function validateEnvironment(projectDir, config) {
45
45
  // tokens like `VITE_` (the convention prefix) from being treated as a real
46
46
  // variable name.
47
47
  const varRe = /`([A-Z][A-Z0-9_]*[A-Z0-9])`/g;
48
- // v0.16-P4: skip backticked SYSTEM env vars (PATH, HOME, USER, etc.).
49
- // They appear in ENVIRONMENT.md prose ("the venv `PATH`") but aren't
50
- // user-set application vars. Mirrors the same skip in diff.mjs.
48
+ // v0.16-P4 (revised in v0.17.1-B7): skip backticked SYSTEM env vars
49
+ // (PATH, HOME, USER, etc.) that appear in ENVIRONMENT.md prose. Trimmed
50
+ // to TRULY-system-only after wu feedback NODE_ENV / CI / GITHUB_* were
51
+ // causing asymmetric flagging between diff and this validator. Apps
52
+ // legitimately treat NODE_ENV as app config; keep the list to vars that
53
+ // no sane application would read as runtime config.
51
54
  const SYSTEM = new Set([
52
55
  'PATH','HOME','USER','USERNAME','SHELL','PWD','OLDPWD','TMPDIR','TEMP','TMP',
53
56
  'LANG','LC_ALL','LC_CTYPE','LC_MESSAGES','TZ',
54
57
  'EDITOR','VISUAL','PAGER','TERM','COLORTERM',
55
58
  'DISPLAY','SSH_AUTH_SOCK','SSH_CONNECTION','SSH_TTY',
56
59
  'XDG_CONFIG_HOME','XDG_DATA_HOME','XDG_CACHE_HOME','XDG_RUNTIME_DIR',
57
- 'CI','GITHUB_TOKEN','GITHUB_ACTIONS','GITHUB_REF','GITHUB_SHA','NODE_ENV',
58
60
  ]);
59
61
  let m;
60
62
  while ((m = varRe.exec(content)) !== null) {
@@ -3,7 +3,7 @@ schema_version: "1.0"
3
3
  extension:
4
4
  id: "docguard"
5
5
  name: "DocGuard — CDD Enforcement"
6
- version: "0.17.0"
6
+ version: "0.17.1"
7
7
  description: "Canonical-Driven Development enforcement as a true spec-kit extension. LLM-first design with 19 automated validators, 4 AI behavior skills, spec-kit skill chaining, and workflow hooks. Zero NPM runtime dependencies."
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.17.0
9
+ version: 0.17.1
10
10
  source: extensions/spec-kit-docguard/skills/docguard-fix
11
11
  ---
12
- <!-- docguard:version: 0.17.0 -->
12
+ <!-- docguard:version: 0.17.1 -->
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.17.0
10
+ version: 0.17.1
11
11
  source: extensions/spec-kit-docguard/skills/docguard-guard
12
12
  ---
13
- <!-- docguard:version: 0.17.0 -->
13
+ <!-- docguard:version: 0.17.1 -->
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.17.0
9
+ version: 0.17.1
10
10
  source: extensions/spec-kit-docguard/skills/docguard-review
11
11
  ---
12
- <!-- docguard:version: 0.17.0 -->
12
+ <!-- docguard:version: 0.17.1 -->
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.17.0
9
+ version: 0.17.1
10
10
  source: extensions/spec-kit-docguard/skills/docguard-score
11
11
  ---
12
- <!-- docguard:version: 0.17.0 -->
12
+ <!-- docguard:version: 0.17.1 -->
13
13
 
14
14
  # DocGuard Score Skill
15
15
 
@@ -4,7 +4,7 @@ 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.17.0
7
+ version: 0.17.1
8
8
  source: extensions/spec-kit-docguard/skills/docguard-sync
9
9
  ---
10
10
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "docguard-cli",
3
- "version": "0.17.0",
3
+ "version": "0.17.1",
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": {
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "docguard-cli"
7
- version = "0.17.0"
7
+ version = "0.17.1"
8
8
  description = "The enforcement tool for Canonical-Driven Development (CDD). Audit, generate, and guard your project documentation. Zero dependencies."
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -0,0 +1,97 @@
1
+ /**
2
+ * v0.17.1-B7 — regression: NODE_ENV documented in BOTH ENVIRONMENT.md AND
3
+ * .env.example should NOT appear in `docguard diff`'s "in code but not
4
+ * documented" list. The wu repo reported asymmetry between guard (PASS)
5
+ * and diff (warning) because my v0.16-P4 SYSTEM_ENV_VARS denylist
6
+ * incorrectly included NODE_ENV / CI / GITHUB_*.
7
+ *
8
+ * @req SC-B7-001 — NODE_ENV present in both doc + .env.example is counted as documented by diff
9
+ * @req SC-B7-002 — Environment validator agrees with diff on NODE_ENV (no asymmetry)
10
+ * @req SC-B7-003 — PATH (truly system) still filtered out from doc-side prose mentions
11
+ */
12
+ import { describe, it, afterEach } from 'node:test';
13
+ import { strict as assert } from 'node:assert';
14
+ import { mkdtempSync, mkdirSync, rmSync, writeFileSync } from 'node:fs';
15
+ import { join } from 'node:path';
16
+ import { tmpdir } from 'node:os';
17
+
18
+ import { diffEnvVars } from '../cli/commands/diff.mjs';
19
+ import { validateEnvironment } from '../cli/validators/environment.mjs';
20
+
21
+ function makeRepo(files) {
22
+ const dir = mkdtempSync(join(tmpdir(), 'docguard-b7-'));
23
+ for (const [rel, content] of Object.entries(files)) {
24
+ const full = join(dir, rel);
25
+ mkdirSync(join(full, '..'), { recursive: true });
26
+ writeFileSync(full, content);
27
+ }
28
+ return dir;
29
+ }
30
+
31
+ describe('B-7: diff/validator symmetry on NODE_ENV', () => {
32
+ let dir;
33
+ afterEach(() => { if (dir) rmSync(dir, { recursive: true, force: true }); });
34
+
35
+ it('NODE_ENV in both ENVIRONMENT.md table AND .env.example is NOT flagged by diff', () => {
36
+ dir = makeRepo({
37
+ 'docs-canonical/ENVIRONMENT.md':
38
+ '# Environment\n\n' +
39
+ '## Environment Variables\n\n' +
40
+ '| Variable | Description |\n' +
41
+ '|----------|-------------|\n' +
42
+ '| `NODE_ENV` | App mode: development/production |\n',
43
+ '.env.example': 'NODE_ENV=development\n',
44
+ 'src/index.ts': 'const m = process.env.NODE_ENV;',
45
+ 'package.json': JSON.stringify({ name: 't', version: '0.0.0' }),
46
+ });
47
+ const d = diffEnvVars(dir, {});
48
+ assert.ok(d, 'diffEnvVars should produce a result');
49
+ assert.ok(!d.onlyInCode.includes('NODE_ENV'),
50
+ `NODE_ENV must not appear in 'in code but not documented' list; got onlyInCode: ${d.onlyInCode.join(', ')}`);
51
+ });
52
+
53
+ it('validator + diff agree: both count NODE_ENV as documented', () => {
54
+ dir = makeRepo({
55
+ 'docs-canonical/ENVIRONMENT.md':
56
+ '# Env\n## Prerequisites\n## Environment Variables\n\n| Variable | Description |\n|---|---|\n| `NODE_ENV` | mode |\n',
57
+ '.env.example': 'NODE_ENV=development\n',
58
+ 'src/main.ts': 'export const x = process.env.NODE_ENV;',
59
+ 'package.json': JSON.stringify({ name: 't', version: '0.0.0' }),
60
+ });
61
+ const v = validateEnvironment(dir, { projectTypeConfig: { needsEnvVars: true } });
62
+ // Validator should NOT emit a warning about NODE_ENV being undocumented
63
+ assert.ok(
64
+ !v.warnings.some(w => /NODE_ENV/.test(w) && /undocumented/i.test(w)),
65
+ `validator should not flag NODE_ENV as undocumented; warnings: ${v.warnings.join(' | ')}`
66
+ );
67
+ });
68
+
69
+ it('PATH (truly system) is still filtered from doc-prose mentions', () => {
70
+ dir = makeRepo({
71
+ // PATH is mentioned in prose with backticks but is NOT a real app env var
72
+ 'docs-canonical/ENVIRONMENT.md':
73
+ '# Env\n\nThe `cli` binary is on the venv `PATH`.\n',
74
+ 'src/main.ts': 'export const x = 1;', // no process.env.PATH reading
75
+ 'package.json': JSON.stringify({ name: 't', version: '0.0.0' }),
76
+ });
77
+ const d = diffEnvVars(dir, {});
78
+ if (d) {
79
+ assert.ok(!d.onlyInDocs.includes('PATH'),
80
+ 'PATH (system var in prose) should not appear in onlyInDocs');
81
+ }
82
+ });
83
+
84
+ it('CI is no longer filtered (apps DO check process.env.CI)', () => {
85
+ dir = makeRepo({
86
+ 'docs-canonical/ENVIRONMENT.md':
87
+ '# Env\n\n## Environment Variables\n\n| Variable | Description |\n|---|---|\n| `CI` | true when running in CI |\n',
88
+ '.env.example': 'CI=false\n',
89
+ 'src/main.ts': 'export const inCi = !!process.env.CI;',
90
+ 'package.json': JSON.stringify({ name: 't', version: '0.0.0' }),
91
+ });
92
+ const d = diffEnvVars(dir, {});
93
+ assert.ok(d, 'should produce a result');
94
+ assert.ok(!d.onlyInCode.includes('CI'),
95
+ 'CI documented + in code should not be flagged');
96
+ });
97
+ });
@@ -0,0 +1,65 @@
1
+ /**
2
+ * v0.17.1 — "What's new since v<pin>" surfaces in the guard footer when the
3
+ * running CLI is newer than the pinned version. Closes the recurring user
4
+ * pattern of asking for features that shipped one or two releases ago.
5
+ *
6
+ * @req SC-WN-001 — pin at older version surfaces the highlight reel
7
+ * @req SC-WN-002 — pin at current version shows no highlights
8
+ * @req SC-WN-003 — highlights list is bounded (max 5 inline, "N more" pointer otherwise)
9
+ */
10
+ import { describe, it, afterEach } from 'node:test';
11
+ import { strict as assert } from 'node:assert';
12
+ import { spawnSync } from 'node:child_process';
13
+ import { mkdtempSync, mkdirSync, rmSync, writeFileSync, readFileSync } from 'node:fs';
14
+ import { join } from 'node:path';
15
+ import { tmpdir } from 'node:os';
16
+
17
+ const CLI = join(process.cwd(), 'cli/docguard.mjs');
18
+
19
+ function makeRepo(extra = {}) {
20
+ const dir = mkdtempSync(join(tmpdir(), 'docguard-whatsnew-'));
21
+ mkdirSync(join(dir, 'docs-canonical'));
22
+ writeFileSync(join(dir, 'package.json'), JSON.stringify({ name: 't', version: '0.0.1' }));
23
+ writeFileSync(join(dir, 'docs-canonical/ARCHITECTURE.md'), '# A\nstub\n');
24
+ writeFileSync(join(dir, 'CHANGELOG.md'), '# Changelog\n## [Unreleased]\n');
25
+ writeFileSync(join(dir, 'AGENTS.md'), '# Agents\n');
26
+ writeFileSync(join(dir, 'DRIFT-LOG.md'), '# Drift\n');
27
+ writeFileSync(join(dir, '.docguard.json'), JSON.stringify({
28
+ projectName: 't', profile: 'starter', version: '0.5', ...extra,
29
+ }, null, 2));
30
+ const env = { ...process.env };
31
+ spawnSync('git', ['init', '-q'], { cwd: dir, env });
32
+ spawnSync('git', ['-c', 'user.email=t@t', '-c', 'user.name=t', 'add', '-A'], { cwd: dir, env });
33
+ spawnSync('git', ['-c', 'user.email=t@t', '-c', 'user.name=t', 'commit', '-q', '-m', 'init'], { cwd: dir, env });
34
+ return dir;
35
+ }
36
+
37
+ describe("guard footer — what's-new highlights", () => {
38
+ let dir;
39
+ afterEach(() => { if (dir) rmSync(dir, { recursive: true, force: true }); });
40
+
41
+ it('pinning at v0.12.0 surfaces the headline features shipped since', () => {
42
+ dir = makeRepo({ docguardVersion: '0.12.0' });
43
+ const r = spawnSync('node', [CLI, 'guard', '--quiet'], { cwd: dir, encoding: 'utf-8' });
44
+ assert.match(r.stdout, /New since v0\.12\.0/);
45
+ // Should mention at least one of the headline features that shipped after v0.12
46
+ assert.match(r.stdout, /sync --since|docguard impact|docguard explain|memory --diff/,
47
+ `expected at least one headline feature; got: ${r.stdout.slice(-800)}`);
48
+ });
49
+
50
+ it('pinning at current CLI version shows no what\'s-new (clean)', () => {
51
+ const PKG = JSON.parse(readFileSync('package.json', 'utf-8'));
52
+ dir = makeRepo({ docguardVersion: PKG.version });
53
+ const r = spawnSync('node', [CLI, 'guard', '--quiet'], { cwd: dir, encoding: 'utf-8' });
54
+ assert.doesNotMatch(r.stdout, /New since v/);
55
+ });
56
+
57
+ it('caps at 5 inline highlights with "N more" pointer when more exist', () => {
58
+ dir = makeRepo({ docguardVersion: '0.11.0' });
59
+ const r = spawnSync('node', [CLI, 'guard', '--quiet'], { cwd: dir, encoding: 'utf-8' });
60
+ // Should be capped at 5 lines + "N more in CHANGELOG.md"
61
+ const lines = r.stdout.split('\n').filter(l => /^\s+•\s+v0\./.test(l));
62
+ assert.ok(lines.length <= 5, `expected at most 5 inline highlights; got ${lines.length}`);
63
+ assert.match(r.stdout, /more in CHANGELOG\.md/, 'should point at CHANGELOG.md for the rest');
64
+ });
65
+ });
File without changes
File without changes
File without changes