docguard-cli 0.27.0__tar.gz → 0.28.0__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 (410) hide show
  1. {docguard_cli-0.27.0/extensions/spec-kit-docguard → docguard_cli-0.28.0/.agent}/skills/docguard-fix/SKILL.md +2 -2
  2. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/skills/docguard-guard/SKILL.md +2 -2
  3. {docguard_cli-0.27.0/extensions/spec-kit-docguard → docguard_cli-0.28.0/.agent}/skills/docguard-review/SKILL.md +2 -2
  4. {docguard_cli-0.27.0/extensions/spec-kit-docguard → docguard_cli-0.28.0/.agent}/skills/docguard-score/SKILL.md +2 -2
  5. {docguard_cli-0.27.0/extensions/spec-kit-docguard → docguard_cli-0.28.0/.agent}/skills/docguard-sync/SKILL.md +2 -2
  6. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.docguard.json +1 -1
  7. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/anatomy.md +24 -9
  8. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/buglog.json +314 -4
  9. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/cerebrum.md +9 -0
  10. docguard_cli-0.28.0/.wolf/hooks/_session.json +81 -0
  11. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/memory.md +64 -0
  12. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/token-ledger.json +164 -6
  13. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/CHANGELOG.md +51 -0
  14. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/PKG-INFO +4 -3
  15. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/README.md +3 -2
  16. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/ROADMAP.md +1 -0
  17. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/explain.mjs +8 -6
  18. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/guard.mjs +13 -7
  19. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/init.mjs +23 -1
  20. docguard_cli-0.28.0/cli/commands/sync-tests.mjs +272 -0
  21. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/sync.mjs +6 -0
  22. docguard_cli-0.28.0/cli/commands/verify.mjs +67 -0
  23. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/docguard.mjs +31 -3
  24. docguard_cli-0.28.0/cli/scanners/semantic-claims.mjs +154 -0
  25. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/api-surface.mjs +75 -9
  26. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/architecture.mjs +25 -13
  27. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/extension.yml +1 -1
  28. {docguard_cli-0.27.0/.agent → docguard_cli-0.28.0/extensions/spec-kit-docguard}/skills/docguard-fix/SKILL.md +2 -2
  29. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/skills/docguard-guard/SKILL.md +2 -2
  30. {docguard_cli-0.27.0/.agent → docguard_cli-0.28.0/extensions/spec-kit-docguard}/skills/docguard-review/SKILL.md +2 -2
  31. {docguard_cli-0.27.0/.agent → docguard_cli-0.28.0/extensions/spec-kit-docguard}/skills/docguard-score/SKILL.md +2 -2
  32. {docguard_cli-0.27.0/.agent → docguard_cli-0.28.0/extensions/spec-kit-docguard}/skills/docguard-sync/SKILL.md +2 -2
  33. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/package-lock.json +2 -2
  34. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/package.json +1 -1
  35. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/pyproject.toml +1 -1
  36. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/ENVIRONMENT.md.template +5 -0
  37. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/REQUIREMENTS.md.template +2 -0
  38. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/SECURITY.md.template +6 -1
  39. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/TEST-SPEC.md.template +5 -0
  40. docguard_cli-0.28.0/tests/field-report-3-deferred.test.mjs +240 -0
  41. docguard_cli-0.27.0/.wolf/hooks/_session.json +0 -18
  42. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/commands/docguard.fix.md +0 -0
  43. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/commands/docguard.guard.md +0 -0
  44. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/commands/docguard.review.md +0 -0
  45. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/commands/docguard.score.md +0 -0
  46. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/commands/speckit.analyze.md +0 -0
  47. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/commands/speckit.checklist.md +0 -0
  48. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/commands/speckit.clarify.md +0 -0
  49. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/commands/speckit.constitution.md +0 -0
  50. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/commands/speckit.implement.md +0 -0
  51. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/commands/speckit.plan.md +0 -0
  52. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/commands/speckit.specify.md +0 -0
  53. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/commands/speckit.tasks.md +0 -0
  54. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/commands/speckit.taskstoissues.md +0 -0
  55. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/skills/speckit-analyze/SKILL.md +0 -0
  56. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/skills/speckit-checklist/SKILL.md +0 -0
  57. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/skills/speckit-clarify/SKILL.md +0 -0
  58. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/skills/speckit-constitution/SKILL.md +0 -0
  59. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/skills/speckit-implement/SKILL.md +0 -0
  60. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/skills/speckit-plan/SKILL.md +0 -0
  61. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/skills/speckit-specify/SKILL.md +0 -0
  62. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/skills/speckit-tasks/SKILL.md +0 -0
  63. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.agent/skills/speckit-taskstoissues/SKILL.md +0 -0
  64. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.claude/rules/openwolf.md +0 -0
  65. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.claude/settings.json +0 -0
  66. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.docguardignore +0 -0
  67. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  68. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.github/ISSUE_TEMPLATE/docguard-feedback.md +0 -0
  69. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  70. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.github/dependabot.yml +0 -0
  71. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.github/scripts/speckit-submission.py +0 -0
  72. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.github/workflows/ci.yml +0 -0
  73. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.github/workflows/release.yml +0 -0
  74. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.github/workflows/supply-chain.yml +0 -0
  75. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.github/workflows/sync-speckit-catalog.yml +0 -0
  76. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.gitignore +0 -0
  77. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.jules/bolt.md +0 -0
  78. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.jules/palette.md +0 -0
  79. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.jules/sentinel.md +0 -0
  80. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.jules-setup.sh +0 -0
  81. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.npmignore +0 -0
  82. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.npmrc +0 -0
  83. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.specify/extensions/.cache/catalog-ebf165086500aab1-metadata.json +0 -0
  84. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.specify/extensions/.cache/catalog-ebf165086500aab1.json +0 -0
  85. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.specify/extensions/.cache/catalog-metadata.json +0 -0
  86. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.specify/extensions/.cache/catalog.json +0 -0
  87. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.specify/init-options.json +0 -0
  88. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.specify/memory/constitution.md +0 -0
  89. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.specify/scripts/bash/check-prerequisites.sh +0 -0
  90. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.specify/scripts/bash/common.sh +0 -0
  91. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.specify/scripts/bash/create-new-feature.sh +0 -0
  92. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.specify/scripts/bash/setup-plan.sh +0 -0
  93. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.specify/scripts/bash/update-agent-context.sh +0 -0
  94. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.specify/templates/agent-file-template.md +0 -0
  95. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.specify/templates/checklist-template.md +0 -0
  96. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.specify/templates/constitution-template.md +0 -0
  97. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.specify/templates/plan-template.md +0 -0
  98. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.specify/templates/spec-template.md +0 -0
  99. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.specify/templates/tasks-template.md +0 -0
  100. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/OPENWOLF.md +0 -0
  101. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/config.json +0 -0
  102. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/cron-manifest.json +0 -0
  103. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/cron-state.json +0 -0
  104. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/daemon.log +0 -0
  105. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/designqc-report.json +0 -0
  106. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/hooks/_wrap_up_nudged +0 -0
  107. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/hooks/package.json +0 -0
  108. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/hooks/post-read.js +0 -0
  109. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/hooks/post-write.js +0 -0
  110. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/hooks/pre-read.js +0 -0
  111. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/hooks/pre-write.js +0 -0
  112. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/hooks/session-start.js +0 -0
  113. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/hooks/shared.js +0 -0
  114. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/hooks/stop.js +0 -0
  115. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/identity.md +0 -0
  116. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/reframe-frameworks.md +0 -0
  117. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/.wolf/suggestions.json +0 -0
  118. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/AGENTS.md +0 -0
  119. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/CLAUDE.md +0 -0
  120. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/CODE_OF_CONDUCT.md +0 -0
  121. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/COMPARISONS.md +0 -0
  122. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/CONTRIBUTING.md +0 -0
  123. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/DRIFT-LOG.md +0 -0
  124. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/LICENSE +0 -0
  125. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/PHILOSOPHY.md +0 -0
  126. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/SECURITY.md +0 -0
  127. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/STANDARD.md +0 -0
  128. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/SUPPLY-CHAIN-AUDIT.md +0 -0
  129. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/SUPPORT.md +0 -0
  130. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/action.yml +0 -0
  131. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/assets/bin/docguard +0 -0
  132. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/assets/demo.gif +0 -0
  133. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/assets/demo.tape +0 -0
  134. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/assets/docguard-logo.png +0 -0
  135. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/agent.mjs +0 -0
  136. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/agents.mjs +0 -0
  137. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/badge.mjs +0 -0
  138. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/ci.mjs +0 -0
  139. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/demo.mjs +0 -0
  140. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/diagnose.mjs +0 -0
  141. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/diff.mjs +0 -0
  142. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/feedback.mjs +0 -0
  143. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/fix.mjs +0 -0
  144. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/generate.mjs +0 -0
  145. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/hooks.mjs +0 -0
  146. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/impact.mjs +0 -0
  147. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/llms.mjs +0 -0
  148. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/memory.mjs +0 -0
  149. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/publish.mjs +0 -0
  150. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/score.mjs +0 -0
  151. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/setup.mjs +0 -0
  152. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/trace.mjs +0 -0
  153. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/upgrade.mjs +0 -0
  154. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/commands/watch.mjs +0 -0
  155. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/config.mjs +0 -0
  156. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/ensure-skills.mjs +0 -0
  157. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/findings.mjs +0 -0
  158. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/scanners/api-doc.mjs +0 -0
  159. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/scanners/cdk.mjs +0 -0
  160. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/scanners/doc-tools.mjs +0 -0
  161. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/scanners/frontend.mjs +0 -0
  162. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/scanners/iac.mjs +0 -0
  163. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/scanners/integrations.mjs +0 -0
  164. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/scanners/inventory.mjs +0 -0
  165. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/scanners/js-ast.mjs +0 -0
  166. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/scanners/memory-plan.mjs +0 -0
  167. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/scanners/project-type.mjs +0 -0
  168. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/scanners/py-ast.mjs +0 -0
  169. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/scanners/routes.mjs +0 -0
  170. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/scanners/schemas.mjs +0 -0
  171. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/scanners/speckit.mjs +0 -0
  172. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/shared-git.mjs +0 -0
  173. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/shared-ignore.mjs +0 -0
  174. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/shared-source.mjs +0 -0
  175. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/shared-trace-patterns.mjs +0 -0
  176. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/shared.mjs +0 -0
  177. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validator-markers.mjs +0 -0
  178. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/canonical-sync.mjs +0 -0
  179. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/changelog.mjs +0 -0
  180. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/cross-reference.mjs +0 -0
  181. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/doc-quality.mjs +0 -0
  182. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/docs-coverage.mjs +0 -0
  183. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/docs-diff.mjs +0 -0
  184. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/docs-sync.mjs +0 -0
  185. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/drift.mjs +0 -0
  186. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/environment.mjs +0 -0
  187. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/freshness.mjs +0 -0
  188. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/generated-staleness.mjs +0 -0
  189. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/metadata-sync.mjs +0 -0
  190. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/metrics-consistency.mjs +0 -0
  191. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/schema-sync.mjs +0 -0
  192. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/security.mjs +0 -0
  193. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/spec-kit.mjs +0 -0
  194. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/structure.mjs +0 -0
  195. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/surface-sync.mjs +0 -0
  196. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/test-spec.mjs +0 -0
  197. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/todo-tracking.mjs +0 -0
  198. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/validators/traceability.mjs +0 -0
  199. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/writers/api-reference.mjs +0 -0
  200. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/writers/fix-memory.mjs +0 -0
  201. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/writers/mechanical.mjs +0 -0
  202. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/cli/writers/sections.mjs +0 -0
  203. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/commands/docguard.fix.md +0 -0
  204. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/commands/docguard.guard.md +0 -0
  205. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/commands/docguard.review.md +0 -0
  206. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/commands/docguard.score.md +0 -0
  207. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/configs/fastify.json +0 -0
  208. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/configs/generic.json +0 -0
  209. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/configs/nextjs.json +0 -0
  210. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/configs/python.json +0 -0
  211. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docguard_cli/__init__.py +0 -0
  212. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docguard_cli/wrapper.py +0 -0
  213. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docs/ai-integration.md +0 -0
  214. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docs/commands.md +0 -0
  215. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docs/configuration.md +0 -0
  216. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docs/doc-sections.md +0 -0
  217. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docs/faq.md +0 -0
  218. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docs/installation.md +0 -0
  219. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docs/profiles.md +0 -0
  220. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docs/quickstart.md +0 -0
  221. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docs-canonical/ARCHITECTURE.md +0 -0
  222. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docs-canonical/CI-RECIPES.md +0 -0
  223. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docs-canonical/DATA-MODEL.md +0 -0
  224. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docs-canonical/ENVIRONMENT.md +0 -0
  225. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docs-canonical/REQUIREMENTS.md +0 -0
  226. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docs-canonical/SECURITY.md +0 -0
  227. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docs-canonical/SURFACE-AUDIT.md +0 -0
  228. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docs-canonical/TEST-SPEC.md +0 -0
  229. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/docs-implementation/MIGRATION-v0.20.md +0 -0
  230. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/examples/01-express-api/README.md +0 -0
  231. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/examples/01-express-api/package.json +0 -0
  232. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/examples/01-express-api/server.js +0 -0
  233. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/examples/02-python-flask/README.md +0 -0
  234. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/examples/02-python-flask/app.py +0 -0
  235. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/examples/02-python-flask/docs-canonical/ARCHITECTURE.md +0 -0
  236. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/examples/02-python-flask/requirements.txt +0 -0
  237. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/examples/03-spec-kit-project/CHANGELOG.md +0 -0
  238. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/examples/03-spec-kit-project/README.md +0 -0
  239. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/examples/03-spec-kit-project/docs-canonical/ARCHITECTURE.md +0 -0
  240. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/examples/03-spec-kit-project/docs-canonical/TEST-SPEC.md +0 -0
  241. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/examples/03-spec-kit-project/package.json +0 -0
  242. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/examples/03-spec-kit-project/src/index.js +0 -0
  243. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/examples/03-spec-kit-project/tasks.json +0 -0
  244. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/examples/03-spec-kit-project/tests/basic.test.js +0 -0
  245. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/examples/README.md +0 -0
  246. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/LICENSE +0 -0
  247. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/README.md +0 -0
  248. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/commands/diagnose.md +0 -0
  249. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/commands/fix.md +0 -0
  250. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/commands/generate.md +0 -0
  251. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/commands/guard.md +0 -0
  252. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/commands/init.md +0 -0
  253. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/commands/score.md +0 -0
  254. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/commands/sync.md +0 -0
  255. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/commands/trace.md +0 -0
  256. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/scripts/bash/common.sh +0 -0
  257. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh +0 -0
  258. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/scripts/bash/docguard-init-doc.sh +0 -0
  259. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/scripts/bash/docguard-suggest-fix.sh +0 -0
  260. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/templates/extensions.yml +0 -0
  261. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/templates/github-workflows/docguard-autofix.yml +0 -0
  262. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/extensions/spec-kit-docguard/templates/github-workflows/docguard-guard.yml +0 -0
  263. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/pr_description.md +0 -0
  264. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/schemas/docguard-config.schema.json +0 -0
  265. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/specs/001-fix-ignore-validators/plan.md +0 -0
  266. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/specs/001-fix-ignore-validators/spec.md +0 -0
  267. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/specs/001-fix-ignore-validators/tasks.md +0 -0
  268. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/specs/002-fix-test-discovery/plan.md +0 -0
  269. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/specs/002-fix-test-discovery/spec.md +0 -0
  270. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/specs/002-fix-test-discovery/tasks.md +0 -0
  271. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/specs/003-v011-false-positives/plan.md +0 -0
  272. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/specs/003-v011-false-positives/spec.md +0 -0
  273. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/specs/003-v011-false-positives/tasks.md +0 -0
  274. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/specs/004-v020-env-var-false-negative/spec.md +0 -0
  275. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/specs/005-hugocross-next-bugs/spec.md +0 -0
  276. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/ADR.md.template +0 -0
  277. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/AGENTS.md.template +0 -0
  278. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/ARCHITECTURE.md.template +0 -0
  279. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/CHANGELOG.md.template +0 -0
  280. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/CURRENT-STATE.md.template +0 -0
  281. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/DATA-MODEL.md.template +0 -0
  282. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/DEPLOYMENT.md.template +0 -0
  283. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/DRIFT-LOG.md.template +0 -0
  284. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/KNOWN-GOTCHAS.md.template +0 -0
  285. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/ROADMAP.md.template +0 -0
  286. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/RUNBOOKS.md.template +0 -0
  287. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/TROUBLESHOOTING.md.template +0 -0
  288. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/VENDOR-BUGS.md.template +0 -0
  289. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/ci/github-actions.yml +0 -0
  290. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/commands/docguard.fix.md +0 -0
  291. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/commands/docguard.guard.md +0 -0
  292. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/commands/docguard.init.md +0 -0
  293. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/commands/docguard.review.md +0 -0
  294. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/commands/docguard.update.md +0 -0
  295. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/demo-fixture/.docguard.json +0 -0
  296. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/demo-fixture/.env.example +0 -0
  297. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/demo-fixture/AGENTS.md +0 -0
  298. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/demo-fixture/CHANGELOG.md +0 -0
  299. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/demo-fixture/DRIFT-LOG.md +0 -0
  300. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/demo-fixture/README.md +0 -0
  301. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/demo-fixture/docs-canonical/API-REFERENCE.md +0 -0
  302. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/demo-fixture/docs-canonical/ARCHITECTURE.md +0 -0
  303. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/demo-fixture/docs-canonical/DATA-MODEL.md +0 -0
  304. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/demo-fixture/docs-canonical/ENVIRONMENT.md +0 -0
  305. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/demo-fixture/docs-canonical/SECURITY.md +0 -0
  306. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/demo-fixture/docs-canonical/TEST-SPEC.md +0 -0
  307. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/demo-fixture/package.json +0 -0
  308. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/demo-fixture/src/api.mjs +0 -0
  309. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/demo-fixture/src/notifier.mjs +0 -0
  310. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/demo-fixture/src/scheduler.mjs +0 -0
  311. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/templates/demo-fixture/src/worker.mjs +0 -0
  312. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/test-draft.js +0 -0
  313. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/test-metrics.js +0 -0
  314. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/agent.test.mjs +0 -0
  315. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/anchor-autofix.test.mjs +0 -0
  316. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/api-doc.test.mjs +0 -0
  317. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/api-surface.test.mjs +0 -0
  318. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/api-write.test.mjs +0 -0
  319. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/architecture.test.mjs +0 -0
  320. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/b7-node-env-symmetry.test.mjs +0 -0
  321. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/backup-failure.test.mjs +0 -0
  322. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/canonical-sync.test.mjs +0 -0
  323. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/cdk-detection.test.mjs +0 -0
  324. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/changed-only-scoping.test.mjs +0 -0
  325. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/changed-only.test.mjs +0 -0
  326. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/changelog.test.mjs +0 -0
  327. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/commands.test.mjs +0 -0
  328. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/cross-reference.test.mjs +0 -0
  329. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/demo-command.test.mjs +0 -0
  330. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/doc-quality.test.mjs +0 -0
  331. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/doc-section-synonyms.test.mjs +0 -0
  332. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/docguardignore.test.mjs +0 -0
  333. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/docs-coverage.test.mjs +0 -0
  334. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/docs-diff.test.mjs +0 -0
  335. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/docs-sync.test.mjs +0 -0
  336. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/drift.test.mjs +0 -0
  337. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/ensure-skills-idempotent.test.mjs +0 -0
  338. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/env-schema-detection.test.mjs +0 -0
  339. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/environment.test.mjs +0 -0
  340. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/explain-coverage.test.mjs +0 -0
  341. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/field-report-2-cli.test.mjs +0 -0
  342. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/field-report-3.test.mjs +0 -0
  343. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/fix-memory.test.mjs +0 -0
  344. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/fix-suppression.test.mjs +0 -0
  345. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/fixture-projects.test.mjs +0 -0
  346. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/freshness.test.mjs +0 -0
  347. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/frontend-deep.test.mjs +0 -0
  348. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/frontend.test.mjs +0 -0
  349. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/generated-staleness.test.mjs +0 -0
  350. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/guard-classify.test.mjs +0 -0
  351. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/guard-no-throw.test.mjs +0 -0
  352. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/hooks.test.mjs +0 -0
  353. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/i18n.test.mjs +0 -0
  354. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/impact.test.mjs +0 -0
  355. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/init-smart-detection.test.mjs +0 -0
  356. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/integrations.test.mjs +0 -0
  357. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/inventory.test.mjs +0 -0
  358. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/js-ast.test.mjs +0 -0
  359. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/mechanical.test.mjs +0 -0
  360. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/memory-plan.test.mjs +0 -0
  361. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/metadata-sync.test.mjs +0 -0
  362. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/metrics-consistency.test.mjs +0 -0
  363. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/metrics-dedup.test.mjs +0 -0
  364. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/monorepo-scanning.test.mjs +0 -0
  365. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/multi-spec.test.mjs +0 -0
  366. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/npm-pack-smoke.test.mjs +0 -0
  367. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/openapi-parse-honesty.test.mjs +0 -0
  368. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/patch-0.11.2.test.mjs +0 -0
  369. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/plan-disk-cache.test.mjs +0 -0
  370. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/profile-flag.test.mjs +0 -0
  371. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/project-type.test.mjs +0 -0
  372. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/py-ast.test.mjs +0 -0
  373. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/regenerate-section.test.mjs +0 -0
  374. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/routes-express-mounts.test.mjs +0 -0
  375. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/routes-fastify.test.mjs +0 -0
  376. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/routes-multilang.test.mjs +0 -0
  377. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/routes-nextjs-app-router.test.mjs +0 -0
  378. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/schema-sync.test.mjs +0 -0
  379. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/schemas-multilang.test.mjs +0 -0
  380. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/schemas.test.mjs +0 -0
  381. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/scoping-extended.test.mjs +0 -0
  382. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/score-suggestions.test.mjs +0 -0
  383. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/section-na-markers.test.mjs +0 -0
  384. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/sections.test.mjs +0 -0
  385. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/security-init-injection.test.mjs +0 -0
  386. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/security.test.mjs +0 -0
  387. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/severity.test.mjs +0 -0
  388. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/shared-git.test.mjs +0 -0
  389. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/shared-source.test.mjs +0 -0
  390. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/speckit-bugfix.test.mjs +0 -0
  391. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/starter-scaffold.test.mjs +0 -0
  392. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/stress-test.test.mjs +0 -0
  393. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/structure.test.mjs +0 -0
  394. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/surface-sync.test.mjs +0 -0
  395. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/sweep-nudge.test.mjs +0 -0
  396. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/sync-since.test.mjs +0 -0
  397. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/sync.test.mjs +0 -0
  398. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/test-spec.test.mjs +0 -0
  399. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/todo-tracking.test.mjs +0 -0
  400. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/trace-multilang.test.mjs +0 -0
  401. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/trace-reverse.test.mjs +0 -0
  402. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/traceability.test.mjs +0 -0
  403. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/upgrade-pr-e2e.test.mjs +0 -0
  404. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/upgrade-pr.test.mjs +0 -0
  405. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/upgrade.test.mjs +0 -0
  406. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/v020-consolidation.test.mjs +0 -0
  407. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/validator-markers.test.mjs +0 -0
  408. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/validator-naming.test.mjs +0 -0
  409. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/version-pin.test.mjs +0 -0
  410. {docguard_cli-0.27.0 → docguard_cli-0.28.0}/tests/whats-new.test.mjs +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.27.0
9
+ version: 0.28.0
10
10
  source: extensions/spec-kit-docguard/skills/docguard-fix
11
11
  ---
12
- <!-- docguard:version: 0.27.0 -->
12
+ <!-- docguard:version: 0.28.0 -->
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.27.0
10
+ version: 0.28.0
11
11
  source: extensions/spec-kit-docguard/skills/docguard-guard
12
12
  ---
13
- <!-- docguard:version: 0.27.0 -->
13
+ <!-- docguard:version: 0.28.0 -->
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.27.0
9
+ version: 0.28.0
10
10
  source: extensions/spec-kit-docguard/skills/docguard-review
11
11
  ---
12
- <!-- docguard:version: 0.27.0 -->
12
+ <!-- docguard:version: 0.28.0 -->
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.27.0
9
+ version: 0.28.0
10
10
  source: extensions/spec-kit-docguard/skills/docguard-score
11
11
  ---
12
- <!-- docguard:version: 0.27.0 -->
12
+ <!-- docguard:version: 0.28.0 -->
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.27.0
7
+ version: 0.28.0
8
8
  source: extensions/spec-kit-docguard/skills/docguard-sync
9
9
  ---
10
- <!-- docguard:version: 0.27.0 -->
10
+ <!-- docguard:version: 0.28.0 -->
11
11
 
12
12
  # DocGuard Sync Skill
13
13
 
@@ -49,7 +49,7 @@
49
49
  "extract": "basename-no-ext",
50
50
  "ignore": [
51
51
  "agents", "hooks", "ci", "badge", "llms", "publish",
52
- "setup", "impact"
52
+ "setup", "impact", "sync-tests"
53
53
  ],
54
54
  "docs": ["README.md"],
55
55
  "section": "Usage"
@@ -1,7 +1,7 @@
1
1
  # anatomy.md
2
2
 
3
- > Auto-maintained by OpenWolf. Last scanned: 2026-06-19T19:17:33.183Z
4
- > Files: 589 tracked | Anatomy hits: 0 | Misses: 0
3
+ > Auto-maintained by OpenWolf. Last scanned: 2026-06-22T23:13:16.336Z
4
+ > Files: 601 tracked | Anatomy hits: 0 | Misses: 0
5
5
 
6
6
  ## ../../../../../../../tmp/
7
7
 
@@ -9,7 +9,7 @@
9
9
 
10
10
  ## ./
11
11
 
12
- - `.docguard.json` (~522 tok)
12
+ - `.docguard.json` (~526 tok)
13
13
  - `.docguardignore` — # Python distribution artifacts (~199 tok)
14
14
  - `.DS_Store` (~3818 tok)
15
15
  - `.gitignore` — Git ignore rules (~167 tok)
@@ -18,7 +18,7 @@
18
18
  - `.npmrc` — Supply-Chain Security Hardening (~59 tok)
19
19
  - `action.yml` — CI: 'DocGuard — CDD Compliance' (~4322 tok)
20
20
  - `AGENTS.md` — AI Agent Instructions — DocGuard (~1275 tok)
21
- - `CHANGELOG.md` — Changelog (~40407 tok)
21
+ - `CHANGELOG.md` — Changelog (~41180 tok)
22
22
  - `CLAUDE.md` — OpenWolf (~57 tok)
23
23
  - `CODE_OF_CONDUCT.md` — Contributor Covenant Code of Conduct (~532 tok)
24
24
  - `COMPARISONS.md` — Comparisons & Honest Limitations (~3053 tok)
@@ -32,8 +32,8 @@
32
32
  - `PHILOSOPHY.md` — The Philosophy of Canonical-Driven Development (~1757 tok)
33
33
  - `pr_description.md` (~260 tok)
34
34
  - `pyproject.toml` — The enforcement tool for Canonical-Driven Development (CDD). Audit, generate, and guard your project (~351 tok)
35
- - `README.md` — Project documentation (~7411 tok)
36
- - `ROADMAP.md` — DocGuard Roadmap (~2193 tok)
35
+ - `README.md` — Project documentation (~7467 tok)
36
+ - `ROADMAP.md` — DocGuard Roadmap (~2349 tok)
37
37
  - `SECURITY.md` — Security Policy (~357 tok)
38
38
  - `STANDARD.md` — DocGuard Standard v0.1 (~6435 tok)
39
39
  - `SUPPLY-CHAIN-AUDIT.md` — Supply-Chain Security Audit (~726 tok)
@@ -942,7 +942,7 @@
942
942
  ## cli/
943
943
 
944
944
  - `config.mjs` — DocGuard — configuration loading. (~3265 tok)
945
- - `docguard.mjs` — DocGuard CLI — The enforcement tool for Canonical-Driven Development (CDD) (~8443 tok)
945
+ - `docguard.mjs` — DocGuard CLI — The enforcement tool for Canonical-Driven Development (CDD) (~8995 tok)
946
946
  - `findings.mjs` — Findings — the structured, LLM-addressable result unit (v0.27). (~2174 tok)
947
947
  - `shared-ignore.mjs` — Shared Ignore Utility — Unified file filtering for all validators. (~2780 tok)
948
948
  - `shared-source.mjs` — Shared Source Resolution — Monorepo-aware source discovery. (~4655 tok)
@@ -950,11 +950,15 @@
950
950
  ## cli/commands/
951
951
 
952
952
  - `agent.mjs` — `docguard agent` — the one-shot agent task graph. (~1644 tok)
953
- - `explain.mjs` — Explain Command — v0.16-P6. (~9022 tok)
953
+ - `explain.mjs` — Explain Command — v0.16-P6. (~9474 tok)
954
954
  - `feedback.mjs` — Feedback Command — close the loop with the tool's maintainers (v0.27). (~1920 tok)
955
955
  - `generate.mjs` — Generate Command — Reverse-engineer canonical docs from an existing codebase (~15364 tok)
956
- - `guard.mjs` — Guard Command — Validate project against its canonical documentation (~9556 tok)
956
+ - `guard.mjs` — Guard Command — Validate project against its canonical documentation (~9705 tok)
957
+ - `init.mjs` — Init Command — Initialize CDD documentation from templates (~7278 tok)
957
958
  - `score.mjs` — Score Command — Calculate CDD maturity score (0-100) (~11214 tok)
959
+ - `sync-tests.mjs` — `docguard sync --tests` — reconcile the TEST-SPEC Source-to-Test Map from disk. (~3191 tok)
960
+ - `sync.mjs` — Sync Command — keep the documentation memory ALWAYS UP TO DATE. (~2371 tok)
961
+ - `verify.mjs` — Verify Command — `docguard verify --semantic` (LLM field report #5). (~833 tok)
958
962
 
959
963
  ## cli/scanners/
960
964
 
@@ -962,9 +966,12 @@
962
966
  - `memory-plan.mjs` — Memory Plan — the orchestration artifact behind AI-powered Generate. (~5744 tok)
963
967
  - `project-type.mjs` — Project-Type Detection — the language-agnostic spine. (~4190 tok)
964
968
  - `routes.mjs` — Deep Route Scanner (~7712 tok)
969
+ - `semantic-claims.mjs` — Semantic claim extractor (LLM field report #5). (~1794 tok)
965
970
 
966
971
  ## cli/validators/
967
972
 
973
+ - `api-surface.mjs` — API-Surface Validator — Detects drift between the documented API surface (~4095 tok)
974
+ - `architecture.mjs` — Architecture Validator — Enhanced with automatic import analysis (~3558 tok)
968
975
  - `doc-quality.mjs` — Doc Quality Validator — Measures documentation writing quality (~6349 tok)
969
976
  - `freshness.mjs` — Freshness Validator — Check if documentation is stale relative to code changes. (~3462 tok)
970
977
  - `metrics-consistency.mjs` — Metrics Consistency Validator — Detects stale hardcoded numbers in docs. (~2714 tok)
@@ -979,11 +986,19 @@
979
986
 
980
987
  - `extension.yml` (~1026 tok)
981
988
 
989
+ ## templates/
990
+
991
+ - `ENVIRONMENT.md.template` — Environment & Configuration (~394 tok)
992
+ - `REQUIREMENTS.md.template` — Requirements (~632 tok)
993
+ - `SECURITY.md.template` — Security (~342 tok)
994
+ - `TEST-SPEC.md.template` — /*.ts --> | <!-- e.g. tests/unit/**/*.test.ts --> | Unit | (~771 tok)
995
+
982
996
  ## tests/
983
997
 
984
998
  - `agent.test.mjs` — Exports x (~1138 tok)
985
999
  - `commands.test.mjs` — DocGuard CLI Tests — Tests all commands and flags (~10304 tok)
986
1000
  - `ensure-skills-idempotent.test.mjs` — v0.24 — Skill install is idempotent (field report, Issue D). (~1133 tok)
1001
+ - `field-report-3-deferred.test.mjs` — v0.28 — the detection-gap items deferred from LLM field report #3. (~3122 tok)
987
1002
  - `field-report-3.test.mjs` — v0.27 — LLM field report #3. (~3315 tok)
988
1003
  - `freshness.test.mjs` — runGit: commitOldCode (~3536 tok)
989
1004
  - `inventory.test.mjs` — Declares make (~1048 tok)
@@ -1429,8 +1429,15 @@
1429
1429
  "file": "cli/validators/security.mjs",
1430
1430
  "root_cause": "The SEC password regex matches any quoted value 8+ chars after a password/passwd/pwd key, regardless of whether the value is natural-language copy vs an actual credential.",
1431
1431
  "fix": "Added looksLikeProse(value): a multi-word natural-language value downgrades the finding to a LOW-confidence, suppressible, reportable warning (not a blocking error). Still surfaced — no false-green. Implemented on the new findings architecture (cli/findings.mjs) with stable code SEC001.",
1432
- "tags": ["security", "false-positive", "findings", "field-report-3"],
1433
- "related_bugs": ["bug-087"],
1432
+ "tags": [
1433
+ "security",
1434
+ "false-positive",
1435
+ "findings",
1436
+ "field-report-3"
1437
+ ],
1438
+ "related_bugs": [
1439
+ "bug-087"
1440
+ ],
1434
1441
  "occurrences": 1,
1435
1442
  "last_seen": "2026-06-19T20:05:00.000Z"
1436
1443
  },
@@ -1441,10 +1448,313 @@
1441
1448
  "file": "cli/validators/security.mjs",
1442
1449
  "root_cause": "First cut of looksLikeProse treated ANY value ending in .!? as prose. Strong passwords commonly end in '!' — so a one-word secret was misclassified as natural language.",
1443
1450
  "fix": "Terminal punctuation alone no longer reclassifies a value: prose now requires >=3 words, OR a 2-word fragment ending in .!?. A single token like 'SuperSecretPassword!' stays a blocking error. The existing security test caught it.",
1444
- "tags": ["security", "heuristic", "regression", "self-caught"],
1445
- "related_bugs": ["bug-086"],
1451
+ "tags": [
1452
+ "security",
1453
+ "heuristic",
1454
+ "regression",
1455
+ "self-caught"
1456
+ ],
1457
+ "related_bugs": [
1458
+ "bug-086"
1459
+ ],
1446
1460
  "occurrences": 1,
1447
1461
  "last_seen": "2026-06-19T20:06:00.000Z"
1462
+ },
1463
+ {
1464
+ "id": "bug-088",
1465
+ "timestamp": "2026-06-22T21:27:36.030Z",
1466
+ "error_message": "Missing await",
1467
+ "file": "cli/validators/architecture.mjs",
1468
+ "root_cause": "Async call without await — returned Promise instead of value",
1469
+ "fix": "Added await to async call",
1470
+ "tags": [
1471
+ "auto-detected",
1472
+ "async-fix",
1473
+ "mjs"
1474
+ ],
1475
+ "related_bugs": [],
1476
+ "occurrences": 1,
1477
+ "last_seen": "2026-06-22T21:27:36.030Z"
1478
+ },
1479
+ {
1480
+ "id": "bug-089",
1481
+ "timestamp": "2026-06-22T21:27:51.814Z",
1482
+ "error_message": "Significant refactor of ",
1483
+ "file": "cli/validators/architecture.mjs",
1484
+ "root_cause": "6 lines replaced/restructured",
1485
+ "fix": "Rewrote 24→31 lines (6 removed)",
1486
+ "tags": [
1487
+ "auto-detected",
1488
+ "refactor",
1489
+ "mjs"
1490
+ ],
1491
+ "related_bugs": [],
1492
+ "occurrences": 1,
1493
+ "last_seen": "2026-06-22T21:27:51.814Z"
1494
+ },
1495
+ {
1496
+ "id": "bug-090",
1497
+ "timestamp": "2026-06-22T21:28:15.213Z",
1498
+ "error_message": "Wrong condition in logic",
1499
+ "file": "cli/validators/architecture.mjs",
1500
+ "root_cause": "Condition was: if (!imp.startsWith('.')",
1501
+ "fix": "Changed to: if (!spec.startsWith('.')",
1502
+ "tags": [
1503
+ "auto-detected",
1504
+ "logic-fix",
1505
+ "mjs"
1506
+ ],
1507
+ "related_bugs": [],
1508
+ "occurrences": 1,
1509
+ "last_seen": "2026-06-22T21:28:15.213Z"
1510
+ },
1511
+ {
1512
+ "id": "bug-091",
1513
+ "timestamp": "2026-06-22T21:32:49.288Z",
1514
+ "error_message": "Missing guard clause",
1515
+ "file": "cli/commands/init.mjs",
1516
+ "root_cause": "No early return/throw for edge case: h1 === -1",
1517
+ "fix": "Added guard clause: if (h1 === -1)",
1518
+ "tags": [
1519
+ "auto-detected",
1520
+ "guard-clause",
1521
+ "mjs"
1522
+ ],
1523
+ "related_bugs": [],
1524
+ "occurrences": 1,
1525
+ "last_seen": "2026-06-22T21:32:49.288Z"
1526
+ },
1527
+ {
1528
+ "id": "bug-092",
1529
+ "timestamp": "2026-06-22T21:33:09.031Z",
1530
+ "error_message": "Significant refactor of ",
1531
+ "file": "cli/commands/explain.mjs",
1532
+ "root_cause": "3 lines replaced/restructured",
1533
+ "fix": "Rewrote 11→12 lines (3 removed)",
1534
+ "tags": [
1535
+ "auto-detected",
1536
+ "refactor",
1537
+ "mjs"
1538
+ ],
1539
+ "related_bugs": [],
1540
+ "occurrences": 1,
1541
+ "last_seen": "2026-06-22T21:33:09.031Z"
1542
+ },
1543
+ {
1544
+ "id": "bug-093",
1545
+ "timestamp": "2026-06-22T21:36:02.265Z",
1546
+ "error_message": "Missing error handling in computeSpecVsRouteDrift",
1547
+ "file": "cli/validators/api-surface.mjs",
1548
+ "root_cause": "Code path had no error handling — exceptions would propagate uncaught",
1549
+ "fix": "Added try/catch block",
1550
+ "tags": [
1551
+ "auto-detected",
1552
+ "error-handling",
1553
+ "mjs"
1554
+ ],
1555
+ "related_bugs": [],
1556
+ "occurrences": 1,
1557
+ "last_seen": "2026-06-22T21:36:02.265Z"
1558
+ },
1559
+ {
1560
+ "id": "bug-094",
1561
+ "timestamp": "2026-06-22T21:36:20.504Z",
1562
+ "error_message": "Significant refactor of ",
1563
+ "file": "cli/validators/api-surface.mjs",
1564
+ "root_cause": "7 lines replaced/restructured",
1565
+ "fix": "Rewrote 13→33 lines (7 removed)",
1566
+ "tags": [
1567
+ "auto-detected",
1568
+ "refactor",
1569
+ "mjs"
1570
+ ],
1571
+ "related_bugs": [],
1572
+ "occurrences": 1,
1573
+ "last_seen": "2026-06-22T21:36:20.504Z"
1574
+ },
1575
+ {
1576
+ "id": "bug-095",
1577
+ "timestamp": "2026-06-22T21:38:26.085Z",
1578
+ "error_message": "Missing error handling in unknown",
1579
+ "file": "cli/commands/explain.mjs",
1580
+ "root_cause": "Code path had no error handling — exceptions would propagate uncaught",
1581
+ "fix": "Added try/catch block",
1582
+ "tags": [
1583
+ "auto-detected",
1584
+ "error-handling",
1585
+ "mjs"
1586
+ ],
1587
+ "related_bugs": [],
1588
+ "occurrences": 1,
1589
+ "last_seen": "2026-06-22T21:38:26.085Z"
1590
+ },
1591
+ {
1592
+ "id": "bug-096",
1593
+ "timestamp": "2026-06-22T21:42:14.555Z",
1594
+ "error_message": "Missing guard clause",
1595
+ "file": "cli/commands/sync.mjs",
1596
+ "root_cause": "No early return/throw for edge case: flags.tests",
1597
+ "fix": "Added guard clause: if (flags.tests)",
1598
+ "tags": [
1599
+ "auto-detected",
1600
+ "guard-clause",
1601
+ "mjs"
1602
+ ],
1603
+ "related_bugs": [],
1604
+ "occurrences": 1,
1605
+ "last_seen": "2026-06-22T21:42:14.555Z"
1606
+ },
1607
+ {
1608
+ "id": "bug-097",
1609
+ "timestamp": "2026-06-22T21:43:13.482Z",
1610
+ "error_message": "Significant refactor of ",
1611
+ "file": "cli/docguard.mjs",
1612
+ "root_cause": "3 lines replaced/restructured",
1613
+ "fix": "Rewrote 8→9 lines (3 removed)",
1614
+ "tags": [
1615
+ "auto-detected",
1616
+ "refactor",
1617
+ "mjs"
1618
+ ],
1619
+ "related_bugs": [],
1620
+ "occurrences": 1,
1621
+ "last_seen": "2026-06-22T21:43:13.482Z"
1622
+ },
1623
+ {
1624
+ "id": "bug-098",
1625
+ "timestamp": "2026-06-22T21:48:51.090Z",
1626
+ "error_message": "Significant refactor of ",
1627
+ "file": "cli/scanners/semantic-claims.mjs",
1628
+ "root_cause": "2 lines replaced/restructured",
1629
+ "fix": "Rewrote 3→5 lines (2 removed)",
1630
+ "tags": [
1631
+ "auto-detected",
1632
+ "refactor",
1633
+ "mjs"
1634
+ ],
1635
+ "related_bugs": [],
1636
+ "occurrences": 1,
1637
+ "last_seen": "2026-06-22T21:48:51.090Z"
1638
+ },
1639
+ {
1640
+ "id": "bug-099",
1641
+ "timestamp": "2026-06-22T21:57:40.130Z",
1642
+ "error_message": "Significant refactor of ",
1643
+ "file": "cli/commands/guard.mjs",
1644
+ "root_cause": "4 lines replaced/restructured",
1645
+ "fix": "Rewrote 9→14 lines (4 removed) | Also: if (data.effectiveErrors > 0) process.exit(1);; if (data.effectiveWarnings > 0) process.exit(2);",
1646
+ "tags": [
1647
+ "auto-detected",
1648
+ "refactor",
1649
+ "mjs"
1650
+ ],
1651
+ "related_bugs": [],
1652
+ "occurrences": 2,
1653
+ "last_seen": "2026-06-22T21:57:52.074Z"
1654
+ },
1655
+ {
1656
+ "id": "bug-100",
1657
+ "timestamp": "2026-06-22T23:12:27.938Z",
1658
+ "error_message": "Incorrect value in code",
1659
+ "file": "README.md",
1660
+ "root_cause": "Had \"Commands (16)\"",
1661
+ "fix": "Changed to \"Commands (17)\"",
1662
+ "tags": [
1663
+ "auto-detected",
1664
+ "wrong-value",
1665
+ "md"
1666
+ ],
1667
+ "related_bugs": [],
1668
+ "occurrences": 1,
1669
+ "last_seen": "2026-06-22T23:12:27.938Z"
1670
+ },
1671
+ {
1672
+ "id": "bug-101",
1673
+ "timestamp": "2026-06-22T23:12:41.080Z",
1674
+ "error_message": "Incorrect value in code",
1675
+ "file": "package.json",
1676
+ "root_cause": "Had \"0.27.0\"",
1677
+ "fix": "Changed to \"0.28.0\"",
1678
+ "tags": [
1679
+ "auto-detected",
1680
+ "wrong-value",
1681
+ "json"
1682
+ ],
1683
+ "related_bugs": [],
1684
+ "occurrences": 1,
1685
+ "last_seen": "2026-06-22T23:12:41.080Z"
1686
+ },
1687
+ {
1688
+ "id": "bug-102",
1689
+ "timestamp": "2026-06-22T23:12:44.341Z",
1690
+ "error_message": "Incorrect value in code",
1691
+ "file": "pyproject.toml",
1692
+ "root_cause": "Had \"0.27.0\"",
1693
+ "fix": "Changed to \"0.28.0\"",
1694
+ "tags": [
1695
+ "auto-detected",
1696
+ "wrong-value",
1697
+ "toml"
1698
+ ],
1699
+ "related_bugs": [],
1700
+ "occurrences": 1,
1701
+ "last_seen": "2026-06-22T23:12:44.341Z"
1702
+ },
1703
+ {
1704
+ "id": "bug-103",
1705
+ "timestamp": "2026-06-22T23:12:47.998Z",
1706
+ "error_message": "Incorrect value in code",
1707
+ "file": "extensions/spec-kit-docguard/extension.yml",
1708
+ "root_cause": "Had \"0.27.0\"",
1709
+ "fix": "Changed to \"0.28.0\"",
1710
+ "tags": [
1711
+ "auto-detected",
1712
+ "wrong-value",
1713
+ "yml"
1714
+ ],
1715
+ "related_bugs": [],
1716
+ "occurrences": 1,
1717
+ "last_seen": "2026-06-22T23:12:47.998Z"
1718
+ },
1719
+ {
1720
+ "id": "bug-104",
1721
+ "timestamp": "2026-06-22T23:13:08.031Z",
1722
+ "error_message": "Missing await",
1723
+ "file": "CHANGELOG.md",
1724
+ "root_cause": "Async call without await — returned Promise instead of value",
1725
+ "fix": "Added await to async call",
1726
+ "tags": [
1727
+ "auto-detected",
1728
+ "async-fix",
1729
+ "md"
1730
+ ],
1731
+ "related_bugs": [],
1732
+ "occurrences": 1,
1733
+ "last_seen": "2026-06-22T23:13:08.031Z"
1734
+ },
1735
+ {
1736
+ "id": "bug-105",
1737
+ "timestamp": "2026-06-22T23:40:00.000Z",
1738
+ "error_message": "Tests field-report-2-cli #1 and explain-coverage hook failed with 'Unterminated string in JSON at position 8178' when JSON.parse-ing `docguard guard --format json` stdout.",
1739
+ "file": "cli/commands/guard.mjs",
1740
+ "root_cause": "runGuard's JSON path did `console.log(JSON.stringify(data)) ; process.exit(code)`. A payload over ~8 KB written to a PIPE flushes asynchronously, so the immediate process.exit() truncated it mid-string. The repo's own report (7.3 KB) stayed under the boundary; a fixture's report (8.2 KB) crossed it. v0.28 additions to the guard JSON tipped this fixture over the edge, exposing the latent race. Writing to a FILE (synchronous) never reproduced it.",
1741
+ "fix": "Set `process.exitCode = code` and `process.stdout.write(json + '\\n')` then RETURN, instead of process.exit(). Node drains stdout and exits naturally with the code. Applied to both the JSON branch and the final text-path exit. Real CI-correctness bug: a >8 KB --format json report would be silently truncated for any pipe consumer.",
1742
+ "tags": ["guard", "json", "process-exit", "flush-race", "ci-correctness", "field-report-3"],
1743
+ "related_bugs": [],
1744
+ "occurrences": 1,
1745
+ "last_seen": "2026-06-22T23:40:00.000Z"
1746
+ },
1747
+ {
1748
+ "id": "bug-106",
1749
+ "timestamp": "2026-06-22T23:41:00.000Z",
1750
+ "error_message": "Architecture validator flagged a circular dependency that is broken at runtime by `await import()` (field report #2).",
1751
+ "file": "cli/validators/architecture.mjs",
1752
+ "root_cause": "extractImports lumped ES import, dynamic import(), and require() into one list feeding both graph.edges (layer checks) and graph.fileMap (cycle DFS). A dynamic import is NOT a load-time edge — it's the canonical cycle break — but was counted as one.",
1753
+ "fix": "extractImports now returns { spec, dynamic }. buildImportGraph records the dynamic flag on graph.edges but only pushes STATIC edges into fileMap (cycle adjacency). Cycle detection no longer sees dynamic edges; layer-boundary checks still do.",
1754
+ "tags": ["architecture", "import-cycle", "dynamic-import", "false-positive", "field-report-3"],
1755
+ "related_bugs": [],
1756
+ "occurrences": 1,
1757
+ "last_seen": "2026-06-22T23:41:00.000Z"
1448
1758
  }
1449
1759
  ]
1450
1760
  }
@@ -25,8 +25,17 @@
25
25
  - **`docguard feedback` (v0.27).** Local-first: writes `.docguard/feedback/<code>-<id>.json` (deterministic id via djb2 hash — no Date/random) + prints a prefilled GitHub issue URL CAPPED at 1800 chars and REDACTED (basename:line only, no literal values — security builds `redactedContext` that omits the matched value). Reuses the commit-3b600fd lesson (oversized URL overflows GitHub's ~8 KB limit). It's in `READ_ONLY_COMMANDS` (so it never scaffolds skills) even though it writes its own feedback dir.
26
26
  - **`score.mjs` can't be unit-tested with `{}`** — `runScoreInternal({})` throws (`calcStructureScore` reads `config.requiredFiles.canonical`). Extract testable seams instead: the test-runner detection is now `export function detectTestRunner(dir, config)` (recognizes vitest-in-vite.config via `vitest/config` import or a `test:` block, `scripts.test` runner names, and workspace-subdir configs). Pattern for future score tests: pull the unit out, don't feed the whole pipeline a half-config.
27
27
 
28
+ - **`verify --semantic` design (v0.28, `cli/scanners/semantic-claims.mjs` + `cli/commands/verify.mjs`).** DocGuard is zero-dependency and NEVER calls an LLM itself. So the semantic-drift check (field report #5 — documented numbers/enums vs code) is an EXTRACTOR, not an LLM call: `extractSemanticClaims` finds documented numbers-with-units (days/ms/req-s/GSIs/roles via `NUMBER_PATTERNS`) + enum lists (2+ UPPER_SNAKE in a status/state context) + the nearest cited code path (±1 line window), and `buildSemanticVerifyTasks` emits an agent task list. The agent running docguard does the comparison. Same division of labour as `docguard agent`. Precision-first: code-fenced numbers, version strings, and dates are excluded by design.
29
+ - **`sync --tests` safety scope (v0.28, `cli/commands/sync-tests.mjs`).** The TEST-SPEC Source-to-Test Map is HAND-maintained, so the reconciler does only two non-destructive ops: remove rows whose SOURCE file is gone, append co-located (`same dir` or sibling `__tests__/`) source↔test pairs absent from the table. Ghost TEST refs (source exists, test gone) are REPORTED, never auto-edited — blanking a curated status/notes cell is too destructive (the Test-Spec validator already warns). Pairing is co-located-only to avoid cross-directory basename collisions polluting the table.
30
+ - **Dynamic-import cycle handling (v0.28).** `architecture.mjs extractImports` now returns `{spec, dynamic}`. `graph.fileMap` (cycle DFS adjacency) gets STATIC edges only; `graph.edges` (layer checks) keeps all. A runtime `await import()` is the canonical cycle BREAK, not a load-time edge.
31
+ - **API-Surface spec-vs-route (v0.28).** When an OpenAPI spec exists it's the authoritative surface, so the API-REFERENCE doc reconciles against the SPEC — a phantom spec endpoint sails through. `computeSpecVsRouteDrift` diffs spec endpoints against `scanRoutesDeep` results (reusing `compareEndpoints` for method/path normalization), but ONLY when routes are scannable (`routes.length > 0`) — else it can't tell "no route" from "scanner blind" and would false-positive every endpoint.
32
+
28
33
  ## Do-Not-Repeat
29
34
 
35
+ - **2026-06-22** — A CLI command that emits machine output and exits must NOT `console.log(payload); process.exit(code)`. To a PIPE, a payload over ~8 KB flushes asynchronously and process.exit() truncates it mid-write → a consumer gets "Unterminated string in JSON". Use `process.exitCode = code` + `process.stdout.write(payload)` then `return` (Node drains stdout, exits naturally). Writing to a FILE is synchronous so it NEVER reproduces — you must test through a real pipe (spawnSync captures stdout via a pipe; that's why the test caught it and the manual file-redirect repro didn't). Fixed in guard.mjs; audit other `--format json` exits if touched.
36
+ - **2026-06-22** — When adding a new internal module under `cli/commands/` that is NOT a registered command (e.g. `sync-tests.mjs` backing `sync --tests`), add it to `.docguard.json` surfaceSync `commands.ignore` — else Surface-Sync flags it as "in code but missing from README" and Canonical-Sync miscounts "ships N commands". Real commands go in the README table + bump the count + the mermaid `Commands (N)`.
37
+
38
+
30
39
  - **2026-06-19** — A "prose vs secret" heuristic must NOT treat terminal punctuation alone as a prose signal. First cut of `looksLikeProse` flagged any value ending in `.!?` as natural language; strong passwords routinely end in `!` (`"SuperSecretPassword!"`), so a real one-token secret got downgraded to a low-confidence warning — the existing `security.test.mjs` caught it (2 errors → 1). Rule that works: prose = ≥3 words, OR a 2-word fragment ending in `.!?`. When adding a downgrade heuristic to a SECURITY check, bias toward keeping the error (a false-negative hides a secret) and write the test against a single-token-secret control.
31
40
  - **2026-06-19** — When adding a new `docguard` command, the repo guards ITSELF: Surface-Sync flags it missing from the README commands table and Canonical-Sync flags the "ships N commands" count + the architecture mermaid `Commands (N)`. Update all three (README prose count, README table, mermaid) in the same change or DocGuard's own guard fails. `feedback` made it 14 → 16 (there was a pre-existing 1-off; real count was already 15).
32
41
 
@@ -0,0 +1,81 @@
1
+ {
2
+ "session_id": "session-2026-06-22-1910",
3
+ "started": "2026-06-22T23:10:53.651Z",
4
+ "files_read": {
5
+ "/Users/ricardoaccioly/Repo_claude/canonical-spec-kit/.claude/worktrees/crazy-hofstadter-94c5a8/.docguard.json": {
6
+ "count": 1,
7
+ "tokens": 522,
8
+ "first_read": "2026-06-22T23:12:09.566Z"
9
+ }
10
+ },
11
+ "files_written": [
12
+ {
13
+ "file": "/Users/ricardoaccioly/Repo_claude/canonical-spec-kit/.claude/worktrees/crazy-hofstadter-94c5a8/.docguard.json",
14
+ "action": "edit",
15
+ "tokens": 56,
16
+ "at": "2026-06-22T23:12:16.721Z"
17
+ },
18
+ {
19
+ "file": "/Users/ricardoaccioly/Repo_claude/canonical-spec-kit/.claude/worktrees/crazy-hofstadter-94c5a8/README.md",
20
+ "action": "edit",
21
+ "tokens": 96,
22
+ "at": "2026-06-22T23:12:23.723Z"
23
+ },
24
+ {
25
+ "file": "/Users/ricardoaccioly/Repo_claude/canonical-spec-kit/.claude/worktrees/crazy-hofstadter-94c5a8/README.md",
26
+ "action": "edit",
27
+ "tokens": 20,
28
+ "at": "2026-06-22T23:12:27.937Z"
29
+ },
30
+ {
31
+ "file": "/Users/ricardoaccioly/Repo_claude/canonical-spec-kit/.claude/worktrees/crazy-hofstadter-94c5a8/README.md",
32
+ "action": "edit",
33
+ "tokens": 148,
34
+ "at": "2026-06-22T23:12:34.633Z"
35
+ },
36
+ {
37
+ "file": "/Users/ricardoaccioly/Repo_claude/canonical-spec-kit/.claude/worktrees/crazy-hofstadter-94c5a8/package.json",
38
+ "action": "edit",
39
+ "tokens": 7,
40
+ "at": "2026-06-22T23:12:41.079Z"
41
+ },
42
+ {
43
+ "file": "/Users/ricardoaccioly/Repo_claude/canonical-spec-kit/.claude/worktrees/crazy-hofstadter-94c5a8/pyproject.toml",
44
+ "action": "edit",
45
+ "tokens": 6,
46
+ "at": "2026-06-22T23:12:44.340Z"
47
+ },
48
+ {
49
+ "file": "/Users/ricardoaccioly/Repo_claude/canonical-spec-kit/.claude/worktrees/crazy-hofstadter-94c5a8/extensions/spec-kit-docguard/extension.yml",
50
+ "action": "edit",
51
+ "tokens": 6,
52
+ "at": "2026-06-22T23:12:47.997Z"
53
+ },
54
+ {
55
+ "file": "/Users/ricardoaccioly/Repo_claude/canonical-spec-kit/.claude/worktrees/crazy-hofstadter-94c5a8/CHANGELOG.md",
56
+ "action": "edit",
57
+ "tokens": 896,
58
+ "at": "2026-06-22T23:13:08.029Z"
59
+ },
60
+ {
61
+ "file": "/Users/ricardoaccioly/Repo_claude/canonical-spec-kit/.claude/worktrees/crazy-hofstadter-94c5a8/ROADMAP.md",
62
+ "action": "edit",
63
+ "tokens": 217,
64
+ "at": "2026-06-22T23:13:16.353Z"
65
+ }
66
+ ],
67
+ "edit_counts": {
68
+ ".docguard.json": 1,
69
+ "README.md": 3,
70
+ "package.json": 1,
71
+ "pyproject.toml": 1,
72
+ "extensions/spec-kit-docguard/extension.yml": 1,
73
+ "CHANGELOG.md": 1,
74
+ "ROADMAP.md": 1
75
+ },
76
+ "anatomy_hits": 1,
77
+ "anatomy_misses": 0,
78
+ "repeated_reads_warned": 0,
79
+ "cerebrum_warnings": 0,
80
+ "stop_count": 2
81
+ }