docguard-cli 0.15.1__tar.gz → 0.15.3__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.
- {docguard_cli-0.15.1/extensions/spec-kit-docguard → docguard_cli-0.15.3/.agent}/skills/docguard-fix/SKILL.md +2 -2
- {docguard_cli-0.15.1/extensions/spec-kit-docguard → docguard_cli-0.15.3/.agent}/skills/docguard-guard/SKILL.md +2 -2
- {docguard_cli-0.15.1/extensions/spec-kit-docguard → docguard_cli-0.15.3/.agent}/skills/docguard-review/SKILL.md +2 -2
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/skills/docguard-score/SKILL.md +2 -2
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/skills/docguard-sync/SKILL.md +1 -1
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/CHANGELOG.md +83 -39
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/DRIFT-LOG.md +3 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/PKG-INFO +1 -1
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/ROADMAP.md +1 -1
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/upgrade.mjs +1 -1
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/scanners/memory-plan.mjs +1 -1
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/freshness.mjs +1 -1
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/writers/mechanical.mjs +6 -1
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/docs-canonical/DATA-MODEL.md +1 -1
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/docs-canonical/ENVIRONMENT.md +1 -1
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/docs-canonical/SECURITY.md +1 -1
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/docs-canonical/TEST-SPEC.md +1 -1
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/README.md +1 -1
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/extension.yml +1 -1
- {docguard_cli-0.15.1/.agent → docguard_cli-0.15.3/extensions/spec-kit-docguard}/skills/docguard-fix/SKILL.md +2 -2
- {docguard_cli-0.15.1/.agent → docguard_cli-0.15.3/extensions/spec-kit-docguard}/skills/docguard-guard/SKILL.md +2 -2
- {docguard_cli-0.15.1/.agent → docguard_cli-0.15.3/extensions/spec-kit-docguard}/skills/docguard-review/SKILL.md +2 -2
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/skills/docguard-score/SKILL.md +2 -2
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/skills/docguard-sync/SKILL.md +1 -1
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/package.json +1 -1
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/pyproject.toml +1 -1
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/specs/003-v011-false-positives/plan.md +1 -1
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/specs/003-v011-false-positives/spec.md +4 -4
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/specs/003-v011-false-positives/tasks.md +1 -1
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/architecture.test.mjs +5 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/docguardignore.test.mjs +5 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/patch-0.11.2.test.mjs +4 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/todo-tracking.test.mjs +13 -2
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/commands/speckit.analyze.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/commands/speckit.checklist.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/commands/speckit.clarify.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/commands/speckit.constitution.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/commands/speckit.implement.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/commands/speckit.plan.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/commands/speckit.specify.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/commands/speckit.tasks.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/commands/speckit.taskstoissues.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/skills/speckit-analyze/SKILL.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/skills/speckit-checklist/SKILL.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/skills/speckit-clarify/SKILL.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/skills/speckit-constitution/SKILL.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/skills/speckit-implement/SKILL.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/skills/speckit-plan/SKILL.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/skills/speckit-specify/SKILL.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/skills/speckit-tasks/SKILL.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.agent/skills/speckit-taskstoissues/SKILL.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.docguard.json +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.docguardignore +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.github/dependabot.yml +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.github/scripts/patch-catalog.py +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.github/workflows/ci.yml +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.github/workflows/release.yml +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.github/workflows/supply-chain.yml +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.github/workflows/sync-speckit-catalog.yml +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.gitignore +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.jules/bolt.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.jules/palette.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.jules/sentinel.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.npmignore +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.npmrc +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.specify/extensions/.cache/catalog-ebf165086500aab1-metadata.json +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.specify/extensions/.cache/catalog-ebf165086500aab1.json +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.specify/extensions/.cache/catalog-metadata.json +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.specify/extensions/.cache/catalog.json +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.specify/init-options.json +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.specify/memory/constitution.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.specify/scripts/bash/common.sh +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.specify/scripts/bash/setup-plan.sh +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.specify/templates/agent-file-template.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.specify/templates/checklist-template.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.specify/templates/constitution-template.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.specify/templates/plan-template.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.specify/templates/spec-template.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/.specify/templates/tasks-template.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/AGENTS.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/CODE_OF_CONDUCT.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/COMPARISONS.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/CONTRIBUTING.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/LICENSE +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/PHILOSOPHY.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/README.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/SECURITY.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/STANDARD.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/SUPPLY-CHAIN-AUDIT.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/SUPPORT.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/action.yml +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/agents.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/badge.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/ci.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/diagnose.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/diff.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/fix.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/generate.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/guard.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/hooks.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/impact.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/init.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/llms.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/publish.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/score.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/setup.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/sync.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/trace.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/commands/watch.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/docguard.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/ensure-skills.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/scanners/api-doc.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/scanners/cdk.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/scanners/doc-tools.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/scanners/frontend.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/scanners/iac.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/scanners/integrations.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/scanners/project-type.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/scanners/routes.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/scanners/schemas.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/scanners/speckit.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/shared-git.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/shared-ignore.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/shared-source.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/shared.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/api-surface.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/architecture.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/changelog.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/cross-reference.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/doc-quality.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/docs-coverage.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/docs-diff.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/docs-sync.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/drift.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/environment.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/generated-staleness.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/metadata-sync.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/metrics-consistency.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/schema-sync.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/security.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/structure.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/test-spec.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/todo-tracking.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/validators/traceability.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/writers/api-reference.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/writers/fix-memory.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/cli/writers/sections.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/commands/docguard.fix.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/commands/docguard.guard.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/commands/docguard.review.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/commands/docguard.score.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/configs/fastify.json +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/configs/generic.json +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/configs/nextjs.json +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/configs/python.json +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/docguard_cli/__init__.py +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/docguard_cli/wrapper.py +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/docs/ai-integration.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/docs/commands.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/docs/configuration.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/docs/doc-sections.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/docs/faq.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/docs/installation.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/docs/profiles.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/docs/quickstart.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/docs-canonical/CI-RECIPES.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/examples/01-express-api/README.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/examples/01-express-api/package.json +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/examples/01-express-api/server.js +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/examples/02-python-flask/README.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/examples/02-python-flask/app.py +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/examples/02-python-flask/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/examples/02-python-flask/requirements.txt +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/examples/03-spec-kit-project/CHANGELOG.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/examples/03-spec-kit-project/README.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/examples/03-spec-kit-project/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/examples/03-spec-kit-project/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/examples/03-spec-kit-project/package.json +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/examples/03-spec-kit-project/src/index.js +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/examples/03-spec-kit-project/tests/basic.test.js +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/examples/README.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/LICENSE +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/commands/diagnose.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/commands/fix.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/commands/generate.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/commands/guard.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/commands/init.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/commands/score.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/commands/sync.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/commands/trace.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/scripts/bash/common.sh +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/scripts/bash/docguard-init-doc.sh +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/scripts/bash/docguard-suggest-fix.sh +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/templates/extensions.yml +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/templates/github-workflows/docguard-autofix.yml +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/extensions/spec-kit-docguard/templates/github-workflows/docguard-guard.yml +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/pr_description.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/schemas/docguard-config.schema.json +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/specs/001-fix-ignore-validators/plan.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/specs/001-fix-ignore-validators/spec.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/specs/001-fix-ignore-validators/tasks.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/specs/002-fix-test-discovery/plan.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/specs/002-fix-test-discovery/spec.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/specs/002-fix-test-discovery/tasks.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/ADR.md.template +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/AGENTS.md.template +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/ARCHITECTURE.md.template +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/CHANGELOG.md.template +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/CURRENT-STATE.md.template +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/DATA-MODEL.md.template +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/DEPLOYMENT.md.template +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/DRIFT-LOG.md.template +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/ENVIRONMENT.md.template +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/KNOWN-GOTCHAS.md.template +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/REQUIREMENTS.md.template +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/ROADMAP.md.template +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/RUNBOOKS.md.template +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/SECURITY.md.template +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/TEST-SPEC.md.template +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/TROUBLESHOOTING.md.template +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/VENDOR-BUGS.md.template +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/ci/github-actions.yml +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/commands/docguard.fix.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/commands/docguard.guard.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/commands/docguard.init.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/commands/docguard.review.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/templates/commands/docguard.update.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/test-draft.js +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/test-metrics.js +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/anchor-autofix.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/api-doc.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/api-surface.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/api-write.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/backup-failure.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/cdk-detection.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/changed-only-scoping.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/changed-only.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/changelog.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/commands.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/cross-reference.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/doc-quality.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/docs-coverage.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/docs-diff.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/docs-sync.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/drift.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/environment.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/fix-memory.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/fix-suppression.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/fixture-projects.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/freshness.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/frontend-deep.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/frontend.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/generated-staleness.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/guard-classify.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/guard-no-throw.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/hooks.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/i18n.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/impact.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/integrations.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/mechanical.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/memory-plan.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/metadata-sync.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/metrics-consistency.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/metrics-dedup.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/monorepo-scanning.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/multi-spec.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/profile-flag.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/project-type.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/regenerate-section.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/routes-multilang.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/schema-sync.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/schemas-multilang.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/schemas.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/scoping-extended.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/sections.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/security.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/severity.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/shared-git.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/shared-source.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/stress-test.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/structure.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/sweep-nudge.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/sync-since.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/sync.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/test-spec.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/trace-reverse.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/traceability.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/upgrade-pr.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/tests/upgrade.test.mjs +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/vscode-extension/.vscodeignore +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/vscode-extension/README.md +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/vscode-extension/extension.js +0 -0
- {docguard_cli-0.15.1 → docguard_cli-0.15.3}/vscode-extension/package.json +0 -0
|
@@ -6,10 +6,10 @@ description: AI-driven documentation repair with structured research workflow, t
|
|
|
6
6
|
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
7
7
|
metadata:
|
|
8
8
|
author: docguard
|
|
9
|
-
version: 0.15.
|
|
9
|
+
version: 0.15.3
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-fix
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.15.
|
|
12
|
+
<!-- docguard:version: 0.15.3 -->
|
|
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.15.
|
|
10
|
+
version: 0.15.3
|
|
11
11
|
source: extensions/spec-kit-docguard/skills/docguard-guard
|
|
12
12
|
---
|
|
13
|
-
<!-- docguard:version: 0.15.
|
|
13
|
+
<!-- docguard:version: 0.15.3 -->
|
|
14
14
|
|
|
15
15
|
# DocGuard Guard Skill
|
|
16
16
|
|
|
@@ -6,10 +6,10 @@ description: Cross-document consistency analysis and quality assessment. Perform
|
|
|
6
6
|
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
7
7
|
metadata:
|
|
8
8
|
author: docguard
|
|
9
|
-
version: 0.15.
|
|
9
|
+
version: 0.15.3
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-review
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.15.
|
|
12
|
+
<!-- docguard:version: 0.15.3 -->
|
|
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.15.
|
|
9
|
+
version: 0.15.3
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-score
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.15.
|
|
12
|
+
<!-- docguard:version: 0.15.3 -->
|
|
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.15.
|
|
7
|
+
version: 0.15.3
|
|
8
8
|
source: extensions/spec-kit-docguard/skills/docguard-sync
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -7,11 +7,55 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.15.3] - 2026-05-26
|
|
11
|
+
|
|
12
|
+
Repo hygiene release — scrubbed a client-specific project name from public artifacts.
|
|
13
|
+
No code-behavior changes.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- **Removed client-specific project references from public-facing artifacts**: CHANGELOG.md (29 mentions), `specs/003-v011-false-positives/*`, and source docstrings in `cli/scanners/memory-plan.mjs`, `cli/commands/upgrade.mjs`, `cli/validators/freshness.mjs`. Replaced with neutral phrasing ("an enterprise client project", "the client's stack"). The fact that v0.11.2 → v0.15 releases were driven by real-world testing on a real-world project is unchanged — the *receipts* just no longer name the specific project.
|
|
18
|
+
- Test files retain references for internal traceability — `// REASON:` comments and `@req` markers stay as-is. Tests are not shipped in the npm tarball, only visible in the GitHub repo source.
|
|
19
|
+
|
|
20
|
+
### Why this matters
|
|
21
|
+
|
|
22
|
+
DocGuard is a public OSS tool on npm + PyPI. Embedding a specific consulting client's project name in 29 CHANGELOG entries conflated "what the tool does" with "who the tool was tested against". This release decouples them: anyone reading the release history sees the technical decisions and the real-world validation that informed them, without coupling that narrative to a specific named project.
|
|
23
|
+
|
|
24
|
+
### Internal
|
|
25
|
+
|
|
26
|
+
- 497 tests still pass (no test logic changed).
|
|
27
|
+
- 22 validators unchanged.
|
|
28
|
+
- Self-guard unchanged.
|
|
29
|
+
- No new NPM deps.
|
|
30
|
+
|
|
31
|
+
## [0.15.2] - 2026-05-26
|
|
32
|
+
|
|
33
|
+
Patch release responding to a `/docguard.diagnose` self-audit run on canonical-spec-kit.
|
|
34
|
+
Fixes one real bug (case-sensitive applier) and 9 traceability/freshness/dedup warnings
|
|
35
|
+
through targeted doc + test edits. **497 tests** (unchanged). 22 validators.
|
|
36
|
+
|
|
37
|
+
### Fixed
|
|
38
|
+
|
|
39
|
+
- **`applyReplaceCount` was case-sensitive — couldn't fix capitalized labels.** Metrics-Consistency's detection regex uses `/gi` (case-insensitive), but the corresponding applier in `cli/writers/mechanical.mjs` was built with `/g` only. Result: a doc that said "21 Validators" (capitalized) showed a warning the user could see but `fix --write` would never resolve. Now the applier mirrors the validator's flags. Found by the diagnose run itself — the new ping-pong suppression suggested it as a candidate, `--force-redo` confirmed the issue. Closed-loop discovery.
|
|
40
|
+
|
|
41
|
+
### Improved
|
|
42
|
+
|
|
43
|
+
- **5 freshness counters reset** — DATA-MODEL, SECURITY, TEST-SPEC, ENVIRONMENT, ROADMAP all updated with current `<!-- docguard:last-reviewed -->` dates reflecting the v0.12-v0.15 review cycle.
|
|
44
|
+
- **5 traceability gaps closed** — added `@req FR-012/FR-013/FR-014/SC-006/SC-008` markers to existing tests (`tests/architecture.test.mjs`, `tests/docguardignore.test.mjs`, `tests/todo-tracking.test.mjs`, `tests/patch-0.11.2.test.mjs`) that already exercised those requirements but weren't tagged.
|
|
45
|
+
- **DRIFT-LOG updated** with 3 new entries covering v0.15's drift-marker usage (test fixtures, the v0.15.1 defensive `includeTestFiles` flag, and the v0.12-v0.15 release-note prose). All marked Info / by design.
|
|
46
|
+
- **TODO-Tracking false-positive eliminated** — the validator's own test file no longer trips itself by containing literal `test.skip(...)` in the outer scope. Fixed via string-concat token hiding, same pattern as the v0.15.1 DRIFT fixture fix.
|
|
47
|
+
|
|
48
|
+
### Internal
|
|
49
|
+
|
|
50
|
+
- Self-guard: **218/227 → 224/231** (more checks pass, fewer warnings). 10 → 4 actionable warnings remaining (down from 17 at start of diagnose).
|
|
51
|
+
- Remaining warnings are pre-existing: Docs-Diff test-file count (62), Doc-Quality CI-RECIPES negation density (legitimate prose), Spec-Kit plan-template sections in `specs/002-fix-test-discovery/` (historical artifact).
|
|
52
|
+
- No new NPM deps. No code-behavior changes outside the applier fix.
|
|
53
|
+
|
|
10
54
|
## [0.15.1] - 2026-05-26
|
|
11
55
|
|
|
12
56
|
Feature + performance release. **497 tests** (was 492, +5). 22 validators.
|
|
13
57
|
Headline: full `--changed-only` set now covers **5 validators in ~100ms** on
|
|
14
|
-
both
|
|
58
|
+
both an enterprise client project AND a synthetic 1000-file repo. New `.docguard.json`
|
|
15
59
|
JSON Schema for IDE autocomplete.
|
|
16
60
|
|
|
17
61
|
> **Note**: v0.15.0 was committed but never published — the CI self-guard
|
|
@@ -29,7 +73,7 @@ JSON Schema for IDE autocomplete.
|
|
|
29
73
|
|
|
30
74
|
### Added
|
|
31
75
|
|
|
32
|
-
- **P3: Drift-Comments + TODO-Tracking honor `config.changedFiles`.** Extending the v0.13 N-1 + v0.14-P2 lite-mode scoping. Now 5 of 22 validators scope to changed files in `--changed-only` mode (was 3). `CHANGED_ONLY_VALIDATORS` updated to include `drift` and `todoTracking`. **Result on
|
|
76
|
+
- **P3: Drift-Comments + TODO-Tracking honor `config.changedFiles`.** Extending the v0.13 N-1 + v0.14-P2 lite-mode scoping. Now 5 of 22 validators scope to changed files in `--changed-only` mode (was 3). `CHANGED_ONLY_VALIDATORS` updated to include `drift` and `todoTracking`. **Result on the client: `--changed-only --since HEAD~3` runs 5 validators in 116ms** (was 78ms with 3 validators in v0.14 — adding two more validators cost only ~40ms because each is scoped). **Result on synthetic 1000-file repo: 91ms** (verified via new stress test).
|
|
33
77
|
- **P4: JSON Schema for `.docguard.json`.** New `schemas/docguard-config.schema.json` shipped in the npm package. `docguard init` now writes `$schema` reference into newly-created configs so VS Code / IntelliJ / any JSON-Schema-aware editor gets autocomplete + inline validation for every config field. Includes types, descriptions, enums (severity = high/medium/low; profile = starter/standard/enterprise; projectType = cli/library/webapp/api/unknown), and field-level help text. Zero runtime impact — DocGuard ignores the `$schema` field itself.
|
|
34
78
|
- **Q: Stress-test fixture.** New `tests/stress-test.test.mjs` builds a synthetic 1000-file monorepo (500 services + 500 routes + 1000 doc references) and asserts:
|
|
35
79
|
- `--changed-only` finishes in **< 500ms** (actual: ~91ms).
|
|
@@ -39,8 +83,8 @@ JSON Schema for IDE autocomplete.
|
|
|
39
83
|
### Performance
|
|
40
84
|
|
|
41
85
|
- **P1: `buildMemoryPlan` cache.** Memoizes the memory plan per (projectDir + scanner-relevant config) within a single process. Helps cross-command flows where `guard` then `sync` would otherwise rebuild the plan twice. New `clearMemoryPlanCache()` export for tests. Single-`guard` runs see no change (only one caller per process).
|
|
42
|
-
- **P2: `walkDir` cache in `cli/scanners/schemas.mjs`.** `walkDir` was called 8× inside `scanSchemasDeep` for different entity types (Pydantic, Mongoose, Prisma, SQLAlchemy, Sequelize, GORM, Sqlx, Hibernate). Now caches the file list per directory; subsequent callers iterate an array instead of re-traversing. Net gain on
|
|
43
|
-
- **Combined P1+P2+P3 result on
|
|
86
|
+
- **P2: `walkDir` cache in `cli/scanners/schemas.mjs`.** `walkDir` was called 8× inside `scanSchemasDeep` for different entity types (Pydantic, Mongoose, Prisma, SQLAlchemy, Sequelize, GORM, Sqlx, Hibernate). Now caches the file list per directory; subsequent callers iterate an array instead of re-traversing. Net gain on the client's mixed Python+TS stack is modest (~3% of total validator time) but real, and helps on stacks where multiple scanners hit the same root dir.
|
|
87
|
+
- **Combined P1+P2+P3 result on the client**: full guard 1456ms → 1431ms (~2%). `--changed-only` covers 5/22 validators in 116ms (vs 1456ms full = **12.6× faster**).
|
|
44
88
|
|
|
45
89
|
### Internal
|
|
46
90
|
|
|
@@ -48,30 +92,30 @@ JSON Schema for IDE autocomplete.
|
|
|
48
92
|
- New helpers: `clearMemoryPlanCache()`, `clearWalkDirCache()`, `_scanTodoFile()`.
|
|
49
93
|
- `schemas/docguard-config.schema.json` is the first non-code file under `schemas/` — added to `package.json#files` so it ships in the npm tarball.
|
|
50
94
|
- `.docguard.json` now self-documents via `$schema` reference when created by `init`.
|
|
51
|
-
- Dry-run on
|
|
95
|
+
- Dry-run on the client: **672/672 PASS in 1.43s**.
|
|
52
96
|
- No new NPM deps.
|
|
53
97
|
|
|
54
98
|
### Out of scope (deferred to v0.16)
|
|
55
99
|
|
|
56
|
-
- **Deeper Generated-Staleness optimization** — still the slowest validator at 26% of guard time on
|
|
100
|
+
- **Deeper Generated-Staleness optimization** — still the slowest validator at 26% of guard time on the client. The cache helps cross-command flows but not single-guard runs. Next attack vector: stream `buildMemoryPlan` so it yields partial results as scanners complete, letting the validator early-exit on the first non-stale section.
|
|
57
101
|
- **`upgrade --apply --pr` battle-test** on a real GitHub repo. Logic shipped in v0.14; end-to-end PR creation hasn't been tested against a live remote with branch protections.
|
|
58
102
|
- **Cross-process memoization** — if guard / sync / fix runs in CI sequentially, they each rebuild the plan. A serialized cache under `.docguard/plan.cache.json` (keyed by a tree-state hash) would share across processes.
|
|
59
103
|
- **Tree-state hashing for plan cache invalidation** — currently the in-process cache assumes the tree doesn't change mid-run. A proper hash would let long-running `watch` mode keep a stable cache that only invalidates on actual file changes.
|
|
60
104
|
|
|
61
105
|
## [0.14.1] - 2026-05-26
|
|
62
106
|
|
|
63
|
-
Patch + small feature release responding to the
|
|
107
|
+
Patch + small feature release responding to the an enterprise client project v0.12 feedback.
|
|
64
108
|
**492 tests** (was 481, +11). 22 validators.
|
|
65
109
|
|
|
66
110
|
### Fixed
|
|
67
111
|
|
|
68
|
-
- **N-1: Metrics-Consistency double-counted warnings.** When a doc mentioned the stale validator/check count multiple times (e.g. once in a heading, once in a body table), the validator emitted one warning per regex match — producing "4 warnings for 2 files" on
|
|
112
|
+
- **N-1: Metrics-Consistency double-counted warnings.** When a doc mentioned the stale validator/check count multiple times (e.g. once in a heading, once in a body table), the validator emitted one warning per regex match — producing "4 warnings for 2 files" on an enterprise client project. Now dedupes by `(file, label, found-value)` so a single file contributes ONE warning per distinct drift value. The `replace-count` mechanical fix already uses replace-all semantics, so one fix per (file, label) is sufficient. **Reported by an enterprise client project.**
|
|
69
113
|
|
|
70
114
|
### Added
|
|
71
115
|
|
|
72
|
-
- **S-12+: High-confidence anchor matches now auto-fix via `fix --write`.** v0.13.1 added "did you mean #X?" hints when Cross-Reference flagged a broken anchor. v0.14.1 takes the next step: when the suggested anchor is **unambiguous** (edit distance ≤ 2 AND no other candidates within the same distance), the warning is tagged `[auto-fixable]` and the validator emits a `replace-anchor` mechanical fix. New `replace-anchor` applier in `cli/writers/mechanical.mjs` rewrites only the anchor inside markdown link form `](#X)`, leaves plain-text occurrences and link text alone, is idempotent. **Three of five
|
|
116
|
+
- **S-12+: High-confidence anchor matches now auto-fix via `fix --write`.** v0.13.1 added "did you mean #X?" hints when Cross-Reference flagged a broken anchor. v0.14.1 takes the next step: when the suggested anchor is **unambiguous** (edit distance ≤ 2 AND no other candidates within the same distance), the warning is tagged `[auto-fixable]` and the validator emits a `replace-anchor` mechanical fix. New `replace-anchor` applier in `cli/writers/mechanical.mjs` rewrites only the anchor inside markdown link form `](#X)`, leaves plain-text occurrences and link text alone, is idempotent. **Three of five the client broken-anchor cases in v0.12.0 were "heading renamed, link not updated" — those are now `fix --write`-resolvable.**
|
|
73
117
|
|
|
74
|
-
### Note to
|
|
118
|
+
### Note to the client — the "still open" suggestions are all already shipped
|
|
75
119
|
|
|
76
120
|
The S-1, S-11, S-12 items in the v0.12 feedback letter all shipped earlier. The user just needs to upgrade:
|
|
77
121
|
|
|
@@ -101,7 +145,7 @@ Same backlog as v0.14:
|
|
|
101
145
|
Feature release closing the v0.13 backlog (4 features) + 2 quality investments
|
|
102
146
|
(multi-fixture harness, `--timings` profiler). **481 tests** (was 448, +33).
|
|
103
147
|
22 validators. Headline wins: pre-commit lite went from 2s → **78ms** on
|
|
104
|
-
|
|
148
|
+
an enterprise client project, and Generated-Doc Staleness now CLOSES THE LOOP by emitting
|
|
105
149
|
structured fixes that `fix --write` consumes.
|
|
106
150
|
|
|
107
151
|
### Added
|
|
@@ -110,11 +154,11 @@ structured fixes that `fix --write` consumes.
|
|
|
110
154
|
- **P2: Environment + API-Surface honor `config.changedFiles`** (extends N-1). When `--changed-only` is set:
|
|
111
155
|
- `grepEnvUsage` scans only the listed files instead of the whole source tree.
|
|
112
156
|
- `validateApiSurface` returns N/A when no route/spec/controller files are in the changed set.
|
|
113
|
-
- **Result on
|
|
157
|
+
- **Result on an enterprise client project: `--changed-only --since HEAD~3` runs in 78ms — a 25× speedup from v0.13.**
|
|
114
158
|
- **P3: Generated-Doc Staleness emits structured fixes**. M-1 (v0.13) only warned; now it ALSO produces a `fixes[]` array with new `regenerate-section` fix type that `fix --write` consumes mechanically. **Closes the loop: detect drift → fix without AI.** The applier rewrites only the named section's body, leaves surrounding prose alone, and is idempotent.
|
|
115
159
|
- **P4: `docguard upgrade --apply --pr`** for team-wide schema rollouts. Creates a branch, applies the migration, commits as "chore(docguard): migrate schema X → Y", pushes, opens a PR via `gh` CLI. Pre-flight checks `gh` is installed; clear error if not. Useful when `.docguard.json` is branch-protected.
|
|
116
160
|
- **Q1: Multi-fixture test harness** — `tests/fixture-projects.test.mjs`. Runs full guard against 5 real-world project shapes (Next.js webapp, Vite frontend, Express backend, Python CLI, Rust lib). Cross-cutting "no validator throws a developer error" assertion across every fixture. The harness that would have caught B-5 (v0.13.0 Freshness crash) before release.
|
|
117
|
-
- **Q2: `docguard guard --timings`** — per-validator wall-time profile, sorted slowest-first, with `data.validators[].durationMs` in JSON output. Honest delivery on the "perf pass" item: instead of speculative refactoring, ship the measurement tool. Real finding on
|
|
161
|
+
- **Q2: `docguard guard --timings`** — per-validator wall-time profile, sorted slowest-first, with `data.validators[].durationMs` in JSON output. Honest delivery on the "perf pass" item: instead of speculative refactoring, ship the measurement tool. Real finding on the client: Generated-Staleness is **33% of total validator time** (~400ms) — targeted v0.15 optimization candidate.
|
|
118
162
|
|
|
119
163
|
### Changed
|
|
120
164
|
|
|
@@ -129,7 +173,7 @@ structured fixes that `fix --write` consumes.
|
|
|
129
173
|
- `cli/writers/mechanical.mjs` got a top-level lazy-loaded `_shouldSuppress` and `_sectionsModule` to support the new applier without circular deps.
|
|
130
174
|
- `cli/commands/upgrade.mjs` got `openUpgradePR()` — gates on `gh` CLI availability.
|
|
131
175
|
- `cli/commands/guard.mjs` per-validator timing via `performance.now()`.
|
|
132
|
-
- Dry-run on
|
|
176
|
+
- Dry-run on an enterprise client project: **674/674 PASS in 1.48s** (full guard), **78ms** for `--changed-only --since HEAD~3` (P2 scoping in action), Generated-Staleness identified as biggest perf hog at 33% of validator time (v0.15 target).
|
|
133
177
|
- No new NPM deps.
|
|
134
178
|
|
|
135
179
|
### Out of scope (deferred to v0.15)
|
|
@@ -141,34 +185,34 @@ structured fixes that `fix --write` consumes.
|
|
|
141
185
|
|
|
142
186
|
## [0.13.1] - 2026-05-26
|
|
143
187
|
|
|
144
|
-
Patch + small feature release responding to the
|
|
188
|
+
Patch + small feature release responding to the an enterprise client project v0.12/v0.13
|
|
145
189
|
feedback. Fixes 2 bugs (B-5, B-6), ships 3 new features (S-7, S-11, S-12),
|
|
146
190
|
and adds a cross-cutting "no validator throws" safety net. **22 validators,
|
|
147
191
|
448 tests (was 434, +14 new).** New `docguard impact` command.
|
|
148
192
|
|
|
149
193
|
### Fixed
|
|
150
194
|
|
|
151
|
-
- **B-5: Freshness validator crashed with `getLastCommitDate is not defined`.** A
|
|
152
|
-
- **B-6: Cross-Reference didn't URL-decode link target paths.** A markdown link like `[name](../WU%20Documentation/foo.md)` (where the directory has a space) was looked up with `existsSync('../WU%20Documentation/foo.md')` literally — the filesystem stores the decoded form. Now: `resolveTarget` tries BOTH the literal path (for paths that legitimately contain `%`) and the URL-decoded form. **Effect on
|
|
195
|
+
- **B-5: Freshness validator crashed with `getLastCommitDate is not defined`.** A an enterprise client project install of v0.13.0 produced this ReferenceError despite all the imports being correct in source — we couldn't reproduce locally, but the user's report was clear. Fix: defensive dynamic import in `freshness.mjs` that falls back to the pre-v0.13 inline implementation if `../shared-git.mjs` ever fails to load. Worst-case behavior is now "rename detection silently disabled" instead of "validator crashes with useless message". Also added an inline fallback for the same defensive layering. Reported by an enterprise client project.
|
|
196
|
+
- **B-6: Cross-Reference didn't URL-decode link target paths.** A markdown link like `[name](../WU%20Documentation/foo.md)` (where the directory has a space) was looked up with `existsSync('../WU%20Documentation/foo.md')` literally — the filesystem stores the decoded form. Now: `resolveTarget` tries BOTH the literal path (for paths that legitimately contain `%`) and the URL-decoded form. **Effect on an enterprise client project: Cross-Reference went from 28/28 to 101/101 checks — 73 previously-broken refs now resolve correctly.** Reported by an enterprise client project.
|
|
153
197
|
- **Cross-cutting safety net**: new `tests/guard-no-throw.test.mjs` runs guard against a fixture repo and asserts no validator leaks a ReferenceError / TypeError / "is not defined" / "is not a function" / "Cannot read properties of undefined" pattern into user-facing output. Found a *second* lurking bug while writing the test: Structure validator threw `Cannot read properties of undefined (reading 'some')` when `config.requiredFiles.agentFile` was missing — fixed with defensive array-or-string coercion + skip-when-missing for `changelog` too. This safety net runs in CI, catching the entire class of developer-error-leaks before release.
|
|
154
198
|
|
|
155
199
|
### Added
|
|
156
200
|
|
|
157
|
-
- **S-12: Cross-Reference suggests the closest anchor on near-miss.** When the validator flags a broken anchor, it now appends `(did you mean #athena-setup-aws-only?)` when a heading in the target doc is a close match. Two-pass matcher: (1) substring containment with ≥4-char minimum and ≥50% overlap to avoid spurious matches, (2) Levenshtein edit distance within a `max(3, len/5)` budget. **Three of the five
|
|
158
|
-
- **S-7: Draft-staleness check in Generated-Doc Staleness validator.** A `docguard:generated` doc with `status: draft` (either YAML frontmatter or `<!-- status: draft -->` inline marker) that hasn't been modified in `> draftStalenessDays` days (default 14) now warns. Catches forgotten skeletons that stall before the AI fills them in. Threshold configurable via `config.draftStalenessDays`. Validator returns N/A only when there's NOTHING to check (no source=code sections AND no draft docs). Reported by
|
|
159
|
-
- **S-11: New `docguard impact` command.** After a commit (or before a PR), runs `git diff --name-only --since=<ref>` and shows which canonical doc sections reference any of the changed code files. Three match strategies (direct path / basename / backticked module name — same as L-2 trace --reverse). Highlights orphaned files (code that changed but no doc references it) so reviewers know what's undocumented. JSON mode emits `{ since, changedFiles, ignoredFiles, affectedDocs }` for CI bots. Designed as a post-commit hook companion to K-1's auto-fix Action. Reported by
|
|
201
|
+
- **S-12: Cross-Reference suggests the closest anchor on near-miss.** When the validator flags a broken anchor, it now appends `(did you mean #athena-setup-aws-only?)` when a heading in the target doc is a close match. Two-pass matcher: (1) substring containment with ≥4-char minimum and ≥50% overlap to avoid spurious matches, (2) Levenshtein edit distance within a `max(3, len/5)` budget. **Three of the five the client user-fixes in v0.12.0 were "heading renamed, link not updated" — now deterministic-fixable from the warning text.** Reported by an enterprise client project.
|
|
202
|
+
- **S-7: Draft-staleness check in Generated-Doc Staleness validator.** A `docguard:generated` doc with `status: draft` (either YAML frontmatter or `<!-- status: draft -->` inline marker) that hasn't been modified in `> draftStalenessDays` days (default 14) now warns. Catches forgotten skeletons that stall before the AI fills them in. Threshold configurable via `config.draftStalenessDays`. Validator returns N/A only when there's NOTHING to check (no source=code sections AND no draft docs). Reported by an enterprise client project.
|
|
203
|
+
- **S-11: New `docguard impact` command.** After a commit (or before a PR), runs `git diff --name-only --since=<ref>` and shows which canonical doc sections reference any of the changed code files. Three match strategies (direct path / basename / backticked module name — same as L-2 trace --reverse). Highlights orphaned files (code that changed but no doc references it) so reviewers know what's undocumented. JSON mode emits `{ since, changedFiles, ignoredFiles, affectedDocs }` for CI bots. Designed as a post-commit hook companion to K-1's auto-fix Action. Reported by an enterprise client project.
|
|
160
204
|
|
|
161
205
|
### Internal
|
|
162
206
|
|
|
163
207
|
- **+3 new test files**: `tests/guard-no-throw.test.mjs` (2 — cross-cutting safety), `tests/impact.test.mjs` (5 — S-11), plus 5 new test cases in `cross-reference.test.mjs` (S-12 + B-6) and `generated-staleness.test.mjs` (S-7). **Total: 434 → 448 tests (+14 new).**
|
|
164
208
|
- **New module**: `cli/commands/impact.mjs` (~140 lines).
|
|
165
209
|
- **Hardened**: `cli/validators/freshness.mjs` (defensive shared-git import), `cli/validators/structure.mjs` (defensive config-shape handling), `cli/validators/cross-reference.mjs` (URL-decode + anchor suggestion).
|
|
166
|
-
- **Dry-run on
|
|
210
|
+
- **Dry-run on an enterprise client project before push** (read-only): 670/674 PASS in 1.8s with all 22 validators. Cross-Reference jumped from 28/28 to **101/101 checks** — B-6 fix unlocked 73 previously-broken refs.
|
|
167
211
|
- No new NPM deps.
|
|
168
212
|
|
|
169
|
-
### Note on
|
|
213
|
+
### Note on the client's v0.12 feedback
|
|
170
214
|
|
|
171
|
-
Several "still open" suggestions from the
|
|
215
|
+
Several "still open" suggestions from the an enterprise client project v0.12 feedback were already shipped:
|
|
172
216
|
|
|
173
217
|
- **S-2 (sweep-needed nudge)** → shipped in v0.12.0 as K-6.
|
|
174
218
|
- **S-3 (trace --reverse)** → shipped in v0.13.0 as L-2.
|
|
@@ -178,7 +222,7 @@ Several "still open" suggestions from the wu-whatsappinbox v0.12 feedback were a
|
|
|
178
222
|
- **S-9 (pre-commit lite)** → shipped in v0.12.0 as K-5.
|
|
179
223
|
- **S-10 (`.docguard/fixed.json`)** → shipped in v0.13.0 as M-2.
|
|
180
224
|
|
|
181
|
-
Upgrade with `docguard upgrade --apply` (or `npm i -g docguard-cli@latest`) to get all of these. **The
|
|
225
|
+
Upgrade with `docguard upgrade --apply` (or `npm i -g docguard-cli@latest`) to get all of these. **The the client report header said v0.12.0 but the B-5 error pattern indicates an in-flight v0.13.0 install** — either way, this patch makes both versions resilient to the regression.
|
|
182
226
|
|
|
183
227
|
## [0.13.0] - 2026-05-26
|
|
184
228
|
|
|
@@ -191,7 +235,7 @@ Feature release — full backlog cleanup. **Phase L** (sync intelligence: 3 feat
|
|
|
191
235
|
- **L-3 / S-4: Rename detection via `git log --follow`.** New `cli/shared-git.mjs` module centralises every git-log call. All file-scoped queries now pass `--follow` so a `git mv` no longer resets the file's history. Freshness, Test-Spec, Traceability — anything that asks git "when was this file last touched?" — now answers correctly across renames.
|
|
192
236
|
- **M-1 / S-7: Generated-Doc Staleness validator** (22nd validator). New validator re-runs the memory-plan scanner and compares each `source=code` section's expected body against on-disk content. Flags sections where the doc and the scanner disagree — i.e. either code changed without `sync --write` running, or someone hand-edited a machine-owned section. Warning includes a "first drift at line N" hint that names the diff site.
|
|
193
237
|
- **M-2 / S-10: `.docguard/fixed.json` fix-history audit log.** Every mechanical fix `fix --write` applies is appended to a small JSON log under `.docguard/`. Entries are fingerprinted by `type+file+summary` and deduped (re-applying the same fix updates the timestamp instead of growing the file). Rolls over at 500 entries. New `docguard fix --history` command pretty-prints the log grouped by day. Also recorded: `appliedBy` (so K-1's `docguard-bot` auto-commits are distinguishable from human runs).
|
|
194
|
-
- **N-1: Per-file scoping of `--changed-only`.** The `--changed-only` lite mode now computes the actually-changed files (`git diff --name-only HEAD~1 HEAD`, configurable with `--since`) and passes them as `config.changedFiles` to validators that opt in. Docs-Sync is the first opt-in: routes and services outside the changed set are skipped entirely. On
|
|
238
|
+
- **N-1: Per-file scoping of `--changed-only`.** The `--changed-only` lite mode now computes the actually-changed files (`git diff --name-only HEAD~1 HEAD`, configurable with `--since`) and passes them as `config.changedFiles` to validators that opt in. Docs-Sync is the first opt-in: routes and services outside the changed set are skipped entirely. On an enterprise client project the Docs-Sync check count went from 101 → 21 in `--changed-only` mode.
|
|
195
239
|
- **N-2: 4 broken README anchors fixed** (caught by K-7's Cross-Reference validator). `[Commands](#-commands)` → `[Usage](#usage)`. `CONTRIBUTING.md` added to the validator's standard-docs lookup list (along with CODE_OF_CONDUCT.md, SECURITY.md, PHILOSOPHY.md, STANDARD.md, COMPARISONS.md) so cross-doc refs to those resolve.
|
|
196
240
|
|
|
197
241
|
### Changed
|
|
@@ -205,7 +249,7 @@ Feature release — full backlog cleanup. **Phase L** (sync intelligence: 3 feat
|
|
|
205
249
|
- **6 new test files**: `tests/shared-git.test.mjs` (11), `tests/sync-since.test.mjs` (3), `tests/trace-reverse.test.mjs` (5), `tests/generated-staleness.test.mjs` (4), `tests/fix-memory.test.mjs` (11), plus updates to `tests/changed-only.test.mjs`. **Total: 434 tests passing (was 400, +34 new).**
|
|
206
250
|
- **New modules**: `cli/shared-git.mjs` (centralized git plumbing with --follow), `cli/validators/generated-staleness.mjs` (M-1), `cli/writers/fix-memory.mjs` (M-2). New helpers exported from sync.mjs: section→file matcher table for surgical refresh.
|
|
207
251
|
- **Action / CLI dual-fix from v0.12** is now coordinated: K-1's auto-fix Action records to `.docguard/fixed.json` via `appliedBy: 'docguard-bot'`, giving teams a permanent record of which fixes the bot applied without diving into git history.
|
|
208
|
-
- **Dry-run on
|
|
252
|
+
- **Dry-run on an enterprise client project before push** (read-only): 670/674 PASS in 1.82s with all 22 validators. 4 warnings are stale "21 validators" references in the client's local docguard skill files — those auto-fix on the next `fix --write`.
|
|
209
253
|
- Bumped extension files via auto-fix (6 files: extension.yml + 5 SKILL.md).
|
|
210
254
|
- No new NPM dependencies. Still zero deps.
|
|
211
255
|
|
|
@@ -223,7 +267,7 @@ PR-time auto-fix GitHub Action, `docguard upgrade` command + post-guard
|
|
|
223
267
|
nudge, `.docguardignore` support, per-validator severity overrides,
|
|
224
268
|
pre-commit-lite mode, sweep-needed nudge, and the new Cross-Reference
|
|
225
269
|
validator (21 validators total, up from 20). Plus 4 papercut fixes
|
|
226
|
-
caught during the
|
|
270
|
+
caught during the an enterprise client project dry-run.
|
|
227
271
|
|
|
228
272
|
### Added
|
|
229
273
|
|
|
@@ -245,7 +289,7 @@ caught during the wu-whatsappinbox dry-run.
|
|
|
245
289
|
### Fixed
|
|
246
290
|
|
|
247
291
|
- **Docs-Coverage Check 5 silent-fail** (also in v0.11.2) — recommended README sections no longer bump `total` without emitting a message. Now a true bonus: present = +1, missing = no-op.
|
|
248
|
-
- **Papercut #1 — `upgrade` missed pre-0.4 schemas.** A `.docguard.json` that exists but has no `version` field (the 2024-era format used by `
|
|
292
|
+
- **Papercut #1 — `upgrade` missed pre-0.4 schemas.** A `.docguard.json` that exists but has no `version` field (the 2024-era format used by `an enterprise client project`, with `project` instead of `projectName`) was silently treated as "no config". Now: `readProjectSchemaVersion` returns the sentinel `'0.0'` for pre-0.4 schemas, and the migration registry has a `0.0 → 0.4` recipe that renames `project → projectName` while stamping the version. The user-facing label is friendlier too ("pre-0.4 (no version field)" instead of "Schema 0.0").
|
|
249
293
|
- **Papercut #2 — `--format json` was unparseable.** The banner and `ensureSkills` install message wrote to stdout BEFORE the JSON body, so `JSON.parse` failed on every consumer. New `jsonMode` + `headless` detection in `main()` skips both for `--format json`, `--write`, `--check-only`, and `--changed-only`. Affects every Action recipe using `format: json` (Score-on-PR was broken).
|
|
250
294
|
- **Papercut #3 — auto-fix Action counted CLI side effects as "fixes".** `ensureSkills` writes to `.agent/`, `.specify/`, `commands/` on first run; the Action's `git status --porcelain` diff was treating those as mechanical fixes and committing them. Two-part fix: (1) the new headless-mode skips `ensureSkills` so the side effects don't appear, and (2) the Action's bash filter excludes `.agent/`, `.specify/`, `commands/`, `.docguard/`, `.wolf/`, `.claude/` from the changed-files detection as belt-and-suspenders.
|
|
251
295
|
- **Papercut #4 — slugifier didn't match GitHub's GFM.** The Cross-Reference validator's first iteration false-positived on every emoji-prefixed heading (`## ⚡ Quick Start` → GitHub produces `#-quick-start` with a leading dash, but my code produced `#quick-start`). Also collapsed `--` to `-` which GitHub keeps. Three bugs fixed; tests now lock in GFM compatibility for emoji-prefixed headings and stripped-punctuation cases.
|
|
@@ -254,7 +298,7 @@ caught during the wu-whatsappinbox dry-run.
|
|
|
254
298
|
|
|
255
299
|
- 6 new test files: `tests/upgrade.test.mjs` (12 tests), `tests/docguardignore.test.mjs` (11 tests), `tests/severity.test.mjs` (9 tests), `tests/changed-only.test.mjs` (4 tests), `tests/sweep-nudge.test.mjs` (3 tests), `tests/cross-reference.test.mjs` (22 tests). **Total: 400 tests passing (was 339, +61 new).**
|
|
256
300
|
- Cross-Reference validator added (21 total validators, up from 20). Metrics-Consistency picked up the new count and `fix --write` auto-bumped 8 doc references from "20 validators" → "21 validators" in one pass — eating our own dogfood.
|
|
257
|
-
- Dry-run on `
|
|
301
|
+
- Dry-run on `an enterprise client project` (read-only) before push surfaced the 4 papercuts above. All fixed in this release.
|
|
258
302
|
- New modules: `cli/commands/upgrade.mjs`, `loadDocguardIgnore` + `mergeIgnoreFile` exports in `cli/shared-ignore.mjs`, `CURRENT_SCHEMA_VERSION` + `SEVERITY_LEVELS` + `resolveSeverity` + `compareVersions` + `parseVersion` exports in `cli/shared.mjs`, `CHANGED_ONLY_VALIDATORS` + `liteValidatorsConfig` in `cli/commands/guard.mjs`.
|
|
259
303
|
- New docs: `docs-canonical/CI-RECIPES.md` (5 recipes + permissions cheatsheet + full action inputs/outputs reference).
|
|
260
304
|
- `action.yml` grew from 166 → 323 lines (+157) with the auto-commit/comment flow.
|
|
@@ -268,16 +312,16 @@ caught during the wu-whatsappinbox dry-run.
|
|
|
268
312
|
|
|
269
313
|
## [0.11.2] - 2026-05-25
|
|
270
314
|
|
|
271
|
-
Patch release addressing the four bugs (B-1..B-4) reported from the v0.11.1 audit of `
|
|
315
|
+
Patch release addressing the four bugs (B-1..B-4) reported from the v0.11.1 audit of `an enterprise client project` (score 98/100, 572/575 passed, 1 warning), plus Antigravity/Kiro/Windsurf agent-routing aliases and a Docs-Coverage silent-fail fix that the new B-4 nudge itself exposed.
|
|
272
316
|
|
|
273
317
|
### Fixed
|
|
274
|
-
- **B-1: Vite intrinsics no longer reported as user env vars.** `grepEnvUsage` in `cli/shared-source.mjs` now skips `DEV`, `PROD`, `MODE`, `BASE_URL`, and `SSR` on `import.meta.env.*` — these are injected by Vite at build time, not user-configured. Real user vars like `VITE_API_URL` are still captured. (Reported by
|
|
275
|
-
- **B-2: `docguard diff` Data Entities now uses real exported names, not file basenames.** Previously the entity diff walked filenames and reported the stem (e.g. `models.py` → "models"), missing all the actual classes inside. Now uses `scanSchemasDeep` — the same code-side scanner the rest of DocGuard uses — which extracts real Pydantic/Dataclass/Mongoose/Prisma/Zod/Sequelize/Sqlx/SQLAlchemy/JPA entity names. (Reported by
|
|
276
|
-
- **B-3: Literal `` `VITE_` `` prefix in prose no longer captured as an env var name.** Tightened the env-var name regex across `shared-source.mjs`, `validators/environment.mjs`, and `commands/diff.mjs` from `[A-Z][A-Z0-9_]*` to `[A-Z][A-Z0-9_]*[A-Z0-9]` (must end with letter/digit, not underscore). Documentation like ``All vars start with `VITE_` (Vite convention)`` no longer triggers a "missing `VITE_`" warning. (Reported by
|
|
277
|
-
- **B-4 nudge surfaced: Docs-Coverage Check 5 (`checkReadmeSections`) silent-fail fixed.** The "recommended sections" loop bumped `total` without emitting a message when missing — exactly the anti-pattern B-4 flags. Recommended sections are now a true bonus: present = +1 to both passed/total, missing = no-op. Restores honest scoring on the README checker. (Found by the B-4 nudge running on the
|
|
318
|
+
- **B-1: Vite intrinsics no longer reported as user env vars.** `grepEnvUsage` in `cli/shared-source.mjs` now skips `DEV`, `PROD`, `MODE`, `BASE_URL`, and `SSR` on `import.meta.env.*` — these are injected by Vite at build time, not user-configured. Real user vars like `VITE_API_URL` are still captured. (Reported by an enterprise client project v0.11.1 audit.)
|
|
319
|
+
- **B-2: `docguard diff` Data Entities now uses real exported names, not file basenames.** Previously the entity diff walked filenames and reported the stem (e.g. `models.py` → "models"), missing all the actual classes inside. Now uses `scanSchemasDeep` — the same code-side scanner the rest of DocGuard uses — which extracts real Pydantic/Dataclass/Mongoose/Prisma/Zod/Sequelize/Sqlx/SQLAlchemy/JPA entity names. (Reported by an enterprise client project v0.11.1 audit.)
|
|
320
|
+
- **B-3: Literal `` `VITE_` `` prefix in prose no longer captured as an env var name.** Tightened the env-var name regex across `shared-source.mjs`, `validators/environment.mjs`, and `commands/diff.mjs` from `[A-Z][A-Z0-9_]*` to `[A-Z][A-Z0-9_]*[A-Z0-9]` (must end with letter/digit, not underscore). Documentation like ``All vars start with `VITE_` (Vite convention)`` no longer triggers a "missing `VITE_`" warning. (Reported by an enterprise client project v0.11.1 audit.)
|
|
321
|
+
- **B-4 nudge surfaced: Docs-Coverage Check 5 (`checkReadmeSections`) silent-fail fixed.** The "recommended sections" loop bumped `total` without emitting a message when missing — exactly the anti-pattern B-4 flags. Recommended sections are now a true bonus: present = +1 to both passed/total, missing = no-op. Restores honest scoring on the README checker. (Found by the B-4 nudge running on the an enterprise client project fixture.)
|
|
278
322
|
|
|
279
323
|
### Added
|
|
280
|
-
- **B-4: `--show-failing` flag and validator-bug nudge.** `docguard guard --show-failing` shows warnings/errors for every non-passing validator even if the overall status would have suppressed them. New nudge fires when a validator has `passed < total` but emits no warning or error messages — points at a likely silent-fail validator bug for the user to file an issue. (Reported by
|
|
324
|
+
- **B-4: `--show-failing` flag and validator-bug nudge.** `docguard guard --show-failing` shows warnings/errors for every non-passing validator even if the overall status would have suppressed them. New nudge fires when a validator has `passed < total` but emits no warning or error messages — points at a likely silent-fail validator bug for the user to file an issue. (Reported by an enterprise client project v0.11.1 audit.)
|
|
281
325
|
- **Antigravity / Kiro / Windsurf / GEMINI agent signals.** `cli/ensure-skills.mjs` now detects these agent ecosystems via additional signal files (`.agents`, `.antigravity`, `ANTIGRAVITY.md`, `.kiro`, `.windsurf`, `GEMINI.md`) so the right skills are installed for each. Antigravity was already wired via `.agents → agy`; this expands the alias surface so neither side-by-side IDEs nor Spec Kit's `.agents` convention break detection.
|
|
282
326
|
|
|
283
327
|
### Internal
|
|
@@ -287,11 +331,11 @@ Patch release addressing the four bugs (B-1..B-4) reported from the v0.11.1 audi
|
|
|
287
331
|
### Out of scope (deferred to v0.12)
|
|
288
332
|
- S-1 (`sync --since` surgical refresh), S-2 (sweep-needed nudge from freshness counters), S-3 (`trace --reverse` code→doc map), S-4 (rename detection via `git log --follow`), S-5 (`.docguardignore` template at init), S-6 (per-validator severity in `.docguard.json`), S-7 (generated-doc-in-draft staleness validator), S-8 (cross-reference validator for broken `§X` anchors), S-9 (pre-commit lite on changed files only), S-10 (`.docguard/fixed.json` memory of past fixes).
|
|
289
333
|
|
|
290
|
-
Credit: feedback from running v0.11.1 on the `
|
|
334
|
+
Credit: feedback from running v0.11.1 on the `an enterprise client project` enterprise monorepo (audit score 98/100, 572/575 passed).
|
|
291
335
|
|
|
292
336
|
## [0.11.1] - 2026-05-25
|
|
293
337
|
|
|
294
|
-
Patch release addressing false positives surfaced by the v0.11.0 audit of the `
|
|
338
|
+
Patch release addressing false positives surfaced by the v0.11.0 audit of the `an enterprise client project` enterprise monorepo, generalized into a multi-tool IaC detector, plus several DocGuard self-audit improvements. Spec: `specs/003-v011-false-positives/`.
|
|
295
339
|
|
|
296
340
|
### Fixed
|
|
297
341
|
- **Docs-Sync no longer misclassifies frontend API clients as backend routes.** Dropped the ambiguous bare `'api'` from the route-directory convention list. `src/api/client.ts` (frontend axios) and similar are no longer scanned as Express/Next.js routes (FP-1). For Next.js App Router (`src/app/api`, `app/api`), only files matching the strict `route.{ts,tsx,js,jsx,mjs}` filename convention are counted — helper files in the same tree are skipped (FR-001, FR-002).
|
|
@@ -309,7 +353,7 @@ Patch release addressing false positives surfaced by the v0.11.0 audit of the `w
|
|
|
309
353
|
### Added
|
|
310
354
|
- **Multi-tool IaC detector + consolidated documentation reminder.** New `cli/scanners/iac.mjs` identifies projects shipping any of: **AWS CDK** (`cdk.json`), **Terraform** (`*.tf` files), **Pulumi** (`Pulumi.yaml`), **AWS SAM** (`template.yaml` with `AWS::Serverless::`), and **Serverless Framework** (`serverless.yml`). When an IaC project's ARCHITECTURE.md has no Infrastructure heading, DocGuard emits ONE actionable warning per detected tool naming the marker file location and the expected source layout — instead of multiple generic per-directory warnings (FR-009, FR-010, FR-011). The generic per-dir warnings inside IaC packages (`bin/`, `lib/`, `modules/`, `stacks/`, `constructs/`, `handlers/`, etc.) are suppressed in favor of these consolidated messages. The legacy `cli/scanners/cdk.mjs` is preserved as a thin re-export for backward compatibility.
|
|
311
355
|
- **`## Infrastructure (IaC)` section in `templates/ARCHITECTURE.md.template`.** New projects initialized via `docguard init` start with placeholder tables for AWS CDK, Terraform, and Pulumi/SAM/Serverless layouts plus a Deployment Pipeline subsection (FR-012). Explicitly skippable for non-IaC projects via a header comment.
|
|
312
|
-
- **`DEFAULT_IGNORE_DIRS`** exported from `cli/shared-ignore.mjs` — canonical shared ignore set covering build outputs (`dist`, `build`, `out`, `cdk.out`, `target`, `.gradle`), VCS internals (`.git`, `.jj`, `.hg`, `.svn`), package caches (`node_modules`, `vendor`, `.venv`, `__pycache__`), and framework synth outputs (`.next`, `.nuxt`, `.turbo`, `.vercel`, `.cache`, `.svelte-kit`) (FR-008). Added `target` (Rust/Java), `.gradle`, and `.svelte-kit` per the updated
|
|
356
|
+
- **`DEFAULT_IGNORE_DIRS`** exported from `cli/shared-ignore.mjs` — canonical shared ignore set covering build outputs (`dist`, `build`, `out`, `cdk.out`, `target`, `.gradle`), VCS internals (`.git`, `.jj`, `.hg`, `.svn`), package caches (`node_modules`, `vendor`, `.venv`, `__pycache__`), and framework synth outputs (`.next`, `.nuxt`, `.turbo`, `.vercel`, `.cache`, `.svelte-kit`) (FR-008). Added `target` (Rust/Java), `.gradle`, and `.svelte-kit` per the updated an enterprise client project audit. Available for any future validator to import; existing per-validator `IGNORE_DIRS` sets are left in place (deferred migration).
|
|
313
357
|
|
|
314
358
|
### Changed
|
|
315
359
|
- **DocGuard package version bumped to 0.11.1** across `package.json` and all `extensions/spec-kit-docguard/` files (extension.yml + 5 SKILL.md files were referencing stale `v0.9.9`/`v0.10.0`).
|
|
@@ -327,7 +371,7 @@ Patch release addressing false positives surfaced by the v0.11.0 audit of the `w
|
|
|
327
371
|
- Migrating all 17 modules that define their own `IGNORE_DIRS` constant to import `DEFAULT_IGNORE_DIRS` — mechanical, large diff, tracked separately.
|
|
328
372
|
- Multi-line string-literal detection in TODO-Tracking — current heuristic still false-positives on `// TODO:` inside multi-line template literals. Workaround: keep test files out of TODO scanning (now default) or use `config.todoIgnore` globs.
|
|
329
373
|
|
|
330
|
-
Credit: feedback from running v0.11.0 on the `
|
|
374
|
+
Credit: feedback from running v0.11.0 on the `an enterprise client project` enterprise monorepo (audit score 98/100, 40 warnings).
|
|
331
375
|
|
|
332
376
|
## [0.11.0] - 2026-05-22
|
|
333
377
|
|
|
@@ -10,3 +10,6 @@
|
|
|
10
10
|
| 2026-03-13 | `cli/commands/agents.mjs` | ARCHITECTURE.md | Agent config generators include `// DRIFT: reason` as instruction text for AI agents. 3 occurrences across Windsurf, Cursor, and generic agent configs. | Info | By design — instruction content |
|
|
11
11
|
| 2026-03-13 | `cli/validators/drift.mjs` | ARCHITECTURE.md | Drift validator references `// DRIFT:` pattern in JSDoc and regex. | Info | By design — validator implementation |
|
|
12
12
|
| 2026-05-12 | `tests/drift.test.mjs` | ARCHITECTURE.md | Drift validator tests use `// DRIFT:` comments to simulate project files having drift comments. | Info | By design — test implementation |
|
|
13
|
+
| 2026-05-26 | `tests/scoping-extended.test.mjs` | ARCHITECTURE.md | v0.15 P3 test fixture builds `// D' + 'RIFT:` strings via concat to test changed-files scoping without false-positiving the outer scan. | Info | By design — test implementation; mitigated by v0.15.1 hotfix that skips test files by default in Drift-Comments |
|
|
14
|
+
| 2026-05-26 | `cli/validators/drift.mjs` | ARCHITECTURE.md | Drift-Comments validator v0.15.1+ skips test files by default (matches TODO-Tracking's pattern). Opt in via `config.drift.includeTestFiles` if your project genuinely uses DRIFT markers in test code. | Info | By design — defensive default to prevent fixture false-positives |
|
|
15
|
+
| 2026-05-26 | `CHANGELOG.md` / `extensions/spec-kit-docguard/skills/*` | None | v0.12-v0.15 changelogs and release notes reference `// DRIFT:` in feature descriptions (e.g. K-3 .docguardignore, v0.13 sync, v0.14 P3 scoping). Documentation prose only, not actionable drift. | Info | By design — release notes |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: docguard-cli
|
|
3
|
-
Version: 0.15.
|
|
3
|
+
Version: 0.15.3
|
|
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
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- docguard:version 0.4.0 -->
|
|
4
4
|
<!-- docguard:status living -->
|
|
5
|
-
<!-- docguard:last-reviewed 2026-
|
|
5
|
+
<!-- docguard:last-reviewed 2026-05-26 -->
|
|
6
6
|
<!-- docguard:owner @raccioly -->
|
|
7
7
|
|
|
8
8
|
> The planned evolution of DocGuard and Canonical-Driven Development (CDD).
|
|
@@ -63,7 +63,7 @@ function readProjectSchemaVersion(projectDir) {
|
|
|
63
63
|
if (!existsSync(p)) return null;
|
|
64
64
|
try {
|
|
65
65
|
const cfg = JSON.parse(readFileSync(p, 'utf-8'));
|
|
66
|
-
// Pre-0.4 schemas (e.g.
|
|
66
|
+
// Pre-0.4 schemas (e.g. an enterprise client project's original config from 2024)
|
|
67
67
|
// have no `version` field. Treat as 0.0 so the migration runs end-to-end.
|
|
68
68
|
return cfg.version || '0.0';
|
|
69
69
|
} catch {
|
|
@@ -31,7 +31,7 @@ const md = {
|
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* v0.15-P1: in-process cache. buildMemoryPlan is expensive (~400ms on
|
|
34
|
-
*
|
|
34
|
+
* an enterprise client project, 33% of total guard validator time) because it triggers
|
|
35
35
|
* routes/schemas/screens/frontend scanners — all of which walk the source
|
|
36
36
|
* tree. Within a single guard run, sync, generate, and the Generated-
|
|
37
37
|
* Staleness validator all ask for the SAME plan; without caching they each
|
|
@@ -15,7 +15,7 @@ import { execSync, execFileSync } from 'node:child_process';
|
|
|
15
15
|
// upgrade, package corruption, weird module resolution), we fall back to
|
|
16
16
|
// the original inline implementation below. The worst-case outcome is
|
|
17
17
|
// "rename detection doesn't work", NOT "validator crashes with a useless
|
|
18
|
-
// ReferenceError". Reported by
|
|
18
|
+
// ReferenceError". Reported by an enterprise client project v0.13.x feedback.
|
|
19
19
|
let _sharedGetLastCommitDate = null;
|
|
20
20
|
try {
|
|
21
21
|
const mod = await import('../shared-git.mjs');
|
|
@@ -48,7 +48,12 @@ function applyReplaceCount(projectDir, fix) {
|
|
|
48
48
|
const full = resolve(projectDir, fix.file);
|
|
49
49
|
if (!existsSync(full)) return { applied: false };
|
|
50
50
|
const content = readFileSync(full, 'utf-8');
|
|
51
|
-
|
|
51
|
+
// v0.15.2 hotfix: case-insensitive label match. Mirrors the validator's
|
|
52
|
+
// detection regex (which is `gi`). Without `i` here, the applier would
|
|
53
|
+
// skip "21 Validators" (capitalized) even though Metrics-Consistency
|
|
54
|
+
// detected it — leaving the user with a warning they couldn't auto-fix.
|
|
55
|
+
// The /docguard.diagnose run on canonical-spec-kit surfaced this.
|
|
56
|
+
const re = new RegExp(`\\b${esc(fix.found)}(\\s+(?:automated\\s+)?${esc(fix.label)}\\b)`, 'gi');
|
|
52
57
|
const next = content.replace(re, `${fix.actual}$1`);
|
|
53
58
|
if (next === content) return { applied: false };
|
|
54
59
|
writeFileSync(full, next, 'utf-8');
|
|
@@ -4,7 +4,7 @@ Enterprise-grade Canonical-Driven Development (CDD) enforcement and **AI-readabl
|
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
- **
|
|
7
|
+
- **22 Validators** — Structure, Security, Doc Quality, Test-Spec, Drift-Comments, API-Surface, Freshness, Cross-Reference, and 13 more
|
|
8
8
|
- **Language-agnostic** — JS/TS, Python, Rust, Go, Java/Kotlin, Ruby, PHP, C#. Polyglot/monorepo-aware.
|
|
9
9
|
- **AI-powered Generate** — `generate --plan` builds the code-truth skeleton in `<!-- docguard:section -->` markers and emits a structured agent task manifest; the AI writes the prose.
|
|
10
10
|
- **Always up to date** — `sync` surgically refreshes code-truth doc sections in place, **preserves human prose**, flags prose for agent review.
|
|
@@ -3,7 +3,7 @@ schema_version: "1.0"
|
|
|
3
3
|
extension:
|
|
4
4
|
id: "docguard"
|
|
5
5
|
name: "DocGuard — CDD Enforcement"
|
|
6
|
-
version: "0.15.
|
|
6
|
+
version: "0.15.3"
|
|
7
7
|
description: "Canonical-Driven Development enforcement as a true spec-kit extension. LLM-first design with 19 automated validators, 4 AI behavior skills, spec-kit skill chaining, and workflow hooks. Zero NPM runtime dependencies."
|
|
8
8
|
author: "Ricardo Accioly"
|
|
9
9
|
repository: "https://github.com/raccioly/docguard"
|
|
@@ -6,10 +6,10 @@ description: AI-driven documentation repair with structured research workflow, t
|
|
|
6
6
|
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
7
7
|
metadata:
|
|
8
8
|
author: docguard
|
|
9
|
-
version: 0.15.
|
|
9
|
+
version: 0.15.3
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-fix
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.15.
|
|
12
|
+
<!-- docguard:version: 0.15.3 -->
|
|
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.15.
|
|
10
|
+
version: 0.15.3
|
|
11
11
|
source: extensions/spec-kit-docguard/skills/docguard-guard
|
|
12
12
|
---
|
|
13
|
-
<!-- docguard:version: 0.15.
|
|
13
|
+
<!-- docguard:version: 0.15.3 -->
|
|
14
14
|
|
|
15
15
|
# DocGuard Guard Skill
|
|
16
16
|
|
|
@@ -6,10 +6,10 @@ description: Cross-document consistency analysis and quality assessment. Perform
|
|
|
6
6
|
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
7
7
|
metadata:
|
|
8
8
|
author: docguard
|
|
9
|
-
version: 0.15.
|
|
9
|
+
version: 0.15.3
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-review
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.15.
|
|
12
|
+
<!-- docguard:version: 0.15.3 -->
|
|
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.15.
|
|
9
|
+
version: 0.15.3
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-score
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.15.
|
|
12
|
+
<!-- docguard:version: 0.15.3 -->
|
|
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.15.
|
|
7
|
+
version: 0.15.3
|
|
8
8
|
source: extensions/spec-kit-docguard/skills/docguard-sync
|
|
9
9
|
---
|
|
10
10
|
|