docguard-cli 0.35.0__tar.gz → 0.36.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 (501) hide show
  1. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.docguardignore +6 -0
  2. docguard_cli-0.36.0/.github/ISSUE_TEMPLATE/docguard-feedback.md +28 -0
  3. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.github/scripts/speckit-submission.py +5 -5
  4. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.github/workflows/ci.yml +40 -12
  5. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/buglog.json +302 -1
  6. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/cerebrum.md +4 -0
  7. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/AGENTS.md +5 -1
  8. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/CHANGELOG.md +34 -0
  9. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/CLAUDE.md +4 -0
  10. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/CONTRIBUTING.md +15 -0
  11. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/PKG-INFO +9 -16
  12. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/README.md +8 -15
  13. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/ROADMAP.md +5 -1
  14. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/VALIDATION.md +4 -5
  15. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/agent.mjs +27 -6
  16. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/ci.mjs +3 -0
  17. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/diagnose.mjs +8 -2
  18. docguard_cli-0.36.0/cli/commands/feedback.mjs +157 -0
  19. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/fix.mjs +4 -0
  20. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/generate.mjs +3 -0
  21. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/guard.mjs +37 -20
  22. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/hooks.mjs +61 -40
  23. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/init.mjs +51 -5
  24. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/memory.mjs +29 -15
  25. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/report.mjs +12 -7
  26. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/score.mjs +39 -19
  27. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/sync.mjs +2 -0
  28. docguard_cli-0.36.0/cli/commands/watch.mjs +186 -0
  29. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/config.mjs +6 -3
  30. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/docguard.mjs +12 -4
  31. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/findings.mjs +13 -13
  32. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/scanners/memory-plan.mjs +279 -134
  33. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/scanners/project-type.mjs +6 -1
  34. docguard_cli-0.36.0/cli/scanners/semantic-claims.mjs +312 -0
  35. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/shared-diff.mjs +22 -1
  36. docguard_cli-0.36.0/cli/shared-doc-roles.mjs +59 -0
  37. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/shared-ignore.mjs +15 -2
  38. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/shared-source.mjs +223 -1
  39. docguard_cli-0.36.0/cli/validator-coverage.mjs +20 -0
  40. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/api-surface.mjs +94 -70
  41. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/architecture.mjs +19 -5
  42. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/diff-suspicion.mjs +45 -9
  43. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/docs-coverage.mjs +6 -5
  44. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/docs-diff.mjs +51 -7
  45. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/environment.mjs +3 -2
  46. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/freshness.mjs +140 -83
  47. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/schema-sync.mjs +3 -2
  48. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/security.mjs +58 -23
  49. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/structure.mjs +3 -1
  50. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/test-spec.mjs +3 -2
  51. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/todo-tracking.mjs +61 -28
  52. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/traceability.mjs +152 -38
  53. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/docs/configuration.md +41 -0
  54. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/docs-canonical/ARCHITECTURE.md +7 -7
  55. docguard_cli-0.36.0/docs-canonical/CI-RECIPES.md +75 -0
  56. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/docs-canonical/DATA-MODEL.md +28 -12
  57. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/docs-canonical/ENVIRONMENT.md +3 -3
  58. docguard_cli-0.36.0/docs-canonical/REQUIREMENTS.md +39 -0
  59. docguard_cli-0.36.0/docs-canonical/SECURITY.md +83 -0
  60. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/docs-canonical/TEST-SPEC.md +23 -12
  61. docguard_cli-0.36.0/docs-implementation/PRECISION-VALIDATION.md +56 -0
  62. docguard_cli-0.36.0/docs-implementation/TRUST-ROADMAP.md +182 -0
  63. docguard_cli-0.36.0/docs-implementation/TRUST-VALIDATION.md +45 -0
  64. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/extension.yml +2 -3
  65. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/skills/docguard-fix/SKILL.md +2 -2
  66. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/skills/docguard-guard/SKILL.md +2 -2
  67. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/skills/docguard-review/SKILL.md +2 -2
  68. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/skills/docguard-score/SKILL.md +2 -2
  69. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/skills/docguard-sync/SKILL.md +2 -2
  70. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/templates/extensions.yml +1 -2
  71. docguard_cli-0.36.0/extensions/spec-kit-docguard/templates/github-workflows/docguard-guard.yml +93 -0
  72. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/package-lock.json +2 -2
  73. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/package.json +1 -1
  74. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/pyproject.toml +1 -1
  75. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/schemas/docguard-config.schema.json +43 -1
  76. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/server.json +2 -2
  77. docguard_cli-0.36.0/templates/ci/github-actions.yml +79 -0
  78. docguard_cli-0.36.0/tests/agent-evidence.test.mjs +274 -0
  79. docguard_cli-0.36.0/tests/api-authority-precision.test.mjs +127 -0
  80. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/api-write.test.mjs +21 -4
  81. docguard_cli-0.36.0/tests/catalog-submission.test.mjs +21 -0
  82. docguard_cli-0.36.0/tests/check-coverage.test.mjs +32 -0
  83. docguard_cli-0.36.0/tests/ci-reproducibility.test.mjs +193 -0
  84. docguard_cli-0.36.0/tests/ci-scaffolder.test.mjs +118 -0
  85. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/demo-command.test.mjs +35 -24
  86. docguard_cli-0.36.0/tests/doc-role-boundaries.test.mjs +164 -0
  87. docguard_cli-0.36.0/tests/doc-role-mapping.test.mjs +259 -0
  88. docguard_cli-0.36.0/tests/feedback-contributions.test.mjs +91 -0
  89. docguard_cli-0.36.0/tests/field-context-precision.test.mjs +136 -0
  90. docguard_cli-0.36.0/tests/field-diff-precision.test.mjs +226 -0
  91. docguard_cli-0.36.0/tests/field-review-clarity.test.mjs +256 -0
  92. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/freshness.test.mjs +82 -1
  93. docguard_cli-0.36.0/tests/hooks-contract.test.mjs +169 -0
  94. docguard_cli-0.36.0/tests/plan-disk-cache.test.mjs +528 -0
  95. docguard_cli-0.36.0/tests/route-field-precision.test.mjs +86 -0
  96. docguard_cli-0.36.0/tests/score-assurance.test.mjs +81 -0
  97. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/sweep-nudge.test.mjs +20 -15
  98. docguard_cli-0.36.0/tests/traceability-fixtures.test.mjs +112 -0
  99. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/traceability.test.mjs +2 -2
  100. docguard_cli-0.36.0/tests/watch-reliability.test.mjs +95 -0
  101. docguard_cli-0.36.0/tests/worker-python-capability.test.mjs +194 -0
  102. docguard_cli-0.35.0/.github/ISSUE_TEMPLATE/docguard-feedback.md +0 -26
  103. docguard_cli-0.35.0/cli/commands/feedback.mjs +0 -163
  104. docguard_cli-0.35.0/cli/commands/watch.mjs +0 -143
  105. docguard_cli-0.35.0/cli/scanners/semantic-claims.mjs +0 -162
  106. docguard_cli-0.35.0/docs-canonical/CI-RECIPES.md +0 -295
  107. docguard_cli-0.35.0/docs-canonical/REQUIREMENTS.md +0 -69
  108. docguard_cli-0.35.0/docs-canonical/SECURITY.md +0 -113
  109. docguard_cli-0.35.0/extensions/spec-kit-docguard/templates/github-workflows/docguard-guard.yml +0 -48
  110. docguard_cli-0.35.0/templates/ci/github-actions.yml +0 -39
  111. docguard_cli-0.35.0/tests/plan-disk-cache.test.mjs +0 -121
  112. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/commands/docguard.fix.md +0 -0
  113. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/commands/docguard.guard.md +0 -0
  114. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/commands/docguard.review.md +0 -0
  115. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/commands/docguard.score.md +0 -0
  116. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/commands/speckit.analyze.md +0 -0
  117. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/commands/speckit.checklist.md +0 -0
  118. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/commands/speckit.clarify.md +0 -0
  119. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/commands/speckit.constitution.md +0 -0
  120. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/commands/speckit.implement.md +0 -0
  121. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/commands/speckit.plan.md +0 -0
  122. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/commands/speckit.specify.md +0 -0
  123. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/commands/speckit.tasks.md +0 -0
  124. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/commands/speckit.taskstoissues.md +0 -0
  125. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/skills/docguard-fix/SKILL.md +0 -0
  126. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/skills/docguard-guard/SKILL.md +0 -0
  127. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/skills/docguard-review/SKILL.md +0 -0
  128. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/skills/docguard-score/SKILL.md +0 -0
  129. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/skills/docguard-sync/SKILL.md +0 -0
  130. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/skills/speckit-analyze/SKILL.md +0 -0
  131. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/skills/speckit-checklist/SKILL.md +0 -0
  132. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/skills/speckit-clarify/SKILL.md +0 -0
  133. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/skills/speckit-constitution/SKILL.md +0 -0
  134. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/skills/speckit-implement/SKILL.md +0 -0
  135. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/skills/speckit-plan/SKILL.md +0 -0
  136. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/skills/speckit-specify/SKILL.md +0 -0
  137. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/skills/speckit-tasks/SKILL.md +0 -0
  138. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.agent/skills/speckit-taskstoissues/SKILL.md +0 -0
  139. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.claude/rules/openwolf.md +0 -0
  140. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.claude/settings.json +0 -0
  141. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.docguard.json +0 -0
  142. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  143. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  144. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  145. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.github/dependabot.yml +0 -0
  146. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.github/workflows/auto-merge.yml +0 -0
  147. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.github/workflows/jules-triage.yml +0 -0
  148. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.github/workflows/release.yml +0 -0
  149. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.github/workflows/scheduled-release.yml +0 -0
  150. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.github/workflows/supply-chain.yml +0 -0
  151. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.github/workflows/sync-speckit-catalog.yml +0 -0
  152. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.gitignore +0 -0
  153. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.jules/bolt.md +0 -0
  154. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.jules/palette.md +0 -0
  155. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.jules/sentinel.md +0 -0
  156. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.jules-setup.sh +0 -0
  157. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.npmignore +0 -0
  158. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.npmrc +0 -0
  159. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.pre-commit-hooks.yaml +0 -0
  160. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.specify/extensions/.cache/catalog-ebf165086500aab1-metadata.json +0 -0
  161. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.specify/extensions/.cache/catalog-ebf165086500aab1.json +0 -0
  162. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.specify/extensions/.cache/catalog-metadata.json +0 -0
  163. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.specify/extensions/.cache/catalog.json +0 -0
  164. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.specify/init-options.json +0 -0
  165. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.specify/memory/constitution.md +0 -0
  166. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.specify/scripts/bash/check-prerequisites.sh +0 -0
  167. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.specify/scripts/bash/common.sh +0 -0
  168. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.specify/scripts/bash/create-new-feature.sh +0 -0
  169. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.specify/scripts/bash/setup-plan.sh +0 -0
  170. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.specify/scripts/bash/update-agent-context.sh +0 -0
  171. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.specify/templates/agent-file-template.md +0 -0
  172. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.specify/templates/checklist-template.md +0 -0
  173. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.specify/templates/constitution-template.md +0 -0
  174. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.specify/templates/plan-template.md +0 -0
  175. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.specify/templates/spec-template.md +0 -0
  176. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.specify/templates/tasks-template.md +0 -0
  177. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/OPENWOLF.md +0 -0
  178. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/anatomy.md +0 -0
  179. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/config.json +0 -0
  180. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/cron-manifest.json +0 -0
  181. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/cron-state.json +0 -0
  182. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/daemon.log +0 -0
  183. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/designqc-report.json +0 -0
  184. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/hooks/_session.json +0 -0
  185. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/hooks/_wrap_up_nudged +0 -0
  186. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/hooks/package.json +0 -0
  187. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/hooks/post-read.js +0 -0
  188. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/hooks/post-write.js +0 -0
  189. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/hooks/pre-read.js +0 -0
  190. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/hooks/pre-write.js +0 -0
  191. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/hooks/session-start.js +0 -0
  192. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/hooks/shared.js +0 -0
  193. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/hooks/stop.js +0 -0
  194. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/identity.md +0 -0
  195. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/memory.md +0 -0
  196. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/reframe-frameworks.md +0 -0
  197. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/suggestions.json +0 -0
  198. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/.wolf/token-ledger.json +0 -0
  199. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/CODE_OF_CONDUCT.md +0 -0
  200. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/COMPARISONS.md +0 -0
  201. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/DRIFT-LOG.md +0 -0
  202. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/Dockerfile +0 -0
  203. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/LICENSE +0 -0
  204. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/PHILOSOPHY.md +0 -0
  205. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/PRIVACY.md +0 -0
  206. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/README.es.md +0 -0
  207. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/README.pt-BR.md +0 -0
  208. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/SECURITY.md +0 -0
  209. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/STANDARD.md +0 -0
  210. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/SUPPLY-CHAIN-AUDIT.md +0 -0
  211. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/SUPPORT.md +0 -0
  212. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/action.yml +0 -0
  213. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/assets/bin/docguard +0 -0
  214. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/assets/demo.gif +0 -0
  215. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/assets/demo.tape +0 -0
  216. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/assets/docguard-logo.png +0 -0
  217. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/agents.mjs +0 -0
  218. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/badge.mjs +0 -0
  219. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/demo.mjs +0 -0
  220. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/diff.mjs +0 -0
  221. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/explain.mjs +0 -0
  222. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/impact.mjs +0 -0
  223. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/llms.mjs +0 -0
  224. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/mcp.mjs +0 -0
  225. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/publish.mjs +0 -0
  226. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/setup.mjs +0 -0
  227. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/sync-tests.mjs +0 -0
  228. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/trace.mjs +0 -0
  229. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/upgrade.mjs +0 -0
  230. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/commands/verify.mjs +0 -0
  231. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/ensure-skills.mjs +0 -0
  232. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/scanners/agent-readability.mjs +0 -0
  233. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/scanners/api-doc.mjs +0 -0
  234. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/scanners/cdk.mjs +0 -0
  235. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/scanners/doc-tools.mjs +0 -0
  236. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/scanners/frontend.mjs +0 -0
  237. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/scanners/iac.mjs +0 -0
  238. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/scanners/instruction-audit.mjs +0 -0
  239. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/scanners/integrations.mjs +0 -0
  240. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/scanners/inventory.mjs +0 -0
  241. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/scanners/js-ast.mjs +0 -0
  242. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/scanners/py-ast.mjs +0 -0
  243. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/scanners/routes.mjs +0 -0
  244. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/scanners/schemas.mjs +0 -0
  245. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/scanners/speckit.mjs +0 -0
  246. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/shared-git.mjs +0 -0
  247. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/shared-ir.mjs +0 -0
  248. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/shared-trace-patterns.mjs +0 -0
  249. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/shared.mjs +0 -0
  250. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validator-markers.mjs +0 -0
  251. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/api-doc-smells.mjs +0 -0
  252. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/canonical-sync.mjs +0 -0
  253. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/changelog.mjs +0 -0
  254. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/cross-reference.mjs +0 -0
  255. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/doc-quality.mjs +0 -0
  256. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/docs-sync.mjs +0 -0
  257. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/drift.mjs +0 -0
  258. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/generated-staleness.mjs +0 -0
  259. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/metadata-sync.mjs +0 -0
  260. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/metrics-consistency.mjs +0 -0
  261. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/reference-existence.mjs +0 -0
  262. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/spec-kit.mjs +0 -0
  263. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/validators/surface-sync.mjs +0 -0
  264. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/writers/api-reference.mjs +0 -0
  265. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/writers/baseline.mjs +0 -0
  266. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/writers/doc-generators.mjs +0 -0
  267. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/writers/fix-memory.mjs +0 -0
  268. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/writers/generate-io.mjs +0 -0
  269. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/writers/history.mjs +0 -0
  270. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/writers/junit.mjs +0 -0
  271. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/writers/mechanical.mjs +0 -0
  272. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/writers/sarif.mjs +0 -0
  273. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/cli/writers/sections.mjs +0 -0
  274. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/commands/docguard.fix.md +0 -0
  275. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/commands/docguard.guard.md +0 -0
  276. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/commands/docguard.review.md +0 -0
  277. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/commands/docguard.score.md +0 -0
  278. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/configs/fastify.json +0 -0
  279. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/configs/generic.json +0 -0
  280. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/configs/nextjs.json +0 -0
  281. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/configs/python.json +0 -0
  282. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/docguard_cli/__init__.py +0 -0
  283. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/docguard_cli/wrapper.py +0 -0
  284. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/docs/ai-integration.md +0 -0
  285. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/docs/commands.md +0 -0
  286. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/docs/doc-sections.md +0 -0
  287. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/docs/faq.md +0 -0
  288. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/docs/installation.md +0 -0
  289. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/docs/profiles.md +0 -0
  290. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/docs/quickstart.md +0 -0
  291. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/docs-canonical/SURFACE-AUDIT.md +0 -0
  292. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/docs-implementation/MIGRATION-v0.20.md +0 -0
  293. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/examples/01-express-api/README.md +0 -0
  294. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/examples/01-express-api/package.json +0 -0
  295. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/examples/01-express-api/server.js +0 -0
  296. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/examples/02-python-flask/README.md +0 -0
  297. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/examples/02-python-flask/app.py +0 -0
  298. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/examples/02-python-flask/docs-canonical/ARCHITECTURE.md +0 -0
  299. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/examples/02-python-flask/requirements.txt +0 -0
  300. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/examples/03-spec-kit-project/CHANGELOG.md +0 -0
  301. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/examples/03-spec-kit-project/README.md +0 -0
  302. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/examples/03-spec-kit-project/docs-canonical/ARCHITECTURE.md +0 -0
  303. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/examples/03-spec-kit-project/docs-canonical/TEST-SPEC.md +0 -0
  304. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/examples/03-spec-kit-project/package.json +0 -0
  305. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/examples/03-spec-kit-project/src/index.js +0 -0
  306. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/examples/03-spec-kit-project/tasks.json +0 -0
  307. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/examples/03-spec-kit-project/tests/basic.test.js +0 -0
  308. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/examples/README.md +0 -0
  309. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/LICENSE +0 -0
  310. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/README.md +0 -0
  311. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/commands/diagnose.md +0 -0
  312. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/commands/fix.md +0 -0
  313. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/commands/generate.md +0 -0
  314. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/commands/guard.md +0 -0
  315. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/commands/init.md +0 -0
  316. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/commands/score.md +0 -0
  317. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/commands/sync.md +0 -0
  318. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/commands/trace.md +0 -0
  319. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/scripts/bash/common.sh +0 -0
  320. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh +0 -0
  321. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/scripts/bash/docguard-init-doc.sh +0 -0
  322. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/scripts/bash/docguard-suggest-fix.sh +0 -0
  323. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/extensions/spec-kit-docguard/templates/github-workflows/docguard-autofix.yml +0 -0
  324. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/glama.json +0 -0
  325. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/llms-full.txt +0 -0
  326. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/llms.txt +0 -0
  327. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/mcpb/README.md +0 -0
  328. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/mcpb/manifest.template.json +0 -0
  329. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/packaging/homebrew/docguard.rb +0 -0
  330. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/packaging/submissions.md +0 -0
  331. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/smithery.yaml +0 -0
  332. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/specs/001-fix-ignore-validators/plan.md +0 -0
  333. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/specs/001-fix-ignore-validators/spec.md +0 -0
  334. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/specs/001-fix-ignore-validators/tasks.md +0 -0
  335. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/specs/002-fix-test-discovery/plan.md +0 -0
  336. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/specs/002-fix-test-discovery/spec.md +0 -0
  337. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/specs/002-fix-test-discovery/tasks.md +0 -0
  338. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/specs/003-v011-false-positives/plan.md +0 -0
  339. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/specs/003-v011-false-positives/spec.md +0 -0
  340. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/specs/003-v011-false-positives/tasks.md +0 -0
  341. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/specs/004-v020-env-var-false-negative/spec.md +0 -0
  342. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/specs/005-hugocross-next-bugs/spec.md +0 -0
  343. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/ADR.md.template +0 -0
  344. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/AGENTS.md.template +0 -0
  345. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/ARCHITECTURE.md.template +0 -0
  346. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/CHANGELOG.md.template +0 -0
  347. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/CURRENT-STATE.md.template +0 -0
  348. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/DATA-MODEL.md.template +0 -0
  349. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/DEPLOYMENT.md.template +0 -0
  350. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/DRIFT-LOG.md.template +0 -0
  351. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/ENVIRONMENT.md.template +0 -0
  352. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/KNOWN-GOTCHAS.md.template +0 -0
  353. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/REQUIREMENTS.md.template +0 -0
  354. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/ROADMAP.md.template +0 -0
  355. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/RUNBOOKS.md.template +0 -0
  356. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/SECURITY.md.template +0 -0
  357. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/TEST-SPEC.md.template +0 -0
  358. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/TROUBLESHOOTING.md.template +0 -0
  359. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/VENDOR-BUGS.md.template +0 -0
  360. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/ci/gitlab-component.yml +0 -0
  361. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/commands/docguard.fix.md +0 -0
  362. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/commands/docguard.guard.md +0 -0
  363. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/commands/docguard.init.md +0 -0
  364. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/commands/docguard.review.md +0 -0
  365. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/commands/docguard.update.md +0 -0
  366. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/demo-fixture/.docguard.json +0 -0
  367. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/demo-fixture/.env.example +0 -0
  368. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/demo-fixture/AGENTS.md +0 -0
  369. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/demo-fixture/CHANGELOG.md +0 -0
  370. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/demo-fixture/DRIFT-LOG.md +0 -0
  371. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/demo-fixture/README.md +0 -0
  372. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/demo-fixture/docs-canonical/API-REFERENCE.md +0 -0
  373. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/demo-fixture/docs-canonical/ARCHITECTURE.md +0 -0
  374. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/demo-fixture/docs-canonical/DATA-MODEL.md +0 -0
  375. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/demo-fixture/docs-canonical/ENVIRONMENT.md +0 -0
  376. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/demo-fixture/docs-canonical/SECURITY.md +0 -0
  377. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/demo-fixture/docs-canonical/TEST-SPEC.md +0 -0
  378. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/demo-fixture/package.json +0 -0
  379. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/demo-fixture/src/api.mjs +0 -0
  380. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/demo-fixture/src/notifier.mjs +0 -0
  381. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/demo-fixture/src/scheduler.mjs +0 -0
  382. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/templates/demo-fixture/src/worker.mjs +0 -0
  383. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/agent-readability.test.mjs +0 -0
  384. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/agent.test.mjs +0 -0
  385. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/agents-command.test.mjs +0 -0
  386. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/agents-sync.test.mjs +0 -0
  387. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/anchor-autofix.test.mjs +0 -0
  388. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/api-doc-smells.test.mjs +0 -0
  389. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/api-doc.test.mjs +0 -0
  390. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/api-surface.test.mjs +0 -0
  391. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/architecture.test.mjs +0 -0
  392. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/b7-node-env-symmetry.test.mjs +0 -0
  393. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/backup-failure.test.mjs +0 -0
  394. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/badge.test.mjs +0 -0
  395. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/baseline.test.mjs +0 -0
  396. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/canonical-docs-nested-phase2.test.mjs +0 -0
  397. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/canonical-docs-nested.test.mjs +0 -0
  398. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/canonical-sync.test.mjs +0 -0
  399. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/cdk-detection.test.mjs +0 -0
  400. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/changed-only-scoping.test.mjs +0 -0
  401. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/changed-only.test.mjs +0 -0
  402. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/changelog.test.mjs +0 -0
  403. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/commands.test.mjs +0 -0
  404. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/cross-reference.test.mjs +0 -0
  405. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/diff-suspicion.test.mjs +0 -0
  406. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/doc-quality.test.mjs +0 -0
  407. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/doc-section-synonyms.test.mjs +0 -0
  408. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/docguardignore.test.mjs +0 -0
  409. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/docs-coverage.test.mjs +0 -0
  410. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/docs-diff.test.mjs +0 -0
  411. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/docs-sync.test.mjs +0 -0
  412. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/drift.test.mjs +0 -0
  413. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/ensure-skills-idempotent.test.mjs +0 -0
  414. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/env-schema-detection.test.mjs +0 -0
  415. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/environment.test.mjs +0 -0
  416. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/explain-coverage.test.mjs +0 -0
  417. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/field-report-2-cli.test.mjs +0 -0
  418. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/field-report-3-deferred.test.mjs +0 -0
  419. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/field-report-3.test.mjs +0 -0
  420. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/fix-memory.test.mjs +0 -0
  421. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/fix-suppression.test.mjs +0 -0
  422. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/fixture-projects.test.mjs +0 -0
  423. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/frontend-deep.test.mjs +0 -0
  424. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/frontend.test.mjs +0 -0
  425. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/generate-io.test.mjs +0 -0
  426. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/generated-staleness.test.mjs +0 -0
  427. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/guard-classify.test.mjs +0 -0
  428. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/guard-no-throw.test.mjs +0 -0
  429. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/history.test.mjs +0 -0
  430. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/hooks.test.mjs +0 -0
  431. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/i18n.test.mjs +0 -0
  432. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/impact.test.mjs +0 -0
  433. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/init-smart-detection.test.mjs +0 -0
  434. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/instruction-audit.test.mjs +0 -0
  435. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/integrations.test.mjs +0 -0
  436. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/inventory.test.mjs +0 -0
  437. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/js-ast.test.mjs +0 -0
  438. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/junit.test.mjs +0 -0
  439. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/llms-full-pack.test.mjs +0 -0
  440. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/mcp-http.test.mjs +0 -0
  441. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/mcp.test.mjs +0 -0
  442. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/mechanical.test.mjs +0 -0
  443. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/memory-plan.test.mjs +0 -0
  444. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/metadata-sync.test.mjs +0 -0
  445. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/metrics-consistency.test.mjs +0 -0
  446. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/metrics-dedup.test.mjs +0 -0
  447. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/monorepo-scanning.test.mjs +0 -0
  448. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/multi-spec.test.mjs +0 -0
  449. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/npm-pack-smoke.test.mjs +0 -0
  450. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/nudge-hook.test.mjs +0 -0
  451. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/openapi-parse-honesty.test.mjs +0 -0
  452. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/patch-0.11.2.test.mjs +0 -0
  453. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/profile-flag.test.mjs +0 -0
  454. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/project-type.test.mjs +0 -0
  455. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/py-ast.test.mjs +0 -0
  456. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/reference-existence.test.mjs +0 -0
  457. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/regenerate-section.test.mjs +0 -0
  458. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/report.test.mjs +0 -0
  459. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/routes-express-mounts.test.mjs +0 -0
  460. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/routes-fastify.test.mjs +0 -0
  461. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/routes-multilang.test.mjs +0 -0
  462. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/routes-nextjs-app-router.test.mjs +0 -0
  463. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/sarif.test.mjs +0 -0
  464. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/schema-sync.test.mjs +0 -0
  465. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/schemas-multilang.test.mjs +0 -0
  466. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/schemas.test.mjs +0 -0
  467. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/scoping-extended.test.mjs +0 -0
  468. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/score-suggestions.test.mjs +0 -0
  469. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/section-na-markers.test.mjs +0 -0
  470. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/sections.test.mjs +0 -0
  471. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/security-init-injection.test.mjs +0 -0
  472. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/security.test.mjs +0 -0
  473. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/severity.test.mjs +0 -0
  474. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/shared-diff.test.mjs +0 -0
  475. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/shared-git.test.mjs +0 -0
  476. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/shared-ignore-functions.test.mjs +0 -0
  477. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/shared-ir.test.mjs +0 -0
  478. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/shared-source.test.mjs +0 -0
  479. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/speckit-bugfix.test.mjs +0 -0
  480. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/speckit-phantom.test.mjs +0 -0
  481. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/starter-scaffold.test.mjs +0 -0
  482. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/stress-test.test.mjs +0 -0
  483. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/structure.test.mjs +0 -0
  484. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/surface-sync.test.mjs +0 -0
  485. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/sync-since.test.mjs +0 -0
  486. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/sync.test.mjs +0 -0
  487. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/test-spec.test.mjs +0 -0
  488. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/todo-tracking.test.mjs +0 -0
  489. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/trace-features.test.mjs +0 -0
  490. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/trace-multilang.test.mjs +0 -0
  491. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/trace-reverse.test.mjs +0 -0
  492. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/traceability-ir.test.mjs +0 -0
  493. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/upgrade-pr-e2e.test.mjs +0 -0
  494. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/upgrade-pr.test.mjs +0 -0
  495. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/upgrade.test.mjs +0 -0
  496. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/v020-consolidation.test.mjs +0 -0
  497. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/validator-markers.test.mjs +0 -0
  498. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/validator-naming.test.mjs +0 -0
  499. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/verify-change-context.test.mjs +0 -0
  500. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/version-pin.test.mjs +0 -0
  501. {docguard_cli-0.35.0 → docguard_cli-0.36.0}/tests/whats-new.test.mjs +0 -0
@@ -38,3 +38,9 @@ templates/demo-fixture/**
38
38
  packaging/
39
39
  packaging/**
40
40
 
41
+
42
+ # Generated audit reports and probe templates are historical tool output, not product source.
43
+ websec-out/
44
+ websec-out/**
45
+ graphify-out/
46
+ graphify-out/**
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: DocGuard feedback (false positive / detection gap)
3
+ about: Contribute a synthetic reproduction of a disputed finding or missed defect.
4
+ title: "[feedback] <CODE>: <short description>"
5
+ labels: docguard-feedback
6
+ ---
7
+
8
+ - **DocGuard version:**
9
+ - **Runtime / operating system:**
10
+ - **Finding code / detector:**
11
+ - **Type:** false positive / missed defect / unsupported syntax / policy question
12
+ - **Existing open and closed issues/PRs checked:**
13
+
14
+ **Expected behavior**
15
+
16
+ **Actual behavior and exact command**
17
+
18
+ **Minimal synthetic reproduction**
19
+
20
+ Provide invented source and minimal configuration. Review all content before sharing. Full local feedback records can contain private paths and diagnostic text; do not attach them by default.
21
+
22
+ **Neighboring valid or invalid case**
23
+
24
+ What closely related example should still pass or fail after a fix?
25
+
26
+ **Contribution**
27
+
28
+ A report or a test-only contribution is welcome. See CONTRIBUTING.md, "Turn a finding into a regression test". No credentials or private source are required.
@@ -61,7 +61,7 @@ def build(version: str, download_url: str):
61
61
  "name": "DocGuard — CDD Enforcement",
62
62
  "id": "docguard",
63
63
  "description": (
64
- "The only doc-integrity engine with an MCP server, "
64
+ "A documentation-integrity engine with an MCP server, "
65
65
  "SARIF/JUnit output, and a deterministic zero-LLM core. "
66
66
  "Validates, scores, and traces documentation against code — "
67
67
  "27 validators, stable finding codes, adoption baseline for "
@@ -125,7 +125,7 @@ def build(version: str, download_url: str):
125
125
  ("tags", "Tags",
126
126
  "documentation, validation, quality, cdd, traceability, ai-agents, enforcement, spec-kit"),
127
127
  ("features", "Key Features",
128
- "- 19-validator quality gate with severity triage and a remediation plan\n"
128
+ "- Configurable quality gate with severity triage and a remediation plan\n"
129
129
  "- AI-driven documentation repair with codebase research and validation loops\n"
130
130
  "- Cross-document semantic consistency analysis (read-only review)\n"
131
131
  "- CDD maturity score with an ROI-based improvement roadmap\n"
@@ -134,10 +134,10 @@ def build(version: str, download_url: str):
134
134
  ("testing", "Testing Checklist", None),
135
135
  ("requirements", "Submission Requirements", None),
136
136
  ("testing-details", "Testing Details",
137
- "**Tested on:** Linux + macOS with the spec-kit CLI.\n\n"
137
+ "**Release verification:** Record the platforms and results actually tested before submission.\n\n"
138
138
  "**Install:**\n```bash\n"
139
139
  f"specify extension add docguard --from {download_url}\n```\n\n"
140
- "**Scenarios verified:**\n"
140
+ "**Scenarios to verify for this release:**\n"
141
141
  "1. Extension installs from the release ZIP without manifest validation errors.\n"
142
142
  "2. All six `speckit.docguard.*` commands resolve and run.\n"
143
143
  "3. The three workflow hooks register against spec-kit's lifecycle."),
@@ -179,7 +179,7 @@ def render_body(fields, checkbox_items) -> str:
179
179
  blocks = []
180
180
  for fid, label, value in fields:
181
181
  if value is None: # checkbox group
182
- ticked = "\n".join(f"- [x] {item}" for item in checkbox_items[fid])
182
+ ticked = "\n".join(f"- [ ] {item}" for item in checkbox_items[fid])
183
183
  blocks.append(f"### {label}\n\n{ticked}")
184
184
  else:
185
185
  blocks.append(f"### {label}\n\n{value}")
@@ -7,6 +7,9 @@ on:
7
7
  pull_request:
8
8
  branches: [main]
9
9
 
10
+ permissions:
11
+ contents: read
12
+
10
13
  jobs:
11
14
  test:
12
15
  runs-on: ubuntu-latest
@@ -20,11 +23,16 @@ jobs:
20
23
  node-version: [18, 20, 22, 24]
21
24
 
22
25
  steps:
23
- - uses: actions/checkout@v7
26
+ - name: Initialize report paths
27
+ shell: bash
28
+ run: |
29
+ echo "DOCGUARD_REPORT=$RUNNER_TEMP/docguard-report.json" >> "$GITHUB_ENV"
30
+
31
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
24
32
  with:
25
33
  fetch-depth: 0 # Full git history for freshness validator
26
34
 
27
- - uses: actions/setup-node@v7
35
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
28
36
  with:
29
37
  node-version: ${{ matrix.node-version }}
30
38
 
@@ -53,15 +61,16 @@ jobs:
53
61
  # on this gate existing. Normal: ~33s (node 24) to ~51s (node 18) on CI.
54
62
  # Budget is deliberately loose — it catches catastrophes, not jitter.
55
63
  - name: Run Tests (with runtime budget)
64
+ shell: bash
56
65
  env:
57
66
  TEST_BUDGET_MS: 120000
58
67
  run: |
59
68
  set -o pipefail
60
- npm test 2>&1 | tee /tmp/test-output.txt
61
- DURATION=$(grep -oE 'duration_ms [0-9]+' /tmp/test-output.txt | tail -1 | grep -oE '[0-9]+' | cut -d. -f1)
69
+ node --test --test-reporter=tap tests/*.test.mjs 2>&1 | tee /tmp/test-output.txt
70
+ DURATION=$(awk '/^# duration_ms [0-9]+/ { duration = int($3) } END { print duration }' /tmp/test-output.txt)
62
71
  if [ -z "$DURATION" ]; then
63
- echo "::warning::Could not parse test duration — skipping budget check"
64
- exit 0
72
+ echo "::error::Missing TAP suite duration — runtime budget could not be verified"
73
+ exit 1
65
74
  fi
66
75
  echo "Test suite duration: ${DURATION}ms (budget: ${TEST_BUDGET_MS}ms)"
67
76
  if [ "$DURATION" -gt "$TEST_BUDGET_MS" ]; then
@@ -75,9 +84,21 @@ jobs:
75
84
  run: node cli/docguard.mjs --version
76
85
 
77
86
  - name: Guard (self-check)
87
+ shell: bash
78
88
  run: |
79
89
  # Exit 0 = pass, Exit 1 = errors (fail CI), Exit 2 = warnings only (allow)
80
- node cli/docguard.mjs guard || [ $? -eq 2 ]
90
+ status=0
91
+ node cli/docguard.mjs guard --format json > "$DOCGUARD_REPORT" || status=$?
92
+ cat "$DOCGUARD_REPORT"
93
+ [ "$status" -eq 0 ] || [ "$status" -eq 2 ]
94
+
95
+ - name: Upload guard findings
96
+ if: always()
97
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
98
+ with:
99
+ name: docguard-report-node-${{ matrix.node-version }}
100
+ path: ${{ env.DOCGUARD_REPORT }}
101
+ if-no-files-found: warn
81
102
 
82
103
  - name: Score
83
104
  run: node cli/docguard.mjs score
@@ -113,13 +134,20 @@ jobs:
113
134
  python3 -c "import xml.etree.ElementTree as ET; r=ET.parse('/tmp/guard-junit.xml').getroot(); print('junit OK:', r.attrib)"
114
135
 
115
136
  - name: Baseline roundtrip (freeze → pass → restore)
137
+ shell: bash
116
138
  run: |
117
139
  mkdir -p /tmp/docguard-baseline && cd /tmp/docguard-baseline
118
140
  printf '{"projectName":"bl-ci","profile":"standard"}' > .docguard.json
119
141
  mkdir -p docs-canonical && echo "# Architecture" > docs-canonical/ARCHITECTURE.md
120
- node $GITHUB_WORKSPACE/cli/docguard.mjs guard --update-baseline
121
- node $GITHUB_WORKSPACE/cli/docguard.mjs guard # must exit 0 now
122
- node $GITHUB_WORKSPACE/cli/docguard.mjs guard --no-baseline || [ $? -ne 0 ]
142
+ node "$GITHUB_WORKSPACE/cli/docguard.mjs" guard --update-baseline
143
+ node "$GITHUB_WORKSPACE/cli/docguard.mjs" guard # must exit 0 now
144
+ status=0
145
+ node "$GITHUB_WORKSPACE/cli/docguard.mjs" guard --no-baseline || status=$?
146
+ # This incomplete standard-profile fixture has errors, not just warnings.
147
+ if [ "$status" -ne 1 ]; then
148
+ echo "::error::Expected guard --no-baseline to exit 1, got $status"
149
+ exit 1
150
+ fi
123
151
 
124
152
  # ── Cross-project tests ──
125
153
  - name: Init in temp dir
@@ -151,8 +179,8 @@ jobs:
151
179
  if: startsWith(github.ref, 'refs/tags/v')
152
180
  needs: test
153
181
  steps:
154
- - uses: actions/checkout@v7
155
- - uses: actions/setup-node@v7
182
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
183
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
156
184
  with:
157
185
  node-version: 20
158
186
  registry-url: 'https://registry.npmjs.org'
@@ -4809,6 +4809,307 @@
4809
4809
  "related_bugs": [],
4810
4810
  "occurrences": 1,
4811
4811
  "last_seen": "2026-09-11T16:33:44.539Z"
4812
+ },
4813
+ {
4814
+ "id": "bug-291",
4815
+ "timestamp": "2026-09-11T19:39:03.585Z",
4816
+ "error_message": "Source changes returned stale cached documentation plans",
4817
+ "file": "cli/scanners/memory-plan.mjs",
4818
+ "root_cause": "Cache identity relied on manifests and HEAD, missing source content",
4819
+ "fix": "Hash bounded relevant input content and scanner/config identity; fail closed on incomplete reads and publish atomically",
4820
+ "tags": [
4821
+ "cache",
4822
+ "stale-source"
4823
+ ],
4824
+ "related_bugs": [],
4825
+ "occurrences": 1,
4826
+ "last_seen": "2026-09-11T19:39:03.585Z"
4827
+ },
4828
+ {
4829
+ "id": "bug-292",
4830
+ "timestamp": "2026-09-11T19:39:03.585Z",
4831
+ "error_message": "Generated pre-push hook allowed an unparsed formatted score",
4832
+ "file": "cli/commands/hooks.mjs",
4833
+ "root_cause": "Compact JSON regex did not match real formatted command output",
4834
+ "fix": "Parse JSON with Node and block malformed output or unavailable runtime",
4835
+ "tags": [
4836
+ "hooks",
4837
+ "enforcement"
4838
+ ],
4839
+ "related_bugs": [],
4840
+ "occurrences": 1,
4841
+ "last_seen": "2026-09-11T19:39:03.585Z"
4842
+ },
4843
+ {
4844
+ "id": "bug-293",
4845
+ "timestamp": "2026-09-11T19:39:03.585Z",
4846
+ "error_message": "Requirement IDs inside test fixtures generated false orphan findings",
4847
+ "file": "cli/validators/traceability.mjs",
4848
+ "root_cause": "Generic source matching treated fixture strings as declarations",
4849
+ "fix": "Extract real comments and test labels with AST or scoped lexical fallback",
4850
+ "tags": [
4851
+ "traceability",
4852
+ "false-positive"
4853
+ ],
4854
+ "related_bugs": [],
4855
+ "occurrences": 1,
4856
+ "last_seen": "2026-09-11T19:39:03.585Z"
4857
+ },
4858
+ {
4859
+ "id": "bug-294",
4860
+ "timestamp": "2026-09-11T19:39:03.585Z",
4861
+ "error_message": "Freshness omitted configured nested documents and watcher errors escaped cleanup",
4862
+ "file": "cli/validators/freshness.mjs",
4863
+ "root_cause": "Narrow source/doc discovery and incomplete asynchronous lifecycle handling",
4864
+ "fix": "Expand scoped freshness inputs; batch history; reject future dates; coalesce watch work and clean up on errors",
4865
+ "tags": [
4866
+ "freshness",
4867
+ "watch"
4868
+ ],
4869
+ "related_bugs": [],
4870
+ "occurrences": 1,
4871
+ "last_seen": "2026-09-11T19:39:03.585Z"
4872
+ },
4873
+ {
4874
+ "id": "bug-295",
4875
+ "timestamp": "2026-09-11T19:39:03.585Z",
4876
+ "error_message": "Structural score and empty claim sets implied factual accuracy",
4877
+ "file": "cli/commands/score.mjs",
4878
+ "root_cause": "Structural proxies and absence of extracted claims were treated as verification",
4879
+ "fix": "Expose structural maturity separately and preserve null/unverified assurance across consumers",
4880
+ "tags": [
4881
+ "score",
4882
+ "assurance"
4883
+ ],
4884
+ "related_bugs": [],
4885
+ "occurrences": 1,
4886
+ "last_seen": "2026-09-11T19:39:03.585Z"
4887
+ },
4888
+ {
4889
+ "id": "bug-296",
4890
+ "timestamp": "2026-09-11T19:39:03.585Z",
4891
+ "error_message": "init --with ci executed a check instead of creating a workflow",
4892
+ "file": "cli/commands/init.mjs",
4893
+ "root_cause": "Scaffolder dispatcher called the standalone CI runner",
4894
+ "fix": "Copy the maintained template with preserve/force behavior and destination checks",
4895
+ "tags": [
4896
+ "init",
4897
+ "ci"
4898
+ ],
4899
+ "related_bugs": [],
4900
+ "occurrences": 1,
4901
+ "last_seen": "2026-09-11T19:39:03.585Z"
4902
+ },
4903
+ {
4904
+ "id": "bug-297",
4905
+ "timestamp": "2026-09-11T19:41:37.939Z",
4906
+ "error_message": "Disk cache promotion exceeded the entry bound and accepted malformed nested plans",
4907
+ "file": "cli/scanners/memory-plan.mjs",
4908
+ "root_cause": "Disk-hit insertion bypassed eviction and envelope validation omitted nested consumer shapes",
4909
+ "fix": "Use shared bounded insertion and validate cached plan shapes and depth before reuse",
4910
+ "tags": [
4911
+ "cache",
4912
+ "review"
4913
+ ],
4914
+ "related_bugs": [],
4915
+ "occurrences": 1,
4916
+ "last_seen": "2026-09-11T19:41:37.939Z"
4917
+ },
4918
+ {
4919
+ "id": "bug-298",
4920
+ "timestamp": "2026-09-11T19:41:37.939Z",
4921
+ "error_message": "Empty findings implied implementation correctness; unknown ALCOA rendered as failed",
4922
+ "file": "cli/commands/report.mjs",
4923
+ "root_cause": "Markdown presentation ignored assurance and unknown status",
4924
+ "fix": "Scope empty output to configured checks and preserve unverified ALCOA status",
4925
+ "tags": [
4926
+ "report",
4927
+ "assurance"
4928
+ ],
4929
+ "related_bugs": [],
4930
+ "occurrences": 1,
4931
+ "last_seen": "2026-09-11T19:41:37.939Z"
4932
+ },
4933
+ {
4934
+ "id": "bug-299",
4935
+ "timestamp": "2026-09-11T19:41:37.939Z",
4936
+ "error_message": "Feedback reported saved file paths after persistence failed",
4937
+ "file": "cli/commands/feedback.mjs",
4938
+ "root_cause": "JSON emitted before writes and errors were swallowed",
4939
+ "fix": "Persist first; expose saved/error per record; null unsaved file and exit 1 on failure",
4940
+ "tags": [
4941
+ "feedback",
4942
+ "io"
4943
+ ],
4944
+ "related_bugs": [],
4945
+ "occurrences": 1,
4946
+ "last_seen": "2026-09-11T19:41:37.939Z"
4947
+ },
4948
+ {
4949
+ "id": "bug-300",
4950
+ "timestamp": "2026-09-11T19:42:37.776Z",
4951
+ "error_message": "Workflow expression scope was invalid and baseline restoration assertion accepted every status",
4952
+ "file": ".github/workflows/ci.yml",
4953
+ "root_cause": "runner.temp used at job env scope; shell OR expression treated any failure as expected",
4954
+ "fix": "Move report paths into supported step contexts and assert the expected baseline-restored exit status with executable regression coverage",
4955
+ "tags": [
4956
+ "ci",
4957
+ "review",
4958
+ "templates"
4959
+ ],
4960
+ "related_bugs": [],
4961
+ "occurrences": 1,
4962
+ "last_seen": "2026-09-11T19:42:37.776Z"
4963
+ },
4964
+ {
4965
+ "id": "bug-301",
4966
+ "timestamp": "2026-09-11T20:42:23.164Z",
4967
+ "error_message": "OpenAPI omissions attributed to missing implementation",
4968
+ "file": "cli/validators/api-surface.mjs",
4969
+ "root_cause": "Contract evidence was treated as code evidence",
4970
+ "fix": "Cross-check extracted code routes, identify authority, and refuse removal when the route exists or code evidence is unavailable",
4971
+ "tags": [
4972
+ "precision",
4973
+ "regression"
4974
+ ],
4975
+ "related_bugs": [],
4976
+ "occurrences": 1,
4977
+ "last_seen": "2026-09-11T20:42:23.164Z"
4978
+ },
4979
+ {
4980
+ "id": "bug-302",
4981
+ "timestamp": "2026-09-11T20:42:23.164Z",
4982
+ "error_message": "Formatting-only edits produced deletion review noise",
4983
+ "file": "cli/validators/diff-suspicion.mjs",
4984
+ "root_cause": "Removed tokens were not compared with reintroduced tokens or syntax-equivalent code",
4985
+ "fix": "Compare additions and AST equivalence while preserving genuinely removed declarations",
4986
+ "tags": [
4987
+ "precision",
4988
+ "regression"
4989
+ ],
4990
+ "related_bugs": [],
4991
+ "occurrences": 1,
4992
+ "last_seen": "2026-09-11T20:42:23.164Z"
4993
+ },
4994
+ {
4995
+ "id": "bug-303",
4996
+ "timestamp": "2026-09-11T20:42:23.164Z",
4997
+ "error_message": "Negated or historical technology prose appeared as current use",
4998
+ "file": "cli/validators/docs-diff.mjs",
4999
+ "root_cause": "Technology names matched without assertion context",
5000
+ "fix": "Recognize negation including coordinated lists; retain independent affirmative claims",
5001
+ "tags": [
5002
+ "precision",
5003
+ "regression"
5004
+ ],
5005
+ "related_bugs": [],
5006
+ "occurrences": 1,
5007
+ "last_seen": "2026-09-11T20:42:23.164Z"
5008
+ },
5009
+ {
5010
+ "id": "bug-304",
5011
+ "timestamp": "2026-09-11T20:42:23.164Z",
5012
+ "error_message": "Synthetic expectations flagged while sibling placeholders could hide real credentials",
5013
+ "file": "cli/validators/security.mjs",
5014
+ "root_cause": "Text-wide placeholder handling lacked expression ownership",
5015
+ "fix": "Restrict exemptions to explicit synthetic mock expectations and preserve real-secret controls",
5016
+ "tags": [
5017
+ "precision",
5018
+ "regression"
5019
+ ],
5020
+ "related_bugs": [],
5021
+ "occurrences": 1,
5022
+ "last_seen": "2026-09-11T20:42:23.164Z"
5023
+ },
5024
+ {
5025
+ "id": "bug-305",
5026
+ "timestamp": "2026-09-11T20:42:23.164Z",
5027
+ "error_message": "Explained conditional skips warned and nested suite skips were missed",
5028
+ "file": "cli/validators/todo-tracking.mjs",
5029
+ "root_cause": "Skip patterns did not distinguish titles, reasons, and nested suites",
5030
+ "fix": "Recognize static reasons and suite calls with neighboring unexplained-skip controls",
5031
+ "tags": [
5032
+ "precision",
5033
+ "regression"
5034
+ ],
5035
+ "related_bugs": [],
5036
+ "occurrences": 1,
5037
+ "last_seen": "2026-09-11T20:42:23.164Z"
5038
+ },
5039
+ {
5040
+ "id": "bug-306",
5041
+ "timestamp": "2026-09-11T20:42:23.164Z",
5042
+ "error_message": "Worker bindings missing or confused by lexical shadowing",
5043
+ "file": "cli/shared-source.mjs",
5044
+ "root_cause": "Worker handler scope and lexical declarations were not modeled",
5045
+ "fix": "Resolve bindings using optional existing Babel parser and conservative tested fallback",
5046
+ "tags": [
5047
+ "precision",
5048
+ "regression"
5049
+ ],
5050
+ "related_bugs": [],
5051
+ "occurrences": 1,
5052
+ "last_seen": "2026-09-11T20:42:23.164Z"
5053
+ },
5054
+ {
5055
+ "id": "bug-307",
5056
+ "timestamp": "2026-09-11T20:42:23.164Z",
5057
+ "error_message": "Custom document layout bypassed writer and path boundaries",
5058
+ "file": "cli/shared-doc-roles.mjs",
5059
+ "root_cause": "Hardcoded writers and direct readers did not share role validation",
5060
+ "fix": "Validate role paths including symlinks and private aliases; fence CLI and direct automatic writers",
5061
+ "tags": [
5062
+ "precision",
5063
+ "regression"
5064
+ ],
5065
+ "related_bugs": [],
5066
+ "occurrences": 1,
5067
+ "last_seen": "2026-09-11T20:42:23.164Z"
5068
+ },
5069
+ {
5070
+ "id": "bug-308",
5071
+ "timestamp": "2026-09-11T20:42:23.164Z",
5072
+ "error_message": "Zero matches could imply comprehensive successful checks",
5073
+ "file": "cli/commands/guard.mjs",
5074
+ "root_cause": "Applicability and document inventory were conflated with evidence coverage",
5075
+ "fix": "Expose check states and reasons independently of legacy gate status",
5076
+ "tags": [
5077
+ "precision",
5078
+ "regression"
5079
+ ],
5080
+ "related_bugs": [],
5081
+ "occurrences": 1,
5082
+ "last_seen": "2026-09-11T20:42:23.164Z"
5083
+ },
5084
+ {
5085
+ "id": "bug-309",
5086
+ "timestamp": "2026-09-11T20:42:23.164Z",
5087
+ "error_message": "Missing test annotation mislabeled behavioral coverage; spec checks coupled to canonical folder",
5088
+ "file": "cli/validators/traceability.mjs",
5089
+ "root_cause": "Annotation absence treated as proof and missing canonical folder stopped unrelated spec checks",
5090
+ "fix": "Describe annotation uncertainty, scan spec artifacts independently, avoid duplicate default-file warnings and non-test hints",
5091
+ "tags": [
5092
+ "precision",
5093
+ "regression"
5094
+ ],
5095
+ "related_bugs": [],
5096
+ "occurrences": 1,
5097
+ "last_seen": "2026-09-11T20:42:23.164Z"
5098
+ },
5099
+ {
5100
+ "id": "bug-310",
5101
+ "timestamp": "2026-09-11T20:42:23.164Z",
5102
+ "error_message": "Concurrent demo tests raced and kept fixtures leaked",
5103
+ "file": "tests/demo-command.test.mjs",
5104
+ "root_cause": "Global temporary directory counts plus swallowed ESM require error",
5105
+ "fix": "Use isolated temporary roots and imported rmSync with finally cleanup",
5106
+ "tags": [
5107
+ "precision",
5108
+ "regression"
5109
+ ],
5110
+ "related_bugs": [],
5111
+ "occurrences": 1,
5112
+ "last_seen": "2026-09-11T20:42:23.164Z"
4812
5113
  }
4813
5114
  ]
4814
- }
5115
+ }
@@ -116,3 +116,7 @@
116
116
  - **2026-06-03** — Pattern for non-trivial validator tests: provoke the deterministic always-emitted section (`tech-stack` in ARCHITECTURE, `memory-plan.mjs:243`) and assert with a **control** (unpinned→stale) + **fix** (pinned→exempt). Same control discipline used for B4 (.agent created by full generate, not by --plan) and F1 (cli→low, api→normal). Keeps tests non-vacuous.
117
117
  - **2026-06-23** — Field report #6 (websec-validator): guard A+/"Accurate 100%" over a wrong "16 extractors". Its DIAGNOSIS was right (the Accurate pillar never fact-checked; the literal cause was a missing vocab noun) — but its PRESCRIPTION ("validate every claim in every doc, default-on, as warnings") was REJECTED as recall-maximizing. It re-introduces exactly the FP floods prior field reports forced us to scope away (wu-whatsappinbox ~39 FPs; Bug #2 subject-binding; changelog skipping; the explicit "precision over recall" header in semantic-claims.mjs). Chose the precision-first subset: (1) honesty fix to the `Accurate` label — display-only, gating grade untouched; (2) opt-in `config.collections` for deterministic count-drift; (3) non-gating coverage + unverified-claim VISIBILITY (surface what was NOT checked rather than deep-scan everything). Explicitly did NOT build universal prose-claim inference. Verified: headline grade unchanged (100/100 A+), ALCOA dropped 9/9→8/9 (honest), 5 new tests, no regressions (805/805 prior). Held release per user — accumulating into next version; full detail in CHANGELOG [Unreleased]. Reusable principle: a correct bug report can still carry an over-scoped fix — separate the diagnosis from the prescription.
118
118
  - **2026-06-23 (follow-up)** — "Should a clearly-documentation folder be auto-tracked, and should we UPDATE a wrong doc or SUGGEST?" Decisions: (1) Auto-detect conventional doc-home NAMES (extend-not-replace via `config.docs.dirs`, exclude via `.docguardignore`) — answers "treat all clearly-doc folders as docs" without the arbitrary-subdir FP flood. (2) Remediation policy = DocGuard detects DIVERGENCE, not which side is right (the doc may be correct intent and the CODE regressed — the CDD premise). So: auto-fix ONLY the provably-mechanical class (counts bound to a collection) and ONLY via explicit `fix --write` (provenance, fail-closed, git-reversible, never silent); everything semantic/prose is SUGGEST-only (finding + `verify --semantic`), because the deterministic core can't author correct prose and must not assume code is the source of truth. Enrichment/rewriting is an agent task the human approves — NOT a validator silently editing docs. Recorded in CHANGELOG [Unreleased] "Remediation policy".
119
+
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
+
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.
@@ -1,6 +1,6 @@
1
1
  # AI Agent Instructions — DocGuard
2
2
 
3
- <!-- docguard:last-reviewed 2026-07-03 -->
3
+ <!-- docguard:last-reviewed 2026-09-11 -->
4
4
 
5
5
  > This project follows **Canonical-Driven Development (CDD)**.
6
6
  > Documentation is the source of truth. Read before coding.
@@ -154,3 +154,7 @@ extensions/spec-kit-docguard/
154
154
  ### CI/CD
155
155
  - Never write a workflow using `pull_request_target` with checkout of PR-controlled refs.
156
156
  - Always pin third-party GitHub Actions to commit SHA, not @v1 or @main.
157
+
158
+ ## Evidence and contributions
159
+
160
+ A structural score is a maturity proxy. Preserve `assurance` and nullable factual accuracy in automation; a clean guard does not establish arbitrary prose correctness. Review human intent separately from generated code facts. To challenge any finding, run `docguard feedback --code <CODE> --preview`, inspect the metadata-only public draft, and check the supplied search link for existing open and closed work. Contribute a synthetic failing example paired with a neighboring valid case. Submission remains opt-in.
@@ -7,6 +7,40 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.36.0] - 2026-09-11
11
+
12
+ ### Fixed
13
+
14
+ - Catalog submission drafts leave verification checkboxes unchecked, remove unsupported exclusivity claims, and require release-specific evidence before submission.
15
+
16
+ - Enterprise precision: preserve implementation evidence when API contracts omit routes; avoid formatting-only drift, negated technology claims, explained-skip noise, and narrowly identified synthetic mock passwords. Paired true-defect controls prevent broad suppression.
17
+
18
+ - **CI scaffolding**: `init --with ci` now writes the maintained workflow instead of executing a CI check; preserves existing files and rejects unsafe paths.
19
+
20
+ - Independent review fixes bound disk-cache promotion, reject malformed cached plans, preserve unknown report states, and report feedback persistence failures explicitly.
21
+ - Memory-plan caches invalidate on relevant source/document/configuration content and scanner changes, including ordinary uncommitted edits and fresh-process reads. Partial identities bypass reuse; disk writes are atomic and cache paths avoid symlink/private targets.
22
+ - Generated Git enforcement hooks parse formatted JSON, prefer installed local tools, and block unavailable or failed runtimes. Warning policy stays explicit. The Spec Kit after-implementation hook matches its mandatory contract.
23
+ - Traceability distinguishes requirement annotations and test labels from fixture strings. Freshness covers configured/nested docs and source additions/deletions, batches history reads, and rejects future review dates. Watch mode handles asynchronous errors and cleans up resources.
24
+ - CI templates use verified action commit pins, a fixed CLI version, full history, and checked JSON/exit status. The repository CI matrix explicitly emits TAP for its runtime budget.
25
+
26
+ ### Changed
27
+
28
+ - Score, diagnose, CI, and report identify the grade as structural maturity and expose unverified factual accuracy. **Machine-contract correction:** score JSON now returns null for memory.accuracy; the former proxy is memory.structuralAlignment. Category axes use structuralAlignment. Numeric score thresholds are unchanged. Consumers must preserve unknown values.
29
+ - Canonical documentation now reflects the Babel dependency, HTTP MCP security boundary, auxiliary files, current score contract, and limits of coverage claims. CI recipes refer to maintained templates; generated audit/probe artifacts have explicit analysis exclusions.
30
+
31
+ ### Added
32
+
33
+ - Explicit validator applicability/check coverage, bounded Worker binding extraction, and canonical document-role mappings for existing Markdown layouts. Custom mappings support validation/read-only plans; legacy automatic writes fail closed.
34
+ - Freshness emits low-confidence review tasks; explicit historical/superseded/deprecated documents retain their recorded intent without currentness assertions.
35
+
36
+ - Feedback selection with --code or --all, including confident findings, plus --preview to skip feedback-record writes. Public issue drafts contain metadata only, and search links help contributors check open and closed issues/PRs. Test-only synthetic reproductions are documented as a contribution path.
37
+ - Stable semantic-claim identifiers and bounded snapshot evidence for agent tasks; revision/dirty metadata and explicit uncertainty in context packs. Hashes identify inputs rather than assert review or correctness.
38
+ - A research-backed trust roadmap with competitor capabilities, proposed evaluations, contribution economics, and staged acceptance criteria.
39
+
40
+ ### Migration
41
+
42
+ - Regenerate installed Git hooks and update installed Spec Kit registrations to receive their new behavior. Enforcement requires an installed local DocGuard or a binary on PATH; hooks no longer fetch a package through npx. Review nullable accuracy handling in JSON consumers before upgrading automation.
43
+
10
44
  ## [0.35.0] - 2026-09-11
11
45
 
12
46
  ### Added
@@ -1,5 +1,9 @@
1
+ <!-- docguard:last-reviewed 2026-09-11 -->
2
+
1
3
  # OpenWolf
2
4
 
3
5
  @.wolf/OPENWOLF.md
4
6
 
5
7
  This project uses OpenWolf for context management. Read and follow .wolf/OPENWOLF.md every session. Check .wolf/cerebrum.md before generating code. Check .wolf/anatomy.md before reading files.
8
+
9
+ Follow AGENTS.md for the project workflow and current evidence contract. OpenWolf supplies historical context; current canonical requirements govern behavior.
@@ -156,3 +156,18 @@ The following papers directly influenced DocGuard's design:
156
156
  ## License
157
157
 
158
158
  By contributing, you agree that your contributions will be licensed under the MIT License.
159
+
160
+ ## Turn a finding into a regression test
161
+
162
+ A report or a test-only contribution is useful even when you cannot fix the detector. Start with `docguard feedback --code <CODE> --preview` for a disputed finding, or `docguard feedback --all --preview` to review active findings. Confidence is a tool estimate; high-confidence findings can still be wrong.
163
+
164
+ 1. Open the generated search link and check existing issues and pull requests, including closed work. Add evidence to a matching discussion instead of opening a duplicate. A previously fixed issue needs a current reproduction before it is treated as a regression.
165
+ 2. State expected behavior and actual behavior. Distinguish a false positive, a missed defect, unsupported syntax, and a policy preference. A suppression by itself does not demonstrate a bug.
166
+ 3. Create the smallest synthetic project that preserves the behavior. Use invented names and values. Include the tool version, runtime version, minimal configuration, exact command, and expected finding code. Avoid attaching the full local feedback record: it can contain private project details.
167
+ 4. Add a test in `tests/` using `node:test` and temporary directories. A false-positive case should stay clean; a neighboring real defect must still emit the finding. For a missed detection, assert the expected finding and include a similar valid case.
168
+ 5. Run the focused test against the affected version. Describe the reproduction result honestly. A test that never exercised the intended parser path is not evidence of a fix.
169
+ 6. Submit the reviewed example or a test-only PR. Mark a deliberately failing reproducer clearly; maintainers can incorporate it with the fix. Follow the repository's changelog and canonical-documentation rules when changing behavior.
170
+
171
+ Maintainers should acknowledge reproducible reports, preserve contributor attribution with consent, and record the causal defect family in the regression test. Reproduction success and triage time matter more than issue volume. Do not execute arbitrary submitted scripts with repository credentials. Security-sensitive reports belong in the private channel described by SECURITY.md.
172
+
173
+ The public issue draft contains metadata only. Opening a link is optional, and DocGuard never submits a report automatically.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: docguard-cli
3
- Version: 0.35.0
3
+ Version: 0.36.0
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
@@ -126,20 +126,13 @@ graph TD
126
126
 
127
127
  ## Why DocGuard?
128
128
 
129
- Documentation that drifts from code is worse than no documentation — it
130
- confidently misleads humans and AI agents alike. DocGuard treats your canonical
131
- docs as an enforced contract: deterministic validators diff what the docs claim
132
- against what the code does, on every commit, with no LLM required. The full
133
- thesis (and the research behind it) lives in [PHILOSOPHY.md](PHILOSOPHY.md);
134
- recent feature highlights moved [below](#-whats-new).
135
-
136
- The field data backs the enforcement-over-instructions bet: an ETH Zurich
137
- study across 138 repos / 5,694 agent PRs found the most popular style of
138
- agent-instruction file *hurts* agent performance, and practitioners keep
139
- converging on the same lesson — written rules are routinely ignored;
140
- programmatic checks are what agents (and humans) actually respect. That is
141
- exactly the layer DocGuard provides: not another instructions file, but the
142
- validator suite that makes the instructions and docs verifiably true.
129
+ DocGuard checks declared documentation facts against repository evidence and gives agents structured repair tasks. Deterministic checks cover supported facts, references, and generated sections. Human-authored requirements and architectural decisions retain their authority when implementation diverges.
130
+
131
+ A guard result describes the checks performed. The CDD grade measures structural maturity. Factual accuracy stays explicitly unverified until the relevant claims have supporting evidence. Coverage and unresolved claims remain visible, so teams can choose an appropriate enforcement policy.
132
+
133
+ Research motivates evaluation of this approach. A 2026 study found that repository context files did not generally improve task success and increased inference cost in its evaluated settings. It also found agents generally followed the instructions. These results support testing concise, relevant context and measuring actual task outcomes; they do not establish DocGuard's effectiveness. [Evaluating AGENTS.md, revised June 2026](https://arxiv.org/abs/2602.11988v2).
134
+
135
+ The development plan prioritizes accurate detection, reproducible evidence, and contributor-supplied regression cases. See [the trust roadmap](docs-implementation/TRUST-ROADMAP.md) for implementation status, proposed experiments, and acceptance criteria.
143
136
 
144
137
  ---
145
138
 
@@ -239,7 +232,7 @@ DocGuard splits drift into two kinds and is explicit about which is which:
239
232
 
240
233
  `docguard fix --write` only touches docs marked `<!-- docguard:generated true -->` (override with `--force`), is idempotent, and prints exactly what changed. It never rewrites prose — that stays with the agent.
241
234
 
242
- ### Hands-off loop (set and forget)
235
+ ### Continuous documentation workflow
243
236
 
244
237
  ```
245
238
  guard ──▶ fix --write (mechanical, auto) ──▶ guard ──▶ diagnose (agent prompts for the rest)