docguard-cli 0.22.0__tar.gz → 0.23.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 (353) hide show
  1. {docguard_cli-0.22.0/extensions/spec-kit-docguard → docguard_cli-0.23.0/.agent}/skills/docguard-fix/SKILL.md +2 -2
  2. {docguard_cli-0.22.0/extensions/spec-kit-docguard → docguard_cli-0.23.0/.agent}/skills/docguard-guard/SKILL.md +3 -3
  3. {docguard_cli-0.22.0/extensions/spec-kit-docguard → docguard_cli-0.23.0/.agent}/skills/docguard-review/SKILL.md +2 -2
  4. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/skills/docguard-score/SKILL.md +2 -2
  5. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/skills/docguard-sync/SKILL.md +1 -1
  6. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.gitignore +5 -0
  7. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.jules/bolt.md +3 -0
  8. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.jules/palette.md +4 -0
  9. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/CHANGELOG.md +80 -0
  10. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/PKG-INFO +4 -3
  11. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/README.md +3 -2
  12. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/ROADMAP.md +16 -4
  13. docguard_cli-0.23.0/assets/docguard-logo.png +0 -0
  14. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/demo.mjs +1 -1
  15. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/diff.mjs +18 -7
  16. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/explain.mjs +11 -0
  17. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/trace.mjs +1 -99
  18. docguard_cli-0.23.0/cli/config.mjs +228 -0
  19. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/docguard.mjs +2 -217
  20. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/scanners/speckit.mjs +14 -0
  21. docguard_cli-0.23.0/cli/shared-trace-patterns.mjs +105 -0
  22. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/doc-quality.mjs +25 -2
  23. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/docs-diff.mjs +16 -6
  24. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/test-spec.mjs +1 -1
  25. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/traceability.mjs +2 -52
  26. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docs-canonical/ARCHITECTURE.md +14 -11
  27. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docs-canonical/CI-RECIPES.md +2 -0
  28. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docs-canonical/DATA-MODEL.md +1 -1
  29. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docs-canonical/ENVIRONMENT.md +1 -1
  30. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docs-canonical/REQUIREMENTS.md +5 -5
  31. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docs-canonical/SECURITY.md +7 -5
  32. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docs-canonical/SURFACE-AUDIT.md +2 -0
  33. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docs-canonical/TEST-SPEC.md +6 -4
  34. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/commands/guard.md +2 -2
  35. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/extension.yml +1 -1
  36. {docguard_cli-0.22.0/.agent → docguard_cli-0.23.0/extensions/spec-kit-docguard}/skills/docguard-fix/SKILL.md +2 -2
  37. {docguard_cli-0.22.0/.agent → docguard_cli-0.23.0/extensions/spec-kit-docguard}/skills/docguard-guard/SKILL.md +3 -3
  38. {docguard_cli-0.22.0/.agent → docguard_cli-0.23.0/extensions/spec-kit-docguard}/skills/docguard-review/SKILL.md +2 -2
  39. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/skills/docguard-score/SKILL.md +2 -2
  40. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/skills/docguard-sync/SKILL.md +1 -1
  41. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/package.json +1 -1
  42. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/pyproject.toml +1 -1
  43. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/specs/002-fix-test-discovery/plan.md +21 -0
  44. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/specs/004-v020-env-var-false-negative/spec.md +2 -0
  45. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/specs/005-hugocross-next-bugs/spec.md +2 -0
  46. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/doc-quality.test.mjs +41 -0
  47. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/npm-pack-smoke.test.mjs +2 -0
  48. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/plan-disk-cache.test.mjs +2 -0
  49. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/security-init-injection.test.mjs +2 -0
  50. docguard_cli-0.23.0/tests/speckit-bugfix.test.mjs +72 -0
  51. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/traceability.test.mjs +16 -0
  52. docguard_cli-0.23.0/vscode-extension/LICENSE +21 -0
  53. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/vscode-extension/extension.js +31 -5
  54. docguard_cli-0.23.0/vscode-extension/icon.png +0 -0
  55. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/vscode-extension/package.json +2 -2
  56. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/commands/speckit.analyze.md +0 -0
  57. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/commands/speckit.checklist.md +0 -0
  58. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/commands/speckit.clarify.md +0 -0
  59. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/commands/speckit.constitution.md +0 -0
  60. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/commands/speckit.implement.md +0 -0
  61. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/commands/speckit.plan.md +0 -0
  62. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/commands/speckit.specify.md +0 -0
  63. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/commands/speckit.tasks.md +0 -0
  64. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/commands/speckit.taskstoissues.md +0 -0
  65. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/skills/speckit-analyze/SKILL.md +0 -0
  66. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/skills/speckit-checklist/SKILL.md +0 -0
  67. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/skills/speckit-clarify/SKILL.md +0 -0
  68. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/skills/speckit-constitution/SKILL.md +0 -0
  69. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/skills/speckit-implement/SKILL.md +0 -0
  70. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/skills/speckit-plan/SKILL.md +0 -0
  71. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/skills/speckit-specify/SKILL.md +0 -0
  72. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/skills/speckit-tasks/SKILL.md +0 -0
  73. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.agent/skills/speckit-taskstoissues/SKILL.md +0 -0
  74. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.docguard.json +0 -0
  75. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.docguardignore +0 -0
  76. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  77. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  78. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.github/dependabot.yml +0 -0
  79. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.github/scripts/patch-catalog.py +0 -0
  80. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.github/workflows/ci.yml +0 -0
  81. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.github/workflows/release.yml +0 -0
  82. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.github/workflows/supply-chain.yml +0 -0
  83. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.github/workflows/sync-speckit-catalog.yml +0 -0
  84. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.jules/sentinel.md +0 -0
  85. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.npmignore +0 -0
  86. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.npmrc +0 -0
  87. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.specify/extensions/.cache/catalog-ebf165086500aab1-metadata.json +0 -0
  88. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.specify/extensions/.cache/catalog-ebf165086500aab1.json +0 -0
  89. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.specify/extensions/.cache/catalog-metadata.json +0 -0
  90. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.specify/extensions/.cache/catalog.json +0 -0
  91. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.specify/init-options.json +0 -0
  92. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.specify/memory/constitution.md +0 -0
  93. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.specify/scripts/bash/check-prerequisites.sh +0 -0
  94. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.specify/scripts/bash/common.sh +0 -0
  95. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.specify/scripts/bash/create-new-feature.sh +0 -0
  96. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.specify/scripts/bash/setup-plan.sh +0 -0
  97. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.specify/scripts/bash/update-agent-context.sh +0 -0
  98. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.specify/templates/agent-file-template.md +0 -0
  99. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.specify/templates/checklist-template.md +0 -0
  100. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.specify/templates/constitution-template.md +0 -0
  101. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.specify/templates/plan-template.md +0 -0
  102. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.specify/templates/spec-template.md +0 -0
  103. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/.specify/templates/tasks-template.md +0 -0
  104. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/AGENTS.md +0 -0
  105. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/CODE_OF_CONDUCT.md +0 -0
  106. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/COMPARISONS.md +0 -0
  107. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/CONTRIBUTING.md +0 -0
  108. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/DRIFT-LOG.md +0 -0
  109. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/LICENSE +0 -0
  110. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/PHILOSOPHY.md +0 -0
  111. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/SECURITY.md +0 -0
  112. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/STANDARD.md +0 -0
  113. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/SUPPLY-CHAIN-AUDIT.md +0 -0
  114. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/SUPPORT.md +0 -0
  115. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/action.yml +0 -0
  116. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/assets/bin/docguard +0 -0
  117. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/assets/demo.gif +0 -0
  118. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/assets/demo.tape +0 -0
  119. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/agents.mjs +0 -0
  120. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/badge.mjs +0 -0
  121. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/ci.mjs +0 -0
  122. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/diagnose.mjs +0 -0
  123. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/fix.mjs +0 -0
  124. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/generate.mjs +0 -0
  125. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/guard.mjs +0 -0
  126. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/hooks.mjs +0 -0
  127. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/impact.mjs +0 -0
  128. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/init.mjs +0 -0
  129. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/llms.mjs +0 -0
  130. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/memory.mjs +0 -0
  131. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/publish.mjs +0 -0
  132. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/score.mjs +0 -0
  133. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/setup.mjs +0 -0
  134. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/sync.mjs +0 -0
  135. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/upgrade.mjs +0 -0
  136. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/commands/watch.mjs +0 -0
  137. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/ensure-skills.mjs +0 -0
  138. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/scanners/api-doc.mjs +0 -0
  139. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/scanners/cdk.mjs +0 -0
  140. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/scanners/doc-tools.mjs +0 -0
  141. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/scanners/frontend.mjs +0 -0
  142. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/scanners/iac.mjs +0 -0
  143. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/scanners/integrations.mjs +0 -0
  144. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/scanners/memory-plan.mjs +0 -0
  145. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/scanners/project-type.mjs +0 -0
  146. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/scanners/routes.mjs +0 -0
  147. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/scanners/schemas.mjs +0 -0
  148. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/shared-git.mjs +0 -0
  149. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/shared-ignore.mjs +0 -0
  150. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/shared-source.mjs +0 -0
  151. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/shared.mjs +0 -0
  152. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/api-surface.mjs +0 -0
  153. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/architecture.mjs +0 -0
  154. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/canonical-sync.mjs +0 -0
  155. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/changelog.mjs +0 -0
  156. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/cross-reference.mjs +0 -0
  157. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/docs-coverage.mjs +0 -0
  158. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/docs-sync.mjs +0 -0
  159. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/drift.mjs +0 -0
  160. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/environment.mjs +0 -0
  161. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/freshness.mjs +0 -0
  162. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/generated-staleness.mjs +0 -0
  163. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/metadata-sync.mjs +0 -0
  164. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/metrics-consistency.mjs +0 -0
  165. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/schema-sync.mjs +0 -0
  166. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/security.mjs +0 -0
  167. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/spec-kit.mjs +0 -0
  168. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/structure.mjs +0 -0
  169. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/surface-sync.mjs +0 -0
  170. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/validators/todo-tracking.mjs +0 -0
  171. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/writers/api-reference.mjs +0 -0
  172. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/writers/fix-memory.mjs +0 -0
  173. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/writers/mechanical.mjs +0 -0
  174. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/cli/writers/sections.mjs +0 -0
  175. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/commands/docguard.fix.md +0 -0
  176. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/commands/docguard.guard.md +0 -0
  177. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/commands/docguard.review.md +0 -0
  178. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/commands/docguard.score.md +0 -0
  179. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/configs/fastify.json +0 -0
  180. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/configs/generic.json +0 -0
  181. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/configs/nextjs.json +0 -0
  182. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/configs/python.json +0 -0
  183. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docguard_cli/__init__.py +0 -0
  184. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docguard_cli/wrapper.py +0 -0
  185. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docs/ai-integration.md +0 -0
  186. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docs/commands.md +0 -0
  187. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docs/configuration.md +0 -0
  188. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docs/doc-sections.md +0 -0
  189. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docs/faq.md +0 -0
  190. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docs/installation.md +0 -0
  191. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docs/profiles.md +0 -0
  192. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docs/quickstart.md +0 -0
  193. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/docs-implementation/MIGRATION-v0.20.md +0 -0
  194. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/examples/01-express-api/README.md +0 -0
  195. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/examples/01-express-api/package.json +0 -0
  196. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/examples/01-express-api/server.js +0 -0
  197. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/examples/02-python-flask/README.md +0 -0
  198. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/examples/02-python-flask/app.py +0 -0
  199. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/examples/02-python-flask/docs-canonical/ARCHITECTURE.md +0 -0
  200. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/examples/02-python-flask/requirements.txt +0 -0
  201. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/examples/03-spec-kit-project/CHANGELOG.md +0 -0
  202. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/examples/03-spec-kit-project/README.md +0 -0
  203. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/examples/03-spec-kit-project/docs-canonical/ARCHITECTURE.md +0 -0
  204. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/examples/03-spec-kit-project/docs-canonical/TEST-SPEC.md +0 -0
  205. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/examples/03-spec-kit-project/package.json +0 -0
  206. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/examples/03-spec-kit-project/src/index.js +0 -0
  207. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/examples/03-spec-kit-project/tests/basic.test.js +0 -0
  208. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/examples/README.md +0 -0
  209. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/LICENSE +0 -0
  210. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/README.md +0 -0
  211. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/commands/diagnose.md +0 -0
  212. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/commands/fix.md +0 -0
  213. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/commands/generate.md +0 -0
  214. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/commands/init.md +0 -0
  215. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/commands/score.md +0 -0
  216. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/commands/sync.md +0 -0
  217. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/commands/trace.md +0 -0
  218. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/scripts/bash/common.sh +0 -0
  219. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh +0 -0
  220. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/scripts/bash/docguard-init-doc.sh +0 -0
  221. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/scripts/bash/docguard-suggest-fix.sh +0 -0
  222. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/templates/extensions.yml +0 -0
  223. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/templates/github-workflows/docguard-autofix.yml +0 -0
  224. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/extensions/spec-kit-docguard/templates/github-workflows/docguard-guard.yml +0 -0
  225. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/pr_description.md +0 -0
  226. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/schemas/docguard-config.schema.json +0 -0
  227. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/specs/001-fix-ignore-validators/plan.md +0 -0
  228. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/specs/001-fix-ignore-validators/spec.md +0 -0
  229. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/specs/001-fix-ignore-validators/tasks.md +0 -0
  230. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/specs/002-fix-test-discovery/spec.md +0 -0
  231. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/specs/002-fix-test-discovery/tasks.md +0 -0
  232. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/specs/003-v011-false-positives/plan.md +0 -0
  233. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/specs/003-v011-false-positives/spec.md +0 -0
  234. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/specs/003-v011-false-positives/tasks.md +0 -0
  235. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/ADR.md.template +0 -0
  236. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/AGENTS.md.template +0 -0
  237. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/ARCHITECTURE.md.template +0 -0
  238. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/CHANGELOG.md.template +0 -0
  239. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/CURRENT-STATE.md.template +0 -0
  240. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/DATA-MODEL.md.template +0 -0
  241. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/DEPLOYMENT.md.template +0 -0
  242. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/DRIFT-LOG.md.template +0 -0
  243. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/ENVIRONMENT.md.template +0 -0
  244. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/KNOWN-GOTCHAS.md.template +0 -0
  245. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/REQUIREMENTS.md.template +0 -0
  246. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/ROADMAP.md.template +0 -0
  247. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/RUNBOOKS.md.template +0 -0
  248. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/SECURITY.md.template +0 -0
  249. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/TEST-SPEC.md.template +0 -0
  250. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/TROUBLESHOOTING.md.template +0 -0
  251. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/VENDOR-BUGS.md.template +0 -0
  252. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/ci/github-actions.yml +0 -0
  253. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/commands/docguard.fix.md +0 -0
  254. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/commands/docguard.guard.md +0 -0
  255. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/commands/docguard.init.md +0 -0
  256. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/commands/docguard.review.md +0 -0
  257. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/commands/docguard.update.md +0 -0
  258. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/demo-fixture/.docguard.json +0 -0
  259. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/demo-fixture/.env.example +0 -0
  260. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/demo-fixture/AGENTS.md +0 -0
  261. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/demo-fixture/CHANGELOG.md +0 -0
  262. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/demo-fixture/DRIFT-LOG.md +0 -0
  263. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/demo-fixture/README.md +0 -0
  264. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/demo-fixture/docs-canonical/API-REFERENCE.md +0 -0
  265. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/demo-fixture/docs-canonical/ARCHITECTURE.md +0 -0
  266. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/demo-fixture/docs-canonical/DATA-MODEL.md +0 -0
  267. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/demo-fixture/docs-canonical/ENVIRONMENT.md +0 -0
  268. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/demo-fixture/docs-canonical/SECURITY.md +0 -0
  269. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/demo-fixture/docs-canonical/TEST-SPEC.md +0 -0
  270. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/demo-fixture/package.json +0 -0
  271. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/demo-fixture/src/api.mjs +0 -0
  272. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/demo-fixture/src/notifier.mjs +0 -0
  273. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/demo-fixture/src/scheduler.mjs +0 -0
  274. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/templates/demo-fixture/src/worker.mjs +0 -0
  275. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/test-draft.js +0 -0
  276. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/test-metrics.js +0 -0
  277. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/anchor-autofix.test.mjs +0 -0
  278. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/api-doc.test.mjs +0 -0
  279. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/api-surface.test.mjs +0 -0
  280. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/api-write.test.mjs +0 -0
  281. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/architecture.test.mjs +0 -0
  282. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/b7-node-env-symmetry.test.mjs +0 -0
  283. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/backup-failure.test.mjs +0 -0
  284. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/canonical-sync.test.mjs +0 -0
  285. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/cdk-detection.test.mjs +0 -0
  286. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/changed-only-scoping.test.mjs +0 -0
  287. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/changed-only.test.mjs +0 -0
  288. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/changelog.test.mjs +0 -0
  289. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/commands.test.mjs +0 -0
  290. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/cross-reference.test.mjs +0 -0
  291. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/demo-command.test.mjs +0 -0
  292. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/docguardignore.test.mjs +0 -0
  293. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/docs-coverage.test.mjs +0 -0
  294. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/docs-diff.test.mjs +0 -0
  295. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/docs-sync.test.mjs +0 -0
  296. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/drift.test.mjs +0 -0
  297. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/environment.test.mjs +0 -0
  298. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/fix-memory.test.mjs +0 -0
  299. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/fix-suppression.test.mjs +0 -0
  300. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/fixture-projects.test.mjs +0 -0
  301. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/freshness.test.mjs +0 -0
  302. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/frontend-deep.test.mjs +0 -0
  303. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/frontend.test.mjs +0 -0
  304. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/generated-staleness.test.mjs +0 -0
  305. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/guard-classify.test.mjs +0 -0
  306. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/guard-no-throw.test.mjs +0 -0
  307. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/hooks.test.mjs +0 -0
  308. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/i18n.test.mjs +0 -0
  309. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/impact.test.mjs +0 -0
  310. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/init-smart-detection.test.mjs +0 -0
  311. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/integrations.test.mjs +0 -0
  312. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/mechanical.test.mjs +0 -0
  313. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/memory-plan.test.mjs +0 -0
  314. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/metadata-sync.test.mjs +0 -0
  315. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/metrics-consistency.test.mjs +0 -0
  316. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/metrics-dedup.test.mjs +0 -0
  317. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/monorepo-scanning.test.mjs +0 -0
  318. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/multi-spec.test.mjs +0 -0
  319. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/patch-0.11.2.test.mjs +0 -0
  320. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/profile-flag.test.mjs +0 -0
  321. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/project-type.test.mjs +0 -0
  322. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/regenerate-section.test.mjs +0 -0
  323. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/routes-multilang.test.mjs +0 -0
  324. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/routes-nextjs-app-router.test.mjs +0 -0
  325. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/schema-sync.test.mjs +0 -0
  326. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/schemas-multilang.test.mjs +0 -0
  327. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/schemas.test.mjs +0 -0
  328. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/scoping-extended.test.mjs +0 -0
  329. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/section-na-markers.test.mjs +0 -0
  330. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/sections.test.mjs +0 -0
  331. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/security.test.mjs +0 -0
  332. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/severity.test.mjs +0 -0
  333. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/shared-git.test.mjs +0 -0
  334. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/shared-source.test.mjs +0 -0
  335. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/stress-test.test.mjs +0 -0
  336. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/structure.test.mjs +0 -0
  337. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/surface-sync.test.mjs +0 -0
  338. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/sweep-nudge.test.mjs +0 -0
  339. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/sync-since.test.mjs +0 -0
  340. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/sync.test.mjs +0 -0
  341. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/test-spec.test.mjs +0 -0
  342. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/todo-tracking.test.mjs +0 -0
  343. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/trace-multilang.test.mjs +0 -0
  344. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/trace-reverse.test.mjs +0 -0
  345. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/upgrade-pr-e2e.test.mjs +0 -0
  346. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/upgrade-pr.test.mjs +0 -0
  347. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/upgrade.test.mjs +0 -0
  348. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/v020-consolidation.test.mjs +0 -0
  349. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/validator-naming.test.mjs +0 -0
  350. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/version-pin.test.mjs +0 -0
  351. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/tests/whats-new.test.mjs +0 -0
  352. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/vscode-extension/.vscodeignore +0 -0
  353. {docguard_cli-0.22.0 → docguard_cli-0.23.0}/vscode-extension/README.md +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.22.0
9
+ version: 0.23.0
10
10
  source: extensions/spec-kit-docguard/skills/docguard-fix
11
11
  ---
12
- <!-- docguard:version: 0.22.0 -->
12
+ <!-- docguard:version: 0.23.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.22.0
10
+ version: 0.23.0
11
11
  source: extensions/spec-kit-docguard/skills/docguard-guard
12
12
  ---
13
- <!-- docguard:version: 0.22.0 -->
13
+ <!-- docguard:version: 0.23.0 -->
14
14
 
15
15
  # DocGuard Guard Skill
16
16
 
@@ -24,7 +24,7 @@ You **MUST** consider the user input before proceeding (if not empty).
24
24
 
25
25
  ## Goal
26
26
 
27
- Execute DocGuard's 19-validator guard suite against the current project, parse structured results, triage findings by severity and impact, and produce an actionable remediation plan. This skill transforms raw CLI output into an AI-digestible quality assessment.
27
+ Execute DocGuard's full guard validator suite against the current project, parse structured results, triage findings by severity and impact, and produce an actionable remediation plan. This skill transforms raw CLI output into an AI-digestible quality assessment.
28
28
 
29
29
  ## Pre-Execution Checks
30
30
 
@@ -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.22.0
9
+ version: 0.23.0
10
10
  source: extensions/spec-kit-docguard/skills/docguard-review
11
11
  ---
12
- <!-- docguard:version: 0.22.0 -->
12
+ <!-- docguard:version: 0.23.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.22.0
9
+ version: 0.23.0
10
10
  source: extensions/spec-kit-docguard/skills/docguard-score
11
11
  ---
12
- <!-- docguard:version: 0.22.0 -->
12
+ <!-- docguard:version: 0.23.0 -->
13
13
 
14
14
  # DocGuard Score Skill
15
15
 
@@ -4,7 +4,7 @@ description: Keep canonical documentation ALWAYS UP TO DATE. Refreshes code-trut
4
4
  compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
5
5
  metadata:
6
6
  author: docguard
7
- version: 0.22.0
7
+ version: 0.23.0
8
8
  source: extensions/spec-kit-docguard/skills/docguard-sync
9
9
  ---
10
10
 
@@ -1,6 +1,10 @@
1
1
  # Dependencies
2
2
  node_modules/
3
3
 
4
+ # Build artifacts (npm pack / vsce package output — never commit)
5
+ *.tgz
6
+ *.vsix
7
+
4
8
  # Internal research (not part of the public package)
5
9
  Research/
6
10
 
@@ -34,3 +38,4 @@ dist/
34
38
  *.egg-info/
35
39
  __pycache__/
36
40
  .venv
41
+ .docguard/
@@ -5,3 +5,6 @@
5
5
  ## 2024-05-18 - [O(N*M) String Overhead]
6
6
  **Learning:** To prevent N^2 performance bottlenecks in nested loops (such as comparing a list of items against multiple documents), precomputing expensive operations like `.toLowerCase()` during the initial file load or mapping phase avoids redundant $O(N \times M)$ overhead.
7
7
  **Action:** Precompute expensive string operations and property lookups (like `.toLowerCase()` and `.substring()`) outside of inner loops and during file load mapping phases to improve scaling.
8
+ ## 2024-05-24 - Pre-compile RegExp in nested loops
9
+ **Learning:** Instantiating `new RegExp()` inside nested array methods like `.filter` and `.some` creates a severe O(N*M) performance bottleneck, especially when matching two large lists (e.g., documented tests vs. actual test files).
10
+ **Action:** Always pre-compile regular expressions and derived strings into an array of "matcher" objects outside of the loop before iterating, which shifts the instantiation cost from O(N*M) to O(N).
@@ -5,3 +5,7 @@
5
5
  ## 2024-04-16 - Context-Aware Status Bar Tooltips
6
6
  **Learning:** VS Code extension status bar items can display multiple forms of feedback, but static tooltips fail to explain state changes. Providing context-aware tooltip text (e.g., explaining why a threshold warning icon appears) greatly improves the usability for developers monitoring CLI outputs inline.
7
7
  **Action:** Always map status bar dynamic properties (icon, text, backgroundColor) to corresponding informative tooltips that explain what the visual change means.
8
+
9
+ ## 2024-05-18 - Yielding Event Loop for Loading States
10
+ **Learning:** When updating UI elements like VS Code extension `statusBarItem` to show a loading state (e.g., adding a spinner and changing tooltip) immediately prior to a synchronous, blocking operation (like `execSync`), the changes won't render unless you explicitly yield the event loop.
11
+ **Action:** Use `await new Promise(r => setTimeout(r, 0))` right after the UI update to allow the editor time to render the visual changes before the main thread blocks.
@@ -7,6 +7,86 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.23.0] - 2026-05-29
11
+
12
+ Validator-hardening minor release, driven by external field feedback and a full
13
+ self-audit. Theme: make the validators **fit real projects** and **tell the
14
+ truth**, rather than forcing ceremony or over-claiming. Honest fixes only — no
15
+ doc-gaming. Self-audit guard warnings went 20 → 0-of-ours (the only remaining
16
+ warning is a parallel session's untracked file).
17
+
18
+ ### Added
19
+ - **Language-aware guard Traceability** (field Issue 3) — the guard-time
20
+ Traceability validator now understands Python, Go, Rust, Java/Kotlin, Ruby,
21
+ and PHP layouts, not just JS/TS. The multilingual `TEST_PATTERNS` + `TRACE_MAP`
22
+ live in one shared module (`cli/shared-trace-patterns.mjs`) consumed by both
23
+ `docguard trace` and the validator, so they can't drift apart. (The README
24
+ previously claimed this but only the standalone `trace` command delivered it.)
25
+ - **Per-doc negation-load override** (field Issue 14) — `<!-- docguard:quality
26
+ negation-load off — reason -->` (or a numeric threshold), plus a project-wide
27
+ `docQuality.negationLoadThreshold` config. Security/operational/audit docs
28
+ legitimately use "never"/"must not"/"cannot"; this stops false flags without
29
+ weakening the check for tutorials.
30
+ - **Bugfix/lightweight spec type** — `<!-- docguard:spec-type bugfix -->` makes
31
+ the Spec-Kit validator check a defect spec for Root Cause + Fix instead of the
32
+ full feature template (User Scenarios + FR/SC IDs). Narrower check, not a free
33
+ pass.
34
+ - **`docguard explain canonical-sync`** — the count-level companion validator
35
+ was missing from the explainer (field Issue 10).
36
+
37
+ ### Changed
38
+ - **`loadConfig` extracted to `cli/config.mjs`** — breaks the demo↔docguard
39
+ import cycle the Architecture validator flagged (byte-for-byte move, no logic
40
+ change). New modules import config from there, not the CLI entry point.
41
+ - **Docs-Diff** test-file drift now recognises the documented glob convention
42
+ (`tests/*.test.mjs`) instead of demanding every test file be enumerated.
43
+ - **Diff loops pre-compile their regexes** (community PR) — O(N·M) → O(N) on the
44
+ test-file comparison.
45
+ - **Test-Spec** "no mappings" note now points to the expected table format and
46
+ `docguard explain` (field Issue 4).
47
+ - **Canonical docs refreshed** — ARCHITECTURE (config.mjs, 24 validators, 11
48
+ scanners, shared-trace-patterns), SECURITY (real `execFileSync`+allowlist
49
+ subprocess posture), ROADMAP (Phase 4.5 hardening). Genuine review, not
50
+ date-stamping.
51
+
52
+ ### Related (shipped separately)
53
+ - VS Code extension `DocGuard.docguard-vscode` published to the Marketplace
54
+ (v0.4.1), including a command-injection fix in `execSpecguard` (#207).
55
+
56
+ ## [0.22.1] - 2026-05-29
57
+
58
+ Self-audit + field-feedback patch. Honest fixes only — no doc-gaming. The
59
+ remaining guard warnings (Spec-Kit on bugfix specs, negation-load, docs-diff
60
+ test files, freshness lag, the demo↔docguard import cycle) are deferred to
61
+ v0.23.0 because the *correct* fix is improving the validators, not papering
62
+ over the docs. `sync --write` confirmed the freshness warnings are git-age
63
+ lag, not real code-truth drift, so they were left honest rather than date-bumped.
64
+
65
+ ### Fixed
66
+ - **Stale validator counts in scaffolded files** — `extensions/spec-kit-docguard/skills/docguard-guard/SKILL.md`
67
+ ("19-validator") and `extensions/spec-kit-docguard/commands/guard.md` ("19-validator", "20 total")
68
+ hardcoded counts that drift every release and shipped into user projects. Reworded to be count-free,
69
+ matching the already-fixed `templates/commands/docguard.guard.md`. (Field report, Issue 1.)
70
+ - **REQUIREMENTS.md non-functional requirements were unfilled web-service boilerplate**
71
+ ("200ms p95", "99.9% uptime SLA") — nonsensical for a zero-dependency CLI and untraced.
72
+ Rewrote NFR-001/002/003 to DocGuard's real, test-backed NFRs (injection-safe subprocess
73
+ spawns, zero runtime deps, cross-process plan cache) and traced each to its regression test
74
+ via `@req` tags. Clears the 3 Traceability warnings honestly.
75
+ - **`specs/002-fix-test-discovery/plan.md`** — added the Spec-Kit-mandated `Summary` and
76
+ `Project Structure` sections (real content).
77
+
78
+ ### Added / Improved
79
+ - **`docguard explain canonical-sync`** — the count-level companion validator was missing from
80
+ the explainer table; added it. (Field report, Issue 10.)
81
+ - **Test-Spec validator note** now points to the expected table format and `docguard explain` when
82
+ it finds no service-to-test mappings, instead of a dead-end message. (Field report, Issue 4.)
83
+
84
+ ### Docs
85
+ - **README "What's New" no longer over-claims language-aware trace mapping for `guard`.** The
86
+ multilingual patterns live in the standalone `docguard trace` command; the guard-time
87
+ Traceability validator is JS/TS-first today, with language parity on the v0.23 roadmap.
88
+ (Field report, Issue 3 — honesty fix pending the full validator port.)
89
+
10
90
  ## [0.22.0] - 2026-05-28
11
91
 
12
92
  ### Added — Surface-Sync validator (item-level enumerable drift)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: docguard-cli
3
- Version: 0.22.0
3
+ Version: 0.23.0
4
4
  Summary: The enforcement tool for Canonical-Driven Development (CDD). Audit, generate, and guard your project documentation. Zero dependencies.
5
5
  Project-URL: Homepage, https://github.com/raccioly/docguard
6
6
  Project-URL: Documentation, https://github.com/raccioly/docguard#readme
@@ -130,8 +130,9 @@ Recent highlights across the v0.16 → v0.19 line:
130
130
  two commits. Pinpoints regressions without re-running the full suite by hand.
131
131
  - **`docguard upgrade --apply --pr`** — when the config schema bumps, DocGuard migrates
132
132
  `.docguard.json` for you and (optionally) opens a PR with the change.
133
- - **Language-aware patterns** — test discovery and trace mapping now understand Python, Rust, Go,
134
- Java, Ruby, and PHP layouts in addition to JS/TS. Sensible defaults, override via config.
133
+ - **Language-aware traceability** — both `docguard trace` *and* the guard-time Traceability validator
134
+ understand Python, Rust, Go, Java, Ruby, and PHP layouts in addition to JS/TS, via a shared pattern
135
+ set (`cli/shared-trace-patterns.mjs`) so the two never drift apart.
135
136
  - **Per-validator severity overrides** — escalate `freshness` to `high` for production repos,
136
137
  demote `doc-quality` to `low` for prototypes. Configurable per-project.
137
138
  - **JSON Schema for `.docguard.json`** — IDE autocomplete, in-line docs, and validation via
@@ -106,8 +106,9 @@ Recent highlights across the v0.16 → v0.19 line:
106
106
  two commits. Pinpoints regressions without re-running the full suite by hand.
107
107
  - **`docguard upgrade --apply --pr`** — when the config schema bumps, DocGuard migrates
108
108
  `.docguard.json` for you and (optionally) opens a PR with the change.
109
- - **Language-aware patterns** — test discovery and trace mapping now understand Python, Rust, Go,
110
- Java, Ruby, and PHP layouts in addition to JS/TS. Sensible defaults, override via config.
109
+ - **Language-aware traceability** — both `docguard trace` *and* the guard-time Traceability validator
110
+ understand Python, Rust, Go, Java, Ruby, and PHP layouts in addition to JS/TS, via a shared pattern
111
+ set (`cli/shared-trace-patterns.mjs`) so the two never drift apart.
111
112
  - **Per-validator severity overrides** — escalate `freshness` to `high` for production repos,
112
113
  demote `doc-quality` to `low` for prototypes. Configurable per-project.
113
114
  - **JSON Schema for `.docguard.json`** — IDE autocomplete, in-line docs, and validation via
@@ -1,8 +1,8 @@
1
1
  # DocGuard Roadmap
2
2
 
3
- <!-- docguard:version 0.4.0 -->
3
+ <!-- docguard:version 0.5.0 -->
4
4
  <!-- docguard:status living -->
5
- <!-- docguard:last-reviewed 2026-05-26 -->
5
+ <!-- docguard:last-reviewed 2026-05-29 -->
6
6
  <!-- docguard:owner @raccioly -->
7
7
 
8
8
  > The planned evolution of DocGuard and Canonical-Driven Development (CDD).
@@ -10,8 +10,8 @@
10
10
  | Metadata | Value |
11
11
  |----------|-------|
12
12
  | **Status** | ![Status](https://img.shields.io/badge/status-active-brightgreen) |
13
- | **Version** | `0.4.0` |
14
- | **Last Updated** | 2026-03-12 |
13
+ | **Version** | `0.5.0` |
14
+ | **Last Updated** | 2026-05-29 |
15
15
  | **Owner** | [@raccioly](https://github.com/raccioly) |
16
16
 
17
17
  ---
@@ -31,8 +31,20 @@ Make **Canonical-Driven Development** the industry standard for AI-age software
31
31
  | 2 | Polish & Adoption | ✅ Complete | Mar 2026 |
32
32
  | 3 | AI Generate Mode | ✅ Complete | Mar 2026 |
33
33
  | 4 | Integrations | ✅ Complete | Mar 2026 |
34
+ | 4.5 | Continuous Hardening | 🔄 Ongoing | Mar–May 2026 |
34
35
  | 5 | Dashboard (SaaS) | 💭 Future | Q4 2026 |
35
36
 
37
+ ### Phase 4.5: Continuous Hardening (v0.11 → v0.23) 🔄
38
+
39
+ Sustained, feedback-driven maturation since the March milestones:
40
+
41
+ - **Validators grew 9 → 24** — added Canonical-Sync, Surface-Sync, Metrics-Consistency, Doc-Quality, Traceability, Cross-Reference, Generated-Staleness, and more.
42
+ - **Language-aware** test/trace discovery (Python, Go, Rust, Java/Kotlin, Ruby, PHP) shared between `docguard trace` and the guard-time Traceability validator.
43
+ - **Per-doc/per-rule overrides** — `docguard:section … n/a`, `docguard:quality negation-load off`, `docguard:spec-type bugfix` — so the validators fit real projects instead of forcing ceremony.
44
+ - **Security** — closed command-injection vectors in CLI `init` (#190) and the VS Code extension (#207); subprocesses now use `execFileSync` + allowlist validation.
45
+ - **Published the VS Code extension** (`DocGuard.docguard-vscode`) to the Marketplace.
46
+ - **Distribution** — npm + PyPI + GitHub Action + Spec Kit community-catalog auto-sync.
47
+
36
48
  ---
37
49
 
38
50
  ## Phase 0: Research & Standard ✅
@@ -25,7 +25,7 @@ import { spawnSync } from 'node:child_process';
25
25
  import { c } from '../shared.mjs';
26
26
  import { runGuardInternal, classifyResult } from './guard.mjs';
27
27
  import { runScoreInternal } from './score.mjs';
28
- import { loadConfig } from '../docguard.mjs';
28
+ import { loadConfig } from '../config.mjs';
29
29
 
30
30
  const __filename = fileURLToPath(import.meta.url);
31
31
  const __dirname = dirname(__filename);
@@ -347,22 +347,33 @@ function diffTests(dir, config = {}) {
347
347
 
348
348
  // Glob-aware matching (documented entries are often patterns or basenames).
349
349
  const codeArr = [...codeTests];
350
- const docArr = [...docTests];
351
- const matches = (docEntry, codeRel) => {
350
+
351
+ // PERFORMANCE OPTIMIZATION: Pre-compile regular expressions to avoid O(N*M)
352
+ // instantiation bottlenecks inside the nested .filter and .some loops below.
353
+ const docMatchers = [...docTests].map(docEntry => {
352
354
  const entry = String(docEntry).trim();
353
355
  const hasSlash = entry.includes('/');
354
356
  const target = hasSlash ? entry : basename(entry);
355
- const subject = hasSlash ? codeRel : basename(codeRel);
356
357
  const rx = new RegExp('^' + target.replace(/[.+^${}()|[\]\\]/g, '\\$&').replace(/\*+/g, '.*') + '$');
357
- return rx.test(subject);
358
+
359
+ return {
360
+ original: docEntry,
361
+ hasSlash,
362
+ rx
363
+ };
364
+ });
365
+
366
+ const matches = (matcher, codeRel) => {
367
+ const subject = matcher.hasSlash ? codeRel : basename(codeRel);
368
+ return matcher.rx.test(subject);
358
369
  };
359
370
 
360
371
  return {
361
372
  title: 'Test Files',
362
373
  icon: '🧪',
363
- onlyInDocs: docArr.filter(d => !codeArr.some(c => matches(d, c))),
364
- onlyInCode: codeArr.filter(c => !docArr.some(d => matches(d, c))),
365
- matched: docArr.filter(d => codeArr.some(c => matches(d, c))),
374
+ onlyInDocs: docMatchers.filter(m => !codeArr.some(c => matches(m, c))).map(m => m.original),
375
+ onlyInCode: codeArr.filter(c => !docMatchers.some(m => matches(m, c))),
376
+ matched: docMatchers.filter(m => codeArr.some(c => matches(m, c))).map(m => m.original),
366
377
  };
367
378
  }
368
379
 
@@ -150,6 +150,17 @@ const EXPLAINERS = {
150
150
  example: 'AGENTS.md says "22 validators" and `docguard guard` shows 22 active validators',
151
151
  standard: 'CDD principle: documented metrics match reality',
152
152
  },
153
+ canonicalSync: {
154
+ title: 'Canonical-Sync — README count claims match code-truth (DocGuard repo only)',
155
+ what: 'Count-level check (complementing surface-sync\'s item-level check). Verifies that numeric claims in the README — "ships N commands", "N validators", mermaid diagram counts — match what the code actually exposes. N/A unless the project opts in via `canonicalSync` config; primarily for DocGuard\'s own repo.',
156
+ why: 'Hardcoded counts in prose and diagrams drift silently every time a command or validator is added/removed. A README claiming "23 validators" when there are 24 erodes trust and misleads AI agents reading the docs.',
157
+ triggers: [
158
+ ['README.md claims "N validators" but guard reports M', 'Update the count. `docguard fix --write` handles this mechanically across all docs.'],
159
+ ['architecture diagram has stale counts', 'Update the count inside the mermaid block (fix --write does not edit mermaid; do it manually).'],
160
+ ],
161
+ example: 'README says "24 validators" and the architecture mermaid says "Validators (24)" — both matching the live registry',
162
+ standard: 'CDD principle: documented counts match implemented counts',
163
+ },
153
164
  surfaceSync: {
154
165
  title: 'Surface-Sync — every code-derived list entry is documented',
155
166
  what: 'Item-level check (complementing canonical-sync\'s count-level check). For each configured surface (e.g. commands → `cli/commands/*.mjs`), compares the discovered files against the names appearing in table rows / bullet lists in target docs (README.md, AGENTS.md). Warns when a code item is missing from the doc, or a doc item is missing from code.',
@@ -25,106 +25,8 @@ const CODE_EXTENSIONS = new Set([
25
25
  // false-negative warnings on Python/Rust/Go/Java projects (reported by the
26
26
  // quick-recon-tool Python user: TEST-SPEC.md was flagged unlinked even
27
27
  // though Python tests existed because `.test.mjs` didn't match `test_*.py`).
28
- // Each `glob` is now a single regex that ALSO matches the equivalent
29
- // patterns in other ecosystems we care about.
30
- const TEST_PATTERNS = [
31
- // JS/TS
32
- /\.test\.[jt]sx?$/, /\.spec\.[jt]sx?$/, /\.test\.(mjs|cjs)$/,
33
- // Python — pytest conventions
34
- /(^|\/)test_[^/]+\.py$/, /[^/]+_test\.py$/, /(^|\/)tests?\/[^/]+\.py$/,
35
- // Go
36
- /_test\.go$/,
37
- // Java/Kotlin — JUnit/TestNG conventions
38
- /(?:Test|Tests|Spec|IT)\.(?:java|kt)$/,
39
- // Rust — tests live in tests/ or as #[cfg(test)] modules; pattern below covers integration tests
40
- /(^|\/)tests\/[^/]+\.rs$/,
41
- // Ruby/RSpec
42
- /_spec\.rb$/, /_test\.rb$/,
43
- // PHP/PHPUnit
44
- /Test\.php$/, /(^|\/)tests?\/[^/]+\.php$/,
45
- ];
28
+ import { TEST_PATTERNS, TRACE_MAP } from '../shared-trace-patterns.mjs';
46
29
 
47
- /**
48
- * Mapping of canonical documents to the code/config artifacts they trace to.
49
- * Each entry defines what source patterns prove coverage of that canonical doc.
50
- *
51
- * v0.16-P2: every glob is now multi-language. JS/TS patterns are preserved
52
- * (the most common case); Python/Rust/Go/Java/Ruby/PHP equivalents are
53
- * appended so non-JS projects don't false-negative.
54
- */
55
- const TRACE_MAP = {
56
- 'ARCHITECTURE.md': {
57
- standard: 'arc42 / C4 Model',
58
- sourcePatterns: [
59
- // Entry points: JS (index/main/app/server.[jt]sx?), Python (__main__.py, main.py, app.py, cli.py),
60
- // Go (main.go, cmd/), Rust (main.rs, lib.rs), Java (Application.java, Main.java)
61
- { label: 'Entry points', glob: /(?:^|\/)(?:index|main|app|server|cli|__main__|Application|Main)\.(?:[jt]sx?|mjs|cjs|py|go|rs|java|kt|rb)$|(?:^|\/)cmd\// },
62
- // Config files: JS (package.json/tsconfig/next.config/vite.config), Python (pyproject.toml/setup.py/setup.cfg),
63
- // Rust (Cargo.toml), Go (go.mod), Java/Kotlin (pom.xml/build.gradle), Ruby (Gemfile), PHP (composer.json)
64
- { label: 'Config files', glob: /(?:^|\/)(?:package\.json|tsconfig|next\.config|vite\.config|pyproject\.toml|setup\.(?:py|cfg)|Cargo\.toml|go\.mod|pom\.xml|build\.gradle|Gemfile|composer\.json)/ },
65
- // Route handlers + module dirs
66
- { label: 'Route handlers / modules', glob: /(?:^|\/)(?:routes?|api|pages|app|controllers?|handlers?|views?|services?)\// },
67
- ],
68
- },
69
- 'DATA-MODEL.md': {
70
- standard: 'C4 Component / ER (Chen)',
71
- sourcePatterns: [
72
- // Schema/model files: JS (schema/model/entity/migration/prisma), Python (models.py/schema.py/Pydantic/SQLAlchemy),
73
- // Go (models/), Rust (struct definitions in models/), Java (entities/)
74
- { label: 'Schema definitions', glob: /(?:schema|model|entity|migration|prisma)/i },
75
- // Type definitions: JS types.ts, Python types.py, Rust types.rs
76
- { label: 'Type definitions', glob: /(?:^|\/)types?\.(?:[jt]sx?|mjs|py|rs|go|java|kt)$/ },
77
- // ORM/database libs (any language)
78
- { label: 'Database configs', glob: /(?:drizzle|knex|sequelize|typeorm|sqlalchemy|alembic|django|diesel|sqlx|gorm|hibernate|active.?record)/i },
79
- ],
80
- },
81
- 'TEST-SPEC.md': {
82
- standard: 'ISO/IEC/IEEE 29119-3',
83
- sourcePatterns: [
84
- // Test files in any ecosystem (mirrors TEST_PATTERNS above)
85
- { label: 'Test files', glob: /\.(?:test|spec)\.(?:mjs|cjs|[jt]sx?)$|(?:^|\/)test_[^/]+\.py$|[^/]+_test\.py$|_test\.go$|(?:Test|Spec|IT)\.(?:java|kt)$|(?:^|\/)tests?\/[^/]+\.(?:rs|py|rb|php)$|_(?:spec|test)\.rb$|Test\.php$/ },
86
- // Test runner configs: JS (jest/vitest/playwright/cypress), Python (pytest.ini/tox.ini), Rust (Cargo.toml has [[test]]),
87
- // Java (pom.xml/build.gradle), Go (no config file typically)
88
- { label: 'Test config', glob: /(?:jest|vitest|playwright|cypress|pytest|tox|phpunit)\.config|(?:^|\/)pytest\.ini$|(?:^|\/)tox\.ini$|(?:^|\/)phpunit\.xml$/ },
89
- { label: 'E2E / integration tests', glob: /(?:^|\/)(?:e2e|integration|tests?\/integration)\// },
90
- ],
91
- },
92
- 'SECURITY.md': {
93
- standard: 'OWASP ASVS v4.0',
94
- sourcePatterns: [
95
- // Auth modules — semantic, language-agnostic
96
- { label: 'Auth modules', glob: /(?:auth|login|session|jwt|oauth|middleware|guard|csrf|cors|permissions?|policy)/i },
97
- // Secret configs — .env family + secrets.* / keyring patterns
98
- { label: 'Secret configs', glob: /\.env(?:\.|$)|(?:^|\/)secrets?\.(?:py|js|ts|yaml|yml|json)$|keyring/i },
99
- // Gitignore + ignore files
100
- { label: 'Ignore files', glob: /^\.(?:git|docker|npm)ignore$/ },
101
- ],
102
- },
103
- 'ENVIRONMENT.md': {
104
- standard: '12-Factor App',
105
- sourcePatterns: [
106
- // .env family across all ecosystems
107
- { label: 'Env files', glob: /\.env(?:\.|$)|(?:^|\/)\.envrc$/ },
108
- // Containerization
109
- { label: 'Container configs', glob: /(?:^|\/)(?:Dockerfile|docker-compose|\.dockerignore|Containerfile)/ },
110
- // Python venv / requirements / lock files
111
- { label: 'Python env', glob: /(?:^|\/)(?:requirements[^/]*\.txt|Pipfile|poetry\.lock|uv\.lock|pyproject\.toml)$/ },
112
- // CI/CD configs
113
- { label: 'CI/CD configs', glob: /(?:^|\/)\.(?:github|gitlab-ci|circleci|drone|gitea)/ },
114
- ],
115
- },
116
- 'API-REFERENCE.md': {
117
- standard: 'OpenAPI 3.1',
118
- sourcePatterns: [
119
- // Route handlers + Python views/urls + Java/Spring controllers
120
- { label: 'Route handlers', glob: /(?:^|\/)(?:routes?|controllers?|handlers?|views?|urls?\.py)/ },
121
- // OpenAPI / API specs
122
- { label: 'API spec', glob: /(?:openapi|swagger|asyncapi)\.(?:json|ya?ml)/ },
123
- // Middleware / decorators
124
- { label: 'API middleware', glob: /(?:^|\/)middleware\/|decorators?\.py$/ },
125
- ],
126
- },
127
- };
128
30
 
129
31
  /**
130
32
  * L-2 / S-3 — Reverse trace: given a code file, find which canonical doc