docguard-cli 0.36.0__tar.gz → 0.36.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 (492) hide show
  1. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/buglog.json +32 -0
  2. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/cerebrum.md +2 -0
  3. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/CHANGELOG.md +8 -0
  4. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/PKG-INFO +1 -1
  5. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/README.md +6 -6
  6. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/commands/sync.md +1 -1
  7. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/extension.yml +2 -2
  8. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/scripts/bash/common.sh +9 -17
  9. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh +18 -11
  10. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/skills/docguard-fix/SKILL.md +3 -3
  11. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/skills/docguard-guard/SKILL.md +2 -2
  12. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/skills/docguard-review/SKILL.md +2 -2
  13. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/skills/docguard-score/SKILL.md +2 -2
  14. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/skills/docguard-sync/SKILL.md +2 -2
  15. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/templates/github-workflows/docguard-guard.yml +1 -1
  16. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/package-lock.json +2 -2
  17. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/package.json +1 -1
  18. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/pyproject.toml +1 -1
  19. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/server.json +2 -2
  20. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/ci/github-actions.yml +1 -1
  21. docguard_cli-0.36.1/tests/spec-kit-helper-json.test.mjs +146 -0
  22. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/docguard.fix.md +0 -0
  23. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/docguard.guard.md +0 -0
  24. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/docguard.review.md +0 -0
  25. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/docguard.score.md +0 -0
  26. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.analyze.md +0 -0
  27. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.checklist.md +0 -0
  28. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.clarify.md +0 -0
  29. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.constitution.md +0 -0
  30. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.implement.md +0 -0
  31. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.plan.md +0 -0
  32. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.specify.md +0 -0
  33. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.tasks.md +0 -0
  34. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.taskstoissues.md +0 -0
  35. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/docguard-fix/SKILL.md +0 -0
  36. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/docguard-guard/SKILL.md +0 -0
  37. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/docguard-review/SKILL.md +0 -0
  38. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/docguard-score/SKILL.md +0 -0
  39. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/docguard-sync/SKILL.md +0 -0
  40. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-analyze/SKILL.md +0 -0
  41. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-checklist/SKILL.md +0 -0
  42. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-clarify/SKILL.md +0 -0
  43. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-constitution/SKILL.md +0 -0
  44. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-implement/SKILL.md +0 -0
  45. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-plan/SKILL.md +0 -0
  46. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-specify/SKILL.md +0 -0
  47. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-tasks/SKILL.md +0 -0
  48. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-taskstoissues/SKILL.md +0 -0
  49. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.claude/rules/openwolf.md +0 -0
  50. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.claude/settings.json +0 -0
  51. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.docguard.json +0 -0
  52. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.docguardignore +0 -0
  53. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  54. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/ISSUE_TEMPLATE/docguard-feedback.md +0 -0
  55. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  56. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  57. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/dependabot.yml +0 -0
  58. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/scripts/speckit-submission.py +0 -0
  59. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/workflows/auto-merge.yml +0 -0
  60. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/workflows/ci.yml +0 -0
  61. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/workflows/jules-triage.yml +0 -0
  62. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/workflows/release.yml +0 -0
  63. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/workflows/scheduled-release.yml +0 -0
  64. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/workflows/supply-chain.yml +0 -0
  65. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/workflows/sync-speckit-catalog.yml +0 -0
  66. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.gitignore +0 -0
  67. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.jules/bolt.md +0 -0
  68. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.jules/palette.md +0 -0
  69. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.jules/sentinel.md +0 -0
  70. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.jules-setup.sh +0 -0
  71. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.npmignore +0 -0
  72. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.npmrc +0 -0
  73. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.pre-commit-hooks.yaml +0 -0
  74. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/extensions/.cache/catalog-ebf165086500aab1-metadata.json +0 -0
  75. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/extensions/.cache/catalog-ebf165086500aab1.json +0 -0
  76. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/extensions/.cache/catalog-metadata.json +0 -0
  77. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/extensions/.cache/catalog.json +0 -0
  78. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/init-options.json +0 -0
  79. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/memory/constitution.md +0 -0
  80. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/scripts/bash/check-prerequisites.sh +0 -0
  81. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/scripts/bash/common.sh +0 -0
  82. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/scripts/bash/create-new-feature.sh +0 -0
  83. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/scripts/bash/setup-plan.sh +0 -0
  84. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/scripts/bash/update-agent-context.sh +0 -0
  85. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/templates/agent-file-template.md +0 -0
  86. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/templates/checklist-template.md +0 -0
  87. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/templates/constitution-template.md +0 -0
  88. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/templates/plan-template.md +0 -0
  89. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/templates/spec-template.md +0 -0
  90. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/templates/tasks-template.md +0 -0
  91. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/OPENWOLF.md +0 -0
  92. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/anatomy.md +0 -0
  93. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/config.json +0 -0
  94. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/cron-manifest.json +0 -0
  95. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/cron-state.json +0 -0
  96. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/daemon.log +0 -0
  97. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/designqc-report.json +0 -0
  98. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/_session.json +0 -0
  99. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/_wrap_up_nudged +0 -0
  100. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/package.json +0 -0
  101. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/post-read.js +0 -0
  102. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/post-write.js +0 -0
  103. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/pre-read.js +0 -0
  104. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/pre-write.js +0 -0
  105. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/session-start.js +0 -0
  106. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/shared.js +0 -0
  107. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/stop.js +0 -0
  108. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/identity.md +0 -0
  109. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/memory.md +0 -0
  110. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/reframe-frameworks.md +0 -0
  111. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/suggestions.json +0 -0
  112. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/token-ledger.json +0 -0
  113. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/AGENTS.md +0 -0
  114. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/CLAUDE.md +0 -0
  115. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/CODE_OF_CONDUCT.md +0 -0
  116. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/COMPARISONS.md +0 -0
  117. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/CONTRIBUTING.md +0 -0
  118. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/DRIFT-LOG.md +0 -0
  119. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/Dockerfile +0 -0
  120. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/LICENSE +0 -0
  121. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/PHILOSOPHY.md +0 -0
  122. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/PRIVACY.md +0 -0
  123. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/README.es.md +0 -0
  124. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/README.md +0 -0
  125. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/README.pt-BR.md +0 -0
  126. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/ROADMAP.md +0 -0
  127. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/SECURITY.md +0 -0
  128. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/STANDARD.md +0 -0
  129. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/SUPPLY-CHAIN-AUDIT.md +0 -0
  130. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/SUPPORT.md +0 -0
  131. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/VALIDATION.md +0 -0
  132. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/action.yml +0 -0
  133. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/assets/bin/docguard +0 -0
  134. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/assets/demo.gif +0 -0
  135. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/assets/demo.tape +0 -0
  136. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/assets/docguard-logo.png +0 -0
  137. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/agent.mjs +0 -0
  138. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/agents.mjs +0 -0
  139. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/badge.mjs +0 -0
  140. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/ci.mjs +0 -0
  141. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/demo.mjs +0 -0
  142. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/diagnose.mjs +0 -0
  143. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/diff.mjs +0 -0
  144. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/explain.mjs +0 -0
  145. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/feedback.mjs +0 -0
  146. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/fix.mjs +0 -0
  147. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/generate.mjs +0 -0
  148. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/guard.mjs +0 -0
  149. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/hooks.mjs +0 -0
  150. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/impact.mjs +0 -0
  151. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/init.mjs +0 -0
  152. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/llms.mjs +0 -0
  153. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/mcp.mjs +0 -0
  154. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/memory.mjs +0 -0
  155. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/publish.mjs +0 -0
  156. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/report.mjs +0 -0
  157. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/score.mjs +0 -0
  158. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/setup.mjs +0 -0
  159. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/sync-tests.mjs +0 -0
  160. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/sync.mjs +0 -0
  161. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/trace.mjs +0 -0
  162. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/upgrade.mjs +0 -0
  163. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/verify.mjs +0 -0
  164. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/watch.mjs +0 -0
  165. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/config.mjs +0 -0
  166. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/docguard.mjs +0 -0
  167. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/ensure-skills.mjs +0 -0
  168. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/findings.mjs +0 -0
  169. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/agent-readability.mjs +0 -0
  170. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/api-doc.mjs +0 -0
  171. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/cdk.mjs +0 -0
  172. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/doc-tools.mjs +0 -0
  173. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/frontend.mjs +0 -0
  174. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/iac.mjs +0 -0
  175. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/instruction-audit.mjs +0 -0
  176. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/integrations.mjs +0 -0
  177. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/inventory.mjs +0 -0
  178. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/js-ast.mjs +0 -0
  179. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/memory-plan.mjs +0 -0
  180. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/project-type.mjs +0 -0
  181. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/py-ast.mjs +0 -0
  182. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/routes.mjs +0 -0
  183. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/schemas.mjs +0 -0
  184. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/semantic-claims.mjs +0 -0
  185. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/speckit.mjs +0 -0
  186. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/shared-diff.mjs +0 -0
  187. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/shared-doc-roles.mjs +0 -0
  188. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/shared-git.mjs +0 -0
  189. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/shared-ignore.mjs +0 -0
  190. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/shared-ir.mjs +0 -0
  191. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/shared-source.mjs +0 -0
  192. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/shared-trace-patterns.mjs +0 -0
  193. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/shared.mjs +0 -0
  194. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validator-coverage.mjs +0 -0
  195. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validator-markers.mjs +0 -0
  196. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/api-doc-smells.mjs +0 -0
  197. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/api-surface.mjs +0 -0
  198. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/architecture.mjs +0 -0
  199. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/canonical-sync.mjs +0 -0
  200. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/changelog.mjs +0 -0
  201. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/cross-reference.mjs +0 -0
  202. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/diff-suspicion.mjs +0 -0
  203. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/doc-quality.mjs +0 -0
  204. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/docs-coverage.mjs +0 -0
  205. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/docs-diff.mjs +0 -0
  206. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/docs-sync.mjs +0 -0
  207. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/drift.mjs +0 -0
  208. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/environment.mjs +0 -0
  209. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/freshness.mjs +0 -0
  210. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/generated-staleness.mjs +0 -0
  211. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/metadata-sync.mjs +0 -0
  212. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/metrics-consistency.mjs +0 -0
  213. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/reference-existence.mjs +0 -0
  214. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/schema-sync.mjs +0 -0
  215. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/security.mjs +0 -0
  216. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/spec-kit.mjs +0 -0
  217. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/structure.mjs +0 -0
  218. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/surface-sync.mjs +0 -0
  219. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/test-spec.mjs +0 -0
  220. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/todo-tracking.mjs +0 -0
  221. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/traceability.mjs +0 -0
  222. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/api-reference.mjs +0 -0
  223. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/baseline.mjs +0 -0
  224. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/doc-generators.mjs +0 -0
  225. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/fix-memory.mjs +0 -0
  226. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/generate-io.mjs +0 -0
  227. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/history.mjs +0 -0
  228. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/junit.mjs +0 -0
  229. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/mechanical.mjs +0 -0
  230. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/sarif.mjs +0 -0
  231. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/sections.mjs +0 -0
  232. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/commands/docguard.fix.md +0 -0
  233. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/commands/docguard.guard.md +0 -0
  234. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/commands/docguard.review.md +0 -0
  235. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/commands/docguard.score.md +0 -0
  236. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/configs/fastify.json +0 -0
  237. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/configs/generic.json +0 -0
  238. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/configs/nextjs.json +0 -0
  239. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/configs/python.json +0 -0
  240. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docguard_cli/__init__.py +0 -0
  241. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docguard_cli/wrapper.py +0 -0
  242. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs/ai-integration.md +0 -0
  243. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs/commands.md +0 -0
  244. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs/configuration.md +0 -0
  245. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs/doc-sections.md +0 -0
  246. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs/faq.md +0 -0
  247. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs/installation.md +0 -0
  248. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs/profiles.md +0 -0
  249. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs/quickstart.md +0 -0
  250. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-canonical/ARCHITECTURE.md +0 -0
  251. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-canonical/CI-RECIPES.md +0 -0
  252. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-canonical/DATA-MODEL.md +0 -0
  253. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-canonical/ENVIRONMENT.md +0 -0
  254. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-canonical/REQUIREMENTS.md +0 -0
  255. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-canonical/SECURITY.md +0 -0
  256. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-canonical/SURFACE-AUDIT.md +0 -0
  257. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-canonical/TEST-SPEC.md +0 -0
  258. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-implementation/MIGRATION-v0.20.md +0 -0
  259. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-implementation/PRECISION-VALIDATION.md +0 -0
  260. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-implementation/TRUST-ROADMAP.md +0 -0
  261. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-implementation/TRUST-VALIDATION.md +0 -0
  262. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/01-express-api/README.md +0 -0
  263. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/01-express-api/package.json +0 -0
  264. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/01-express-api/server.js +0 -0
  265. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/02-python-flask/README.md +0 -0
  266. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/02-python-flask/app.py +0 -0
  267. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/02-python-flask/docs-canonical/ARCHITECTURE.md +0 -0
  268. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/02-python-flask/requirements.txt +0 -0
  269. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/03-spec-kit-project/CHANGELOG.md +0 -0
  270. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/03-spec-kit-project/README.md +0 -0
  271. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/03-spec-kit-project/docs-canonical/ARCHITECTURE.md +0 -0
  272. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/03-spec-kit-project/docs-canonical/TEST-SPEC.md +0 -0
  273. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/03-spec-kit-project/package.json +0 -0
  274. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/03-spec-kit-project/src/index.js +0 -0
  275. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/03-spec-kit-project/tasks.json +0 -0
  276. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/03-spec-kit-project/tests/basic.test.js +0 -0
  277. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/README.md +0 -0
  278. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/LICENSE +0 -0
  279. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/commands/diagnose.md +0 -0
  280. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/commands/fix.md +0 -0
  281. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/commands/generate.md +0 -0
  282. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/commands/guard.md +0 -0
  283. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/commands/init.md +0 -0
  284. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/commands/score.md +0 -0
  285. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/commands/trace.md +0 -0
  286. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/scripts/bash/docguard-init-doc.sh +0 -0
  287. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/scripts/bash/docguard-suggest-fix.sh +0 -0
  288. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/templates/extensions.yml +0 -0
  289. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/templates/github-workflows/docguard-autofix.yml +0 -0
  290. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/glama.json +0 -0
  291. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/llms-full.txt +0 -0
  292. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/llms.txt +0 -0
  293. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/mcpb/README.md +0 -0
  294. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/mcpb/manifest.template.json +0 -0
  295. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/packaging/homebrew/docguard.rb +0 -0
  296. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/packaging/submissions.md +0 -0
  297. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/schemas/docguard-config.schema.json +0 -0
  298. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/smithery.yaml +0 -0
  299. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/001-fix-ignore-validators/plan.md +0 -0
  300. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/001-fix-ignore-validators/spec.md +0 -0
  301. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/001-fix-ignore-validators/tasks.md +0 -0
  302. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/002-fix-test-discovery/plan.md +0 -0
  303. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/002-fix-test-discovery/spec.md +0 -0
  304. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/002-fix-test-discovery/tasks.md +0 -0
  305. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/003-v011-false-positives/plan.md +0 -0
  306. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/003-v011-false-positives/spec.md +0 -0
  307. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/003-v011-false-positives/tasks.md +0 -0
  308. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/004-v020-env-var-false-negative/spec.md +0 -0
  309. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/005-hugocross-next-bugs/spec.md +0 -0
  310. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/ADR.md.template +0 -0
  311. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/AGENTS.md.template +0 -0
  312. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/ARCHITECTURE.md.template +0 -0
  313. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/CHANGELOG.md.template +0 -0
  314. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/CURRENT-STATE.md.template +0 -0
  315. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/DATA-MODEL.md.template +0 -0
  316. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/DEPLOYMENT.md.template +0 -0
  317. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/DRIFT-LOG.md.template +0 -0
  318. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/ENVIRONMENT.md.template +0 -0
  319. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/KNOWN-GOTCHAS.md.template +0 -0
  320. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/REQUIREMENTS.md.template +0 -0
  321. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/ROADMAP.md.template +0 -0
  322. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/RUNBOOKS.md.template +0 -0
  323. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/SECURITY.md.template +0 -0
  324. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/TEST-SPEC.md.template +0 -0
  325. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/TROUBLESHOOTING.md.template +0 -0
  326. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/VENDOR-BUGS.md.template +0 -0
  327. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/ci/gitlab-component.yml +0 -0
  328. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/commands/docguard.fix.md +0 -0
  329. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/commands/docguard.guard.md +0 -0
  330. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/commands/docguard.init.md +0 -0
  331. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/commands/docguard.review.md +0 -0
  332. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/commands/docguard.update.md +0 -0
  333. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/.docguard.json +0 -0
  334. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/.env.example +0 -0
  335. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/AGENTS.md +0 -0
  336. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/CHANGELOG.md +0 -0
  337. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/DRIFT-LOG.md +0 -0
  338. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/README.md +0 -0
  339. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/docs-canonical/API-REFERENCE.md +0 -0
  340. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/docs-canonical/ARCHITECTURE.md +0 -0
  341. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/docs-canonical/DATA-MODEL.md +0 -0
  342. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/docs-canonical/ENVIRONMENT.md +0 -0
  343. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/docs-canonical/SECURITY.md +0 -0
  344. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/docs-canonical/TEST-SPEC.md +0 -0
  345. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/package.json +0 -0
  346. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/src/api.mjs +0 -0
  347. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/src/notifier.mjs +0 -0
  348. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/src/scheduler.mjs +0 -0
  349. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/src/worker.mjs +0 -0
  350. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/agent-evidence.test.mjs +0 -0
  351. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/agent-readability.test.mjs +0 -0
  352. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/agent.test.mjs +0 -0
  353. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/agents-command.test.mjs +0 -0
  354. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/agents-sync.test.mjs +0 -0
  355. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/anchor-autofix.test.mjs +0 -0
  356. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/api-authority-precision.test.mjs +0 -0
  357. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/api-doc-smells.test.mjs +0 -0
  358. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/api-doc.test.mjs +0 -0
  359. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/api-surface.test.mjs +0 -0
  360. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/api-write.test.mjs +0 -0
  361. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/architecture.test.mjs +0 -0
  362. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/b7-node-env-symmetry.test.mjs +0 -0
  363. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/backup-failure.test.mjs +0 -0
  364. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/badge.test.mjs +0 -0
  365. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/baseline.test.mjs +0 -0
  366. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/canonical-docs-nested-phase2.test.mjs +0 -0
  367. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/canonical-docs-nested.test.mjs +0 -0
  368. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/canonical-sync.test.mjs +0 -0
  369. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/catalog-submission.test.mjs +0 -0
  370. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/cdk-detection.test.mjs +0 -0
  371. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/changed-only-scoping.test.mjs +0 -0
  372. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/changed-only.test.mjs +0 -0
  373. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/changelog.test.mjs +0 -0
  374. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/check-coverage.test.mjs +0 -0
  375. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/ci-reproducibility.test.mjs +0 -0
  376. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/ci-scaffolder.test.mjs +0 -0
  377. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/commands.test.mjs +0 -0
  378. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/cross-reference.test.mjs +0 -0
  379. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/demo-command.test.mjs +0 -0
  380. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/diff-suspicion.test.mjs +0 -0
  381. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/doc-quality.test.mjs +0 -0
  382. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/doc-role-boundaries.test.mjs +0 -0
  383. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/doc-role-mapping.test.mjs +0 -0
  384. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/doc-section-synonyms.test.mjs +0 -0
  385. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/docguardignore.test.mjs +0 -0
  386. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/docs-coverage.test.mjs +0 -0
  387. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/docs-diff.test.mjs +0 -0
  388. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/docs-sync.test.mjs +0 -0
  389. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/drift.test.mjs +0 -0
  390. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/ensure-skills-idempotent.test.mjs +0 -0
  391. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/env-schema-detection.test.mjs +0 -0
  392. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/environment.test.mjs +0 -0
  393. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/explain-coverage.test.mjs +0 -0
  394. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/feedback-contributions.test.mjs +0 -0
  395. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/field-context-precision.test.mjs +0 -0
  396. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/field-diff-precision.test.mjs +0 -0
  397. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/field-report-2-cli.test.mjs +0 -0
  398. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/field-report-3-deferred.test.mjs +0 -0
  399. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/field-report-3.test.mjs +0 -0
  400. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/field-review-clarity.test.mjs +0 -0
  401. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/fix-memory.test.mjs +0 -0
  402. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/fix-suppression.test.mjs +0 -0
  403. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/fixture-projects.test.mjs +0 -0
  404. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/freshness.test.mjs +0 -0
  405. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/frontend-deep.test.mjs +0 -0
  406. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/frontend.test.mjs +0 -0
  407. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/generate-io.test.mjs +0 -0
  408. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/generated-staleness.test.mjs +0 -0
  409. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/guard-classify.test.mjs +0 -0
  410. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/guard-no-throw.test.mjs +0 -0
  411. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/history.test.mjs +0 -0
  412. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/hooks-contract.test.mjs +0 -0
  413. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/hooks.test.mjs +0 -0
  414. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/i18n.test.mjs +0 -0
  415. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/impact.test.mjs +0 -0
  416. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/init-smart-detection.test.mjs +0 -0
  417. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/instruction-audit.test.mjs +0 -0
  418. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/integrations.test.mjs +0 -0
  419. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/inventory.test.mjs +0 -0
  420. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/js-ast.test.mjs +0 -0
  421. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/junit.test.mjs +0 -0
  422. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/llms-full-pack.test.mjs +0 -0
  423. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/mcp-http.test.mjs +0 -0
  424. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/mcp.test.mjs +0 -0
  425. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/mechanical.test.mjs +0 -0
  426. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/memory-plan.test.mjs +0 -0
  427. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/metadata-sync.test.mjs +0 -0
  428. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/metrics-consistency.test.mjs +0 -0
  429. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/metrics-dedup.test.mjs +0 -0
  430. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/monorepo-scanning.test.mjs +0 -0
  431. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/multi-spec.test.mjs +0 -0
  432. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/npm-pack-smoke.test.mjs +0 -0
  433. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/nudge-hook.test.mjs +0 -0
  434. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/openapi-parse-honesty.test.mjs +0 -0
  435. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/patch-0.11.2.test.mjs +0 -0
  436. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/plan-disk-cache.test.mjs +0 -0
  437. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/profile-flag.test.mjs +0 -0
  438. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/project-type.test.mjs +0 -0
  439. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/py-ast.test.mjs +0 -0
  440. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/reference-existence.test.mjs +0 -0
  441. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/regenerate-section.test.mjs +0 -0
  442. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/report.test.mjs +0 -0
  443. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/route-field-precision.test.mjs +0 -0
  444. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/routes-express-mounts.test.mjs +0 -0
  445. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/routes-fastify.test.mjs +0 -0
  446. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/routes-multilang.test.mjs +0 -0
  447. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/routes-nextjs-app-router.test.mjs +0 -0
  448. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/sarif.test.mjs +0 -0
  449. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/schema-sync.test.mjs +0 -0
  450. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/schemas-multilang.test.mjs +0 -0
  451. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/schemas.test.mjs +0 -0
  452. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/scoping-extended.test.mjs +0 -0
  453. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/score-assurance.test.mjs +0 -0
  454. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/score-suggestions.test.mjs +0 -0
  455. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/section-na-markers.test.mjs +0 -0
  456. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/sections.test.mjs +0 -0
  457. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/security-init-injection.test.mjs +0 -0
  458. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/security.test.mjs +0 -0
  459. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/severity.test.mjs +0 -0
  460. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/shared-diff.test.mjs +0 -0
  461. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/shared-git.test.mjs +0 -0
  462. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/shared-ignore-functions.test.mjs +0 -0
  463. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/shared-ir.test.mjs +0 -0
  464. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/shared-source.test.mjs +0 -0
  465. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/speckit-bugfix.test.mjs +0 -0
  466. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/speckit-phantom.test.mjs +0 -0
  467. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/starter-scaffold.test.mjs +0 -0
  468. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/stress-test.test.mjs +0 -0
  469. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/structure.test.mjs +0 -0
  470. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/surface-sync.test.mjs +0 -0
  471. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/sweep-nudge.test.mjs +0 -0
  472. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/sync-since.test.mjs +0 -0
  473. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/sync.test.mjs +0 -0
  474. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/test-spec.test.mjs +0 -0
  475. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/todo-tracking.test.mjs +0 -0
  476. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/trace-features.test.mjs +0 -0
  477. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/trace-multilang.test.mjs +0 -0
  478. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/trace-reverse.test.mjs +0 -0
  479. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/traceability-fixtures.test.mjs +0 -0
  480. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/traceability-ir.test.mjs +0 -0
  481. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/traceability.test.mjs +0 -0
  482. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/upgrade-pr-e2e.test.mjs +0 -0
  483. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/upgrade-pr.test.mjs +0 -0
  484. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/upgrade.test.mjs +0 -0
  485. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/v020-consolidation.test.mjs +0 -0
  486. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/validator-markers.test.mjs +0 -0
  487. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/validator-naming.test.mjs +0 -0
  488. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/verify-change-context.test.mjs +0 -0
  489. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/version-pin.test.mjs +0 -0
  490. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/watch-reliability.test.mjs +0 -0
  491. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/whats-new.test.mjs +0 -0
  492. {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/worker-python-capability.test.mjs +0 -0
@@ -5110,6 +5110,38 @@
5110
5110
  "related_bugs": [],
5111
5111
  "occurrences": 1,
5112
5112
  "last_seen": "2026-09-11T20:42:23.164Z"
5113
+ },
5114
+ {
5115
+ "id": "bug-311",
5116
+ "timestamp": "2026-09-11T21:26:46.402Z",
5117
+ "error_message": "Published Spec Kit installation displayed an obsolete validator count",
5118
+ "file": "extensions/spec-kit-docguard/extension.yml",
5119
+ "root_cause": "Descriptive metadata and skill prose hardcoded a count outside synchronized documentation checks",
5120
+ "fix": "Remove the hardcoded count from all three extension surfaces and verify the published ZIP after installation",
5121
+ "tags": [
5122
+ "release",
5123
+ "metadata",
5124
+ "documentation"
5125
+ ],
5126
+ "related_bugs": [],
5127
+ "occurrences": 1,
5128
+ "last_seen": "2026-09-11T21:26:46.402Z"
5129
+ },
5130
+ {
5131
+ "id": "bug-312",
5132
+ "timestamp": "2026-09-11T21:33:22.758Z",
5133
+ "error_message": "Spec Kit verbose helper emitted malformed JSON for current CLI output",
5134
+ "file": "extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh",
5135
+ "root_cause": "Legacy regex parsing expected compact score fields and prose guard output; CLI lookup missed installed docguard and did not quote paths",
5136
+ "fix": "Parse and validate structured JSON and exit status; prefer local installs, safely quote executable paths, and refuse implicit npx downloads",
5137
+ "tags": [
5138
+ "release",
5139
+ "json",
5140
+ "hooks"
5141
+ ],
5142
+ "related_bugs": [],
5143
+ "occurrences": 1,
5144
+ "last_seen": "2026-09-11T21:33:22.758Z"
5113
5145
  }
5114
5146
  ]
5115
5147
  }
@@ -120,3 +120,5 @@
120
120
  - **2026-09-11 (documentation trust)** — Structural score and surface alignment do not establish factual accuracy. Preserve null/unverified across score, CI, report, diagnose, and agent prompts; zero extracted claims does not prove prose correctness. Content-aware plan identity fixes stale uncommitted source results at a measurable hashing cost. Treat fixture strings separately from actual requirement annotations. Public feedback drafts carry registry metadata only; private source context stays local, and submission remains voluntary. `init --with ci` scaffolds a maintained workflow; installing a workflow does not enable branch protection. See docs-implementation/TRUST-ROADMAP.md for researched acceptance gates and deferred empirical work.
121
121
 
122
122
  - **2026-09-11 (enterprise precision)** — Compare baseline and current on identical disposable source snapshots. Keep originals untouched; concurrent consumer commits are not our changes. A lower warning total is not precision: new review scope can increase findings. OpenAPI absence is not implementation absence. Pair every exception with a true-defect control; source syntax and lexical ownership beat broad line matching. Custom doc roles need both direct-call and CLI write fences. Missing annotations leave behavioral coverage unknown; Python architecture coverage remains explicitly unsupported. Full-suite temp assertions must isolate process-owned fixtures and always clean up with ESM-safe imports. See docs-implementation/PRECISION-VALIDATION.md.
123
+
124
+ - **2026-09-11 (release verification)** — Install the actual release ZIP in a disposable Spec Kit project before updating the catalog: CLI tests and self-guard did not catch obsolete counts in extension install descriptions. Catalog draft checkboxes are evidence to fill after testing, not automatic assertions. Reuse the existing open submission issue; refresh MCP Registry identity auth when its JWT expires. Preserve published versions and use a patch release for post-publication corrections.
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.36.1] - 2026-09-11
11
+
12
+ ### Fixed
13
+
14
+ - Removed stale validator counts from the Spec Kit extension installation description, README, and repair skill. Found by installing the published v0.36.0 ZIP in a disposable Spec Kit project. The validation engine is unchanged.
15
+ - The Spec Kit verbose helper reads structured score/guard JSON, preserves PASS/WARN/FAIL, and rejects malformed reports. CLI resolution prefers local installs, quotes paths safely, and requires an installed CLI instead of fetching through npx.
16
+
17
+
10
18
  ## [0.36.0] - 2026-09-11
11
19
 
12
20
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: docguard-cli
3
- Version: 0.36.0
3
+ Version: 0.36.1
4
4
  Summary: The enforcement tool for Canonical-Driven Development (CDD). Audit, generate, and guard your project documentation. No Python dependencies (requires Node.js 18+).
5
5
  Project-URL: Homepage, https://github.com/raccioly/docguard
6
6
  Project-URL: Documentation, https://github.com/raccioly/docguard#readme
@@ -1,13 +1,13 @@
1
1
  # DocGuard — CDD Enforcement Extension for Spec Kit
2
2
 
3
- Enterprise-grade Canonical-Driven Development (CDD) enforcement and **AI-readable project memory** for [Spec Kit](https://github.com/github/spec-kit). DocGuard builds a complete, language-aware documentation memory of any codebase (`generate --plan`), keeps it always up to date as code changes (`sync`), and verifies it (`guard`) — with deterministic mechanical fixes (`fix --write`) where it can and grounded agent prompts where prose is needed.
3
+ Enterprise-grade Canonical-Driven Development (CDD) enforcement and **AI-readable project memory** for [Spec Kit](https://github.com/github/spec-kit). DocGuard builds source-derived documentation context for supported code (`generate --plan`), refreshes generated sections as code changes (`sync`), and checks configured rules (`guard`) — with deterministic mechanical fixes (`fix --write`) where it can and grounded agent prompts where prose is needed.
4
4
 
5
5
  ## Features
6
6
 
7
- - **24 Validators** — Structure, Security, Doc Quality, Test-Spec, Drift-Comments, API-Surface, Freshness, Cross-Reference, and 13 more
8
- - **Language-agnostic** — JS/TS, Python, Rust, Go, Java/Kotlin, Ruby, PHP, C#. Polyglot/monorepo-aware.
7
+ - **Configurable validators** — Structure, Security, Doc Quality, Test-Spec, Drift-Comments, API-Surface, Freshness, Cross-Reference, and more; use `docguard --help` for the current surface
8
+ - **Language-specific extraction** — Supported checks cover several languages and monorepos. Coverage varies by detector; unsupported inputs remain unverified.
9
9
  - **AI-powered Generate** — `generate --plan` builds the code-truth skeleton in `<!-- docguard:section -->` markers and emits a structured agent task manifest; the AI writes the prose.
10
- - **Always up to date** — `sync` surgically refreshes code-truth doc sections in place, **preserves human prose**, flags prose for agent review.
10
+ - **Refresh and review** — `sync` surgically refreshes code-truth doc sections in place, **preserves human prose**, flags prose for agent review.
11
11
  - **Mechanical `fix --write`** — deterministic, no-LLM: remove stale documented endpoints, refresh stale "N validators" counts, replace stale version refs, insert missing `## [Unreleased]`.
12
12
  - **5 AI Skills** — docguard-fix, docguard-guard, docguard-sync, docguard-review, docguard-score (enterprise-grade behavior protocols, not just step-lists)
13
13
  - **Workflow Chaining** — YAML handoffs enable guard → sync → fix → review → score flows
@@ -20,7 +20,7 @@ Enterprise-grade Canonical-Driven Development (CDD) enforcement and **AI-readabl
20
20
  npm install -g docguard-cli
21
21
  ```
22
22
 
23
- Or use via npx:
23
+ Spec Kit orchestration scripts require a local `node_modules/docguard-cli` installation or `docguard` on PATH; they do not implicitly download a CLI. Direct CLI use via npx remains available:
24
24
  ```bash
25
25
  npx docguard-cli guard
26
26
  ```
@@ -45,7 +45,7 @@ docguard score
45
45
 
46
46
  | Command | Alias | Purpose |
47
47
  |---------|-------|---------|
48
- | `speckit.docguard.guard` | `docguard.guard` | Run 19-validator quality gate with severity triage |
48
+ | `speckit.docguard.guard` | `docguard.guard` | Run configurable quality gate with severity triage |
49
49
  | `speckit.docguard.fix` | `docguard.fix` | AI-driven documentation repair with codebase research |
50
50
  | `speckit.docguard.review` | `docguard.review` | Cross-document semantic consistency analysis (read-only) |
51
51
  | `speckit.docguard.score` | `docguard.score` | CDD maturity score with ROI improvement roadmap |
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Keep canonical docs always up to date — refresh code-truth sections in place, preserve human prose
2
+ description: Refresh canonical code-truth sections and flag prose for review — refresh code-truth sections in place, preserve human prose
3
3
  allowed-tools: Bash, Read, Edit
4
4
  ---
5
5
 
@@ -3,7 +3,7 @@ schema_version: "1.0"
3
3
  extension:
4
4
  id: "docguard"
5
5
  name: "DocGuard — CDD Enforcement"
6
- version: "0.36.0"
6
+ version: "0.36.1"
7
7
  description: "Canonical-Driven Development enforcement as a true spec-kit extension. LLM-first design with automated validators, 4 AI behavior skills, spec-kit skill chaining, and workflow hooks. One pinned runtime dependency (@babel/parser); pure Node.js otherwise."
8
8
  author: "Ricardo Accioly"
9
9
  repository: "https://github.com/raccioly/docguard"
@@ -27,7 +27,7 @@ provides:
27
27
  commands:
28
28
  - name: "speckit.docguard.guard"
29
29
  file: "commands/guard.md"
30
- description: "Run 19-validator quality gate with severity triage and remediation plan"
30
+ description: "Run configurable quality gate with severity triage and remediation plan"
31
31
 
32
32
  - name: "speckit.docguard.fix"
33
33
  file: "commands/generate.md"
@@ -23,25 +23,17 @@ find_docguard_root() {
23
23
 
24
24
  find_docguard_cli() {
25
25
  local root="${1:-$(pwd)}"
26
-
27
- # Check for local dev mode first
28
- if [ -f "$root/cli/docguard.mjs" ]; then
29
- echo "node $root/cli/docguard.mjs"
30
- return 0
31
- fi
32
-
33
- # Check for global install
34
- if command -v docguard-cli >/dev/null 2>&1; then
35
- echo "docguard-cli"
36
- return 0
37
- fi
38
-
39
- # Fall back to npx
40
- if command -v npx >/dev/null 2>&1; then
41
- echo "npx docguard-cli"
26
+ local entry
27
+ for entry in "$root/cli/docguard.mjs" "$root/node_modules/docguard-cli/cli/docguard.mjs"; do
28
+ if [ -f "$entry" ] && command -v node >/dev/null 2>&1; then
29
+ printf '%q %q\n' "$(command -v node)" "$entry"
30
+ return 0
31
+ fi
32
+ done
33
+ if command -v docguard >/dev/null 2>&1; then
34
+ printf '%q\n' "$(command -v docguard)"
42
35
  return 0
43
36
  fi
44
-
45
37
  return 1
46
38
  }
47
39
 
@@ -104,17 +104,24 @@ if $JSON_MODE; then
104
104
  # Optionally include score and guard
105
105
  EXTRAS=""
106
106
  if $VERBOSE; then
107
- SCORE_OUTPUT=$(eval $CLI_CMD score --format json 2>/dev/null || echo "")
108
- GUARD_OUTPUT=$(eval $CLI_CMD guard 2>&1 || true)
109
-
110
- # Extract score
111
- SCORE=$(echo "$SCORE_OUTPUT" | grep -o '"total":[0-9]*' | head -1 | sed 's/"total"://' || echo "0")
112
-
113
- # Extract guard pass/total from output like "156/160 passed"
114
- GUARD_PASS=$(echo "$GUARD_OUTPUT" | grep -o '[0-9]*/[0-9]* passed' | sed 's|/.*||' || echo "0")
115
- GUARD_TOTAL=$(echo "$GUARD_OUTPUT" | grep -o '[0-9]*/[0-9]* passed' | sed 's|.*/||; s| .*||' || echo "0")
116
-
117
- EXTRAS=",\"score\":$SCORE,\"guardPass\":$GUARD_PASS,\"guardTotal\":$GUARD_TOTAL"
107
+ SCORE_OUTPUT=$(eval "$CLI_CMD score --format json")
108
+ SCORE=$(printf '%s' "$SCORE_OUTPUT" | node -e '
109
+ const d=JSON.parse(require("fs").readFileSync(0,"utf8"));
110
+ if(!Number.isFinite(d.score) || d.score<0 || d.score>100) throw Error("Invalid DocGuard score");
111
+ process.stdout.write(String(d.score));
112
+ ')
113
+ GUARD_STATUS=0
114
+ GUARD_OUTPUT=$(eval "$CLI_CMD guard --format json") || GUARD_STATUS=$?
115
+ EXTRAS=$(printf '%s' "$GUARD_OUTPUT" | node -e '
116
+ const d=JSON.parse(require("fs").readFileSync(0,"utf8"));
117
+ const exit=Number(process.argv[2]);
118
+ const expected={PASS:0,WARN:2,FAIL:1};
119
+ if(!Object.hasOwn(expected,d.status) || expected[d.status]!==exit ||
120
+ !Number.isInteger(d.passed) || !Number.isInteger(d.total) ||
121
+ d.passed<0 || d.total<d.passed) throw Error("Invalid DocGuard guard report");
122
+ const fields={score:Number(process.argv[1]),guardPass:d.passed,guardTotal:d.total,guardStatus:d.status};
123
+ process.stdout.write(","+JSON.stringify(fields).slice(1,-1));
124
+ ' "$SCORE" "$GUARD_STATUS")
118
125
  fi
119
126
 
120
127
  # Check for spec-kit
@@ -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.36.0
9
+ version: 0.36.1
10
10
  source: extensions/spec-kit-docguard/skills/docguard-fix
11
11
  ---
12
- <!-- docguard:version: 0.36.0 -->
12
+ <!-- docguard:version: 0.36.1 -->
13
13
 
14
14
  # DocGuard Fix Skill
15
15
 
@@ -25,7 +25,7 @@ If no arguments, fix ALL issues found by `docguard diagnose`.
25
25
 
26
26
  ## Goal
27
27
 
28
- Research the actual codebase to generate or repair canonical documentation that passes DocGuard's 19-validator guard suite. This skill replaces generic templates with real, project-specific content and iterates until quality checks pass.
28
+ Research the actual codebase to generate or repair canonical documentation that passes DocGuard's configurable guard suite. This skill replaces generic templates with real, project-specific content and iterates until quality checks pass.
29
29
 
30
30
  ## Operating Constraints
31
31
 
@@ -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.36.0
10
+ version: 0.36.1
11
11
  source: extensions/spec-kit-docguard/skills/docguard-guard
12
12
  ---
13
- <!-- docguard:version: 0.36.0 -->
13
+ <!-- docguard:version: 0.36.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.36.0
9
+ version: 0.36.1
10
10
  source: extensions/spec-kit-docguard/skills/docguard-review
11
11
  ---
12
- <!-- docguard:version: 0.36.0 -->
12
+ <!-- docguard:version: 0.36.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.36.0
9
+ version: 0.36.1
10
10
  source: extensions/spec-kit-docguard/skills/docguard-score
11
11
  ---
12
- <!-- docguard:version: 0.36.0 -->
12
+ <!-- docguard:version: 0.36.1 -->
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.36.0
7
+ version: 0.36.1
8
8
  source: extensions/spec-kit-docguard/skills/docguard-sync
9
9
  ---
10
- <!-- docguard:version: 0.36.0 -->
10
+ <!-- docguard:version: 0.36.1 -->
11
11
 
12
12
  # DocGuard Sync Skill
13
13
 
@@ -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.36.0
38
+ run: npm install --global --ignore-scripts docguard-cli@0.36.1
39
39
 
40
40
  - name: Run DocGuard
41
41
  shell: bash
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "docguard-cli",
3
- "version": "0.36.0",
3
+ "version": "0.36.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "docguard-cli",
9
- "version": "0.36.0",
9
+ "version": "0.36.1",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "@babel/parser": "7.29.8"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "docguard-cli",
3
- "version": "0.36.0",
3
+ "version": "0.36.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.36.0"
7
+ version = "0.36.1"
8
8
  description = "The enforcement tool for Canonical-Driven Development (CDD). Audit, generate, and guard your project documentation. No Python dependencies (requires Node.js 18+)."
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -3,7 +3,7 @@
3
3
  "name": "io.github.raccioly/docguard",
4
4
  "title": "DocGuard",
5
5
  "description": "Deterministic doc-drift detection: guard, score, explain, verify-claims and diagnose MCP tools.",
6
- "version": "0.36.0",
6
+ "version": "0.36.1",
7
7
  "websiteUrl": "https://github.com/raccioly/docguard#readme",
8
8
  "repository": {
9
9
  "url": "https://github.com/raccioly/docguard",
@@ -14,7 +14,7 @@
14
14
  "registryType": "npm",
15
15
  "registryBaseUrl": "https://registry.npmjs.org",
16
16
  "identifier": "docguard-cli",
17
- "version": "0.36.0",
17
+ "version": "0.36.1",
18
18
  "runtimeHint": "npx",
19
19
  "transport": {
20
20
  "type": "stdio"
@@ -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.36.0
34
+ run: npm install --global --ignore-scripts docguard-cli@0.36.1
35
35
 
36
36
  - name: Run DocGuard
37
37
  shell: bash
@@ -0,0 +1,146 @@
1
+ import { describe, it } from 'node:test';
2
+ import { strict as assert } from 'node:assert';
3
+ import { chmodSync, existsSync, mkdirSync, mkdtempSync, readFileSync, realpathSync, rmSync, symlinkSync } from 'node:fs';
4
+ import { spawnSync } from 'node:child_process';
5
+ import { join } from 'node:path';
6
+ import { tmpdir } from 'node:os';
7
+ import { fileURLToPath } from 'node:url';
8
+ import { safeWrite } from '../cli/writers/generate-io.mjs';
9
+
10
+ const helper = fileURLToPath(new URL('../extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh', import.meta.url));
11
+ const scoreJSON = JSON.stringify({ score: 73 }, null, 2);
12
+ const guardJSON = (status = 'PASS', passed = 4, total = 5) => JSON.stringify({ status, passed, total }, null, 2);
13
+
14
+ // Execute a real Node CLI fixture through the shipped Bash helper. A closed PATH
15
+ // excludes host installs and turns any attempted npx download into a local trap.
16
+ function withProject(options, check) {
17
+ const temp = realpathSync(mkdtempSync(join(tmpdir(), 'docguard-helper-')));
18
+ try {
19
+ const root = join(temp, options.specialPath ? 'project spaces;$(touch INJECTED);\x60touch INJECTED\x60 "quote"' : 'project');
20
+ const bin = join(temp, 'bin');
21
+ const calls = join(temp, 'calls.jsonl');
22
+ mkdirSync(bin);
23
+ safeWrite(join(root, '.docguard.json'), '{}');
24
+ symlinkSync(process.execPath, join(bin, 'node'));
25
+ for (const name of ['dirname', 'basename', 'grep', 'sed', 'tr', 'head', 'cat', 'pwd', 'mktemp', 'rm']) {
26
+ const executable = ['/usr/bin/', '/bin/'].map(prefix => prefix + name).find(existsSync);
27
+ assert.ok(executable, name + ' must be available');
28
+ symlinkSync(executable, join(bin, name));
29
+ }
30
+ const fixture = [
31
+ "import { appendFileSync } from 'node:fs';",
32
+ 'const args = process.argv.slice(2);',
33
+ 'appendFileSync(process.env.CALLS, JSON.stringify({ args, cwd: process.cwd() }) + "\\n");',
34
+ 'if (args.length !== 3 || args[1] !== "--format" || args[2] !== "json") process.exit(91);',
35
+ 'if (args[0] === "score") { process.stdout.write(process.env.SCORE_JSON); process.exit(Number(process.env.SCORE_EXIT)); }',
36
+ 'if (args[0] === "guard") { process.stdout.write(process.env.GUARD_JSON); process.exit(Number(process.env.GUARD_EXIT)); }',
37
+ 'process.exit(92);',
38
+ ].join('\n');
39
+ if (options.install !== 'missing') {
40
+ safeWrite(join(root, options.install === 'package' ? 'node_modules/docguard-cli/cli/docguard.mjs' : 'cli/docguard.mjs'), fixture);
41
+ }
42
+ for (const name of ['npx', ...(options.global ? ['docguard', 'docguard-cli'] : [])]) {
43
+ const executable = join(bin, name);
44
+ safeWrite(executable, '#!/bin/sh\nprintf "%s\\n" "' + name + '" >> "$TRAPS"\nexit 93\n');
45
+ chmodSync(executable, 0o755);
46
+ }
47
+ const result = spawnSync('/bin/bash', [helper, '--json', '--verbose'], {
48
+ cwd: root,
49
+ encoding: 'utf8',
50
+ timeout: 10000,
51
+ env: {
52
+ PATH: bin, HOME: temp, TMPDIR: temp, CALLS: calls, TRAPS: join(temp, 'traps'),
53
+ SCORE_JSON: scoreJSON, SCORE_EXIT: '0', GUARD_JSON: guardJSON(), GUARD_EXIT: '0',
54
+ ...options.env,
55
+ },
56
+ });
57
+ assert.equal(result.error, undefined);
58
+ assert.equal(result.signal, null);
59
+ assert.equal(existsSync(join(temp, 'traps')), false, 'must not invoke global CLI or npx');
60
+ assert.equal(existsSync(join(root, 'INJECTED')), false, 'project path must remain literal');
61
+ assert.equal(existsSync(join(temp, 'INJECTED')), false, 'must not evaluate command substitutions');
62
+ check(result, root, existsSync(calls) ? readFileSync(calls, 'utf8').trim().split('\n').map(line => JSON.parse(line)) : []);
63
+ } finally {
64
+ rmSync(temp, { recursive: true, force: true });
65
+ }
66
+ }
67
+
68
+ function expectReport(result, root, calls, status) {
69
+ assert.equal(result.status, 0, result.stdout + result.stderr);
70
+ const report = JSON.parse(result.stdout);
71
+ assert.equal(report.projectRoot, root);
72
+ assert.deepEqual({ score: report.score, guardPass: report.guardPass, guardTotal: report.guardTotal, guardStatus: report.guardStatus },
73
+ { score: 73, guardPass: 4, guardTotal: 5, guardStatus: status });
74
+ assert.deepEqual(calls, ['score', 'guard'].map(command => ({ args: [command, '--format', 'json'], cwd: root })));
75
+ }
76
+
77
+ function expectFailure(result) {
78
+ assert.notEqual(result.status, 0, result.stdout + result.stderr);
79
+ let report;
80
+ try { report = JSON.parse(result.stdout); } catch { return; }
81
+ assert.ok(report && typeof report === 'object' && !Array.isArray(report) && report.error,
82
+ 'failure must not emit a successful helper JSON report: ' + result.stdout);
83
+ for (const key of ['score', 'guardPass', 'guardTotal', 'guardStatus']) {
84
+ assert.equal(Object.hasOwn(report, key), false, 'failure must not include success field ' + key);
85
+ }
86
+ }
87
+
88
+ describe('Spec Kit helper JSON contract', () => {
89
+ for (const [status, exit] of [['PASS', 0], ['WARN', 2], ['FAIL', 1]]) {
90
+ it('reports pretty JSON ' + status + ' with helper exit zero', () => {
91
+ withProject({ env: { GUARD_JSON: guardJSON(status), GUARD_EXIT: String(exit) } },
92
+ (result, root, calls) => expectReport(result, root, calls, status));
93
+ });
94
+ }
95
+
96
+ for (const install of ['dev', 'package']) {
97
+ it('safely executes ' + install + ' CLI in a path with spaces and shell metacharacters', () => {
98
+ withProject({ install, specialPath: true }, (result, root, calls) => expectReport(result, root, calls, 'PASS'));
99
+ });
100
+ }
101
+
102
+ it('prefers installed project package over global executables', () => {
103
+ withProject({ install: 'package', global: true }, (result, root, calls) => expectReport(result, root, calls, 'PASS'));
104
+ });
105
+
106
+ it('fails without an installed CLI and never falls back to npx', () => {
107
+ withProject({ install: 'missing' }, (result, root, calls) => {
108
+ expectFailure(result);
109
+ assert.deepEqual(calls, []);
110
+ });
111
+ });
112
+
113
+ for (const value of ['', 'not JSON', '{"score":73', '{"score":73} trailing', '{}', 'null', '[]',
114
+ '{"score":"73"}', '{"score":null}', '{"score":true}', '{"score":-1}', '{"score":101}', '{"score":1e999}']) {
115
+ it('rejects invalid score ' + JSON.stringify(value), () => {
116
+ withProject({ env: { SCORE_JSON: value } }, expectFailure);
117
+ });
118
+ }
119
+
120
+ const invalidGuards = ['', 'not JSON', '{"status":"PASS","passed":4,"total":5', guardJSON() + ' trailing',
121
+ '{}', 'null', '[]', '{"status":"PASS","passed":4}', guardJSON('UNKNOWN'), guardJSON('pass'), guardJSON(null)];
122
+ for (const value of ['4', null, true, -1, 1.5]) {
123
+ invalidGuards.push(guardJSON('PASS', value, 5), guardJSON('PASS', 0, value));
124
+ }
125
+ invalidGuards.push(guardJSON('PASS', 6, 5), '{"status":"PASS","passed":1e999,"total":5}');
126
+ for (const value of invalidGuards) {
127
+ it('rejects invalid guard ' + JSON.stringify(value), () => {
128
+ withProject({ env: { GUARD_JSON: value } }, expectFailure);
129
+ });
130
+ }
131
+
132
+ for (const [status, validExit] of [['PASS', 0], ['WARN', 2], ['FAIL', 1]]) {
133
+ for (const exit of [0, 1, 2, 3, 127]) {
134
+ if (exit === validExit) continue;
135
+ it('rejects guard status ' + status + ' with exit ' + exit, () => {
136
+ withProject({ env: { GUARD_JSON: guardJSON(status), GUARD_EXIT: String(exit) } }, expectFailure);
137
+ });
138
+ }
139
+ }
140
+
141
+ for (const exit of [1, 2, 127]) {
142
+ it('rejects valid score JSON when score exits ' + exit, () => {
143
+ withProject({ env: { SCORE_EXIT: String(exit) } }, expectFailure);
144
+ });
145
+ }
146
+ });