docguard-cli 0.36.0__tar.gz → 0.36.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/buglog.json +32 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/cerebrum.md +2 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/CHANGELOG.md +8 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/PKG-INFO +1 -1
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/README.md +6 -6
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/commands/sync.md +1 -1
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/extension.yml +2 -2
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/scripts/bash/common.sh +9 -17
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh +18 -11
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/skills/docguard-fix/SKILL.md +3 -3
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/skills/docguard-guard/SKILL.md +2 -2
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/skills/docguard-review/SKILL.md +2 -2
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/skills/docguard-score/SKILL.md +2 -2
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/skills/docguard-sync/SKILL.md +2 -2
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/templates/github-workflows/docguard-guard.yml +1 -1
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/package-lock.json +2 -2
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/package.json +1 -1
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/pyproject.toml +1 -1
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/server.json +2 -2
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/ci/github-actions.yml +1 -1
- docguard_cli-0.36.1/tests/spec-kit-helper-json.test.mjs +146 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/docguard.fix.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/docguard.guard.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/docguard.review.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/docguard.score.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.analyze.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.checklist.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.clarify.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.constitution.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.implement.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.plan.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.specify.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.tasks.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/commands/speckit.taskstoissues.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/docguard-fix/SKILL.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/docguard-guard/SKILL.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/docguard-review/SKILL.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/docguard-score/SKILL.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/docguard-sync/SKILL.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-analyze/SKILL.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-checklist/SKILL.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-clarify/SKILL.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-constitution/SKILL.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-implement/SKILL.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-plan/SKILL.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-specify/SKILL.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-tasks/SKILL.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.agent/skills/speckit-taskstoissues/SKILL.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.claude/rules/openwolf.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.claude/settings.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.docguard.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.docguardignore +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/ISSUE_TEMPLATE/docguard-feedback.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/dependabot.yml +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/scripts/speckit-submission.py +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/workflows/auto-merge.yml +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/workflows/ci.yml +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/workflows/jules-triage.yml +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/workflows/release.yml +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/workflows/scheduled-release.yml +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/workflows/supply-chain.yml +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.github/workflows/sync-speckit-catalog.yml +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.gitignore +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.jules/bolt.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.jules/palette.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.jules/sentinel.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.jules-setup.sh +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.npmignore +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.npmrc +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.pre-commit-hooks.yaml +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/extensions/.cache/catalog-ebf165086500aab1-metadata.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/extensions/.cache/catalog-ebf165086500aab1.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/extensions/.cache/catalog-metadata.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/extensions/.cache/catalog.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/init-options.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/memory/constitution.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/scripts/bash/common.sh +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/scripts/bash/setup-plan.sh +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/templates/agent-file-template.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/templates/checklist-template.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/templates/constitution-template.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/templates/plan-template.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/templates/spec-template.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.specify/templates/tasks-template.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/OPENWOLF.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/anatomy.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/config.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/cron-manifest.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/cron-state.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/daemon.log +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/designqc-report.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/_session.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/_wrap_up_nudged +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/package.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/post-read.js +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/post-write.js +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/pre-read.js +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/pre-write.js +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/session-start.js +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/shared.js +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/hooks/stop.js +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/identity.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/memory.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/reframe-frameworks.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/suggestions.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/.wolf/token-ledger.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/AGENTS.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/CLAUDE.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/CODE_OF_CONDUCT.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/COMPARISONS.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/CONTRIBUTING.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/DRIFT-LOG.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/Dockerfile +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/LICENSE +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/PHILOSOPHY.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/PRIVACY.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/README.es.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/README.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/README.pt-BR.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/ROADMAP.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/SECURITY.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/STANDARD.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/SUPPLY-CHAIN-AUDIT.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/SUPPORT.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/VALIDATION.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/action.yml +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/assets/bin/docguard +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/assets/demo.gif +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/assets/demo.tape +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/assets/docguard-logo.png +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/agent.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/agents.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/badge.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/ci.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/demo.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/diagnose.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/diff.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/explain.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/feedback.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/fix.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/generate.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/guard.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/hooks.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/impact.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/init.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/llms.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/mcp.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/memory.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/publish.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/report.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/score.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/setup.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/sync-tests.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/sync.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/trace.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/upgrade.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/verify.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/commands/watch.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/config.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/docguard.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/ensure-skills.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/findings.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/agent-readability.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/api-doc.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/cdk.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/doc-tools.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/frontend.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/iac.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/instruction-audit.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/integrations.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/inventory.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/js-ast.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/memory-plan.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/project-type.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/py-ast.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/routes.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/schemas.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/semantic-claims.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/scanners/speckit.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/shared-diff.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/shared-doc-roles.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/shared-git.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/shared-ignore.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/shared-ir.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/shared-source.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/shared-trace-patterns.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/shared.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validator-coverage.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validator-markers.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/api-doc-smells.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/api-surface.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/architecture.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/canonical-sync.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/changelog.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/cross-reference.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/diff-suspicion.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/doc-quality.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/docs-coverage.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/docs-diff.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/docs-sync.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/drift.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/environment.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/freshness.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/generated-staleness.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/metadata-sync.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/metrics-consistency.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/reference-existence.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/schema-sync.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/security.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/spec-kit.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/structure.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/surface-sync.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/test-spec.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/todo-tracking.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/validators/traceability.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/api-reference.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/baseline.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/doc-generators.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/fix-memory.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/generate-io.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/history.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/junit.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/mechanical.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/sarif.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/cli/writers/sections.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/commands/docguard.fix.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/commands/docguard.guard.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/commands/docguard.review.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/commands/docguard.score.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/configs/fastify.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/configs/generic.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/configs/nextjs.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/configs/python.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docguard_cli/__init__.py +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docguard_cli/wrapper.py +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs/ai-integration.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs/commands.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs/configuration.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs/doc-sections.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs/faq.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs/installation.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs/profiles.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs/quickstart.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-canonical/CI-RECIPES.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-canonical/DATA-MODEL.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-canonical/ENVIRONMENT.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-canonical/REQUIREMENTS.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-canonical/SECURITY.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-canonical/SURFACE-AUDIT.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-implementation/MIGRATION-v0.20.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-implementation/PRECISION-VALIDATION.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-implementation/TRUST-ROADMAP.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/docs-implementation/TRUST-VALIDATION.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/01-express-api/README.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/01-express-api/package.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/01-express-api/server.js +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/02-python-flask/README.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/02-python-flask/app.py +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/02-python-flask/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/02-python-flask/requirements.txt +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/03-spec-kit-project/CHANGELOG.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/03-spec-kit-project/README.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/03-spec-kit-project/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/03-spec-kit-project/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/03-spec-kit-project/package.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/03-spec-kit-project/src/index.js +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/03-spec-kit-project/tasks.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/03-spec-kit-project/tests/basic.test.js +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/examples/README.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/LICENSE +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/commands/diagnose.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/commands/fix.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/commands/generate.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/commands/guard.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/commands/init.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/commands/score.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/commands/trace.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/scripts/bash/docguard-init-doc.sh +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/scripts/bash/docguard-suggest-fix.sh +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/templates/extensions.yml +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/templates/github-workflows/docguard-autofix.yml +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/glama.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/llms-full.txt +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/llms.txt +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/mcpb/README.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/mcpb/manifest.template.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/packaging/homebrew/docguard.rb +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/packaging/submissions.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/schemas/docguard-config.schema.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/smithery.yaml +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/001-fix-ignore-validators/plan.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/001-fix-ignore-validators/spec.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/001-fix-ignore-validators/tasks.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/002-fix-test-discovery/plan.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/002-fix-test-discovery/spec.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/002-fix-test-discovery/tasks.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/003-v011-false-positives/plan.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/003-v011-false-positives/spec.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/003-v011-false-positives/tasks.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/004-v020-env-var-false-negative/spec.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/specs/005-hugocross-next-bugs/spec.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/ADR.md.template +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/AGENTS.md.template +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/ARCHITECTURE.md.template +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/CHANGELOG.md.template +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/CURRENT-STATE.md.template +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/DATA-MODEL.md.template +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/DEPLOYMENT.md.template +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/DRIFT-LOG.md.template +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/ENVIRONMENT.md.template +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/KNOWN-GOTCHAS.md.template +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/REQUIREMENTS.md.template +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/ROADMAP.md.template +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/RUNBOOKS.md.template +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/SECURITY.md.template +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/TEST-SPEC.md.template +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/TROUBLESHOOTING.md.template +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/VENDOR-BUGS.md.template +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/ci/gitlab-component.yml +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/commands/docguard.fix.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/commands/docguard.guard.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/commands/docguard.init.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/commands/docguard.review.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/commands/docguard.update.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/.docguard.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/.env.example +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/AGENTS.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/CHANGELOG.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/DRIFT-LOG.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/README.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/docs-canonical/API-REFERENCE.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/docs-canonical/DATA-MODEL.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/docs-canonical/ENVIRONMENT.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/docs-canonical/SECURITY.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/package.json +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/src/api.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/src/notifier.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/src/scheduler.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/templates/demo-fixture/src/worker.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/agent-evidence.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/agent-readability.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/agent.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/agents-command.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/agents-sync.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/anchor-autofix.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/api-authority-precision.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/api-doc-smells.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/api-doc.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/api-surface.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/api-write.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/architecture.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/b7-node-env-symmetry.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/backup-failure.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/badge.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/baseline.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/canonical-docs-nested-phase2.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/canonical-docs-nested.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/canonical-sync.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/catalog-submission.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/cdk-detection.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/changed-only-scoping.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/changed-only.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/changelog.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/check-coverage.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/ci-reproducibility.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/ci-scaffolder.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/commands.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/cross-reference.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/demo-command.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/diff-suspicion.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/doc-quality.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/doc-role-boundaries.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/doc-role-mapping.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/doc-section-synonyms.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/docguardignore.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/docs-coverage.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/docs-diff.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/docs-sync.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/drift.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/ensure-skills-idempotent.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/env-schema-detection.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/environment.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/explain-coverage.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/feedback-contributions.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/field-context-precision.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/field-diff-precision.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/field-report-2-cli.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/field-report-3-deferred.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/field-report-3.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/field-review-clarity.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/fix-memory.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/fix-suppression.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/fixture-projects.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/freshness.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/frontend-deep.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/frontend.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/generate-io.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/generated-staleness.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/guard-classify.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/guard-no-throw.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/history.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/hooks-contract.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/hooks.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/i18n.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/impact.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/init-smart-detection.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/instruction-audit.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/integrations.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/inventory.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/js-ast.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/junit.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/llms-full-pack.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/mcp-http.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/mcp.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/mechanical.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/memory-plan.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/metadata-sync.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/metrics-consistency.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/metrics-dedup.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/monorepo-scanning.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/multi-spec.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/npm-pack-smoke.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/nudge-hook.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/openapi-parse-honesty.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/patch-0.11.2.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/plan-disk-cache.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/profile-flag.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/project-type.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/py-ast.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/reference-existence.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/regenerate-section.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/report.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/route-field-precision.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/routes-express-mounts.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/routes-fastify.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/routes-multilang.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/routes-nextjs-app-router.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/sarif.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/schema-sync.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/schemas-multilang.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/schemas.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/scoping-extended.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/score-assurance.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/score-suggestions.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/section-na-markers.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/sections.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/security-init-injection.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/security.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/severity.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/shared-diff.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/shared-git.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/shared-ignore-functions.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/shared-ir.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/shared-source.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/speckit-bugfix.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/speckit-phantom.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/starter-scaffold.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/stress-test.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/structure.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/surface-sync.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/sweep-nudge.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/sync-since.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/sync.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/test-spec.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/todo-tracking.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/trace-features.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/trace-multilang.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/trace-reverse.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/traceability-fixtures.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/traceability-ir.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/traceability.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/upgrade-pr-e2e.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/upgrade-pr.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/upgrade.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/v020-consolidation.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/validator-markers.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/validator-naming.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/verify-change-context.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/version-pin.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/watch-reliability.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/whats-new.test.mjs +0 -0
- {docguard_cli-0.36.0 → docguard_cli-0.36.1}/tests/worker-python-capability.test.mjs +0 -0
|
@@ -5110,6 +5110,38 @@
|
|
|
5110
5110
|
"related_bugs": [],
|
|
5111
5111
|
"occurrences": 1,
|
|
5112
5112
|
"last_seen": "2026-09-11T20:42:23.164Z"
|
|
5113
|
+
},
|
|
5114
|
+
{
|
|
5115
|
+
"id": "bug-311",
|
|
5116
|
+
"timestamp": "2026-09-11T21:26:46.402Z",
|
|
5117
|
+
"error_message": "Published Spec Kit installation displayed an obsolete validator count",
|
|
5118
|
+
"file": "extensions/spec-kit-docguard/extension.yml",
|
|
5119
|
+
"root_cause": "Descriptive metadata and skill prose hardcoded a count outside synchronized documentation checks",
|
|
5120
|
+
"fix": "Remove the hardcoded count from all three extension surfaces and verify the published ZIP after installation",
|
|
5121
|
+
"tags": [
|
|
5122
|
+
"release",
|
|
5123
|
+
"metadata",
|
|
5124
|
+
"documentation"
|
|
5125
|
+
],
|
|
5126
|
+
"related_bugs": [],
|
|
5127
|
+
"occurrences": 1,
|
|
5128
|
+
"last_seen": "2026-09-11T21:26:46.402Z"
|
|
5129
|
+
},
|
|
5130
|
+
{
|
|
5131
|
+
"id": "bug-312",
|
|
5132
|
+
"timestamp": "2026-09-11T21:33:22.758Z",
|
|
5133
|
+
"error_message": "Spec Kit verbose helper emitted malformed JSON for current CLI output",
|
|
5134
|
+
"file": "extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh",
|
|
5135
|
+
"root_cause": "Legacy regex parsing expected compact score fields and prose guard output; CLI lookup missed installed docguard and did not quote paths",
|
|
5136
|
+
"fix": "Parse and validate structured JSON and exit status; prefer local installs, safely quote executable paths, and refuse implicit npx downloads",
|
|
5137
|
+
"tags": [
|
|
5138
|
+
"release",
|
|
5139
|
+
"json",
|
|
5140
|
+
"hooks"
|
|
5141
|
+
],
|
|
5142
|
+
"related_bugs": [],
|
|
5143
|
+
"occurrences": 1,
|
|
5144
|
+
"last_seen": "2026-09-11T21:33:22.758Z"
|
|
5113
5145
|
}
|
|
5114
5146
|
]
|
|
5115
5147
|
}
|
|
@@ -120,3 +120,5 @@
|
|
|
120
120
|
- **2026-09-11 (documentation trust)** — Structural score and surface alignment do not establish factual accuracy. Preserve null/unverified across score, CI, report, diagnose, and agent prompts; zero extracted claims does not prove prose correctness. Content-aware plan identity fixes stale uncommitted source results at a measurable hashing cost. Treat fixture strings separately from actual requirement annotations. Public feedback drafts carry registry metadata only; private source context stays local, and submission remains voluntary. `init --with ci` scaffolds a maintained workflow; installing a workflow does not enable branch protection. See docs-implementation/TRUST-ROADMAP.md for researched acceptance gates and deferred empirical work.
|
|
121
121
|
|
|
122
122
|
- **2026-09-11 (enterprise precision)** — Compare baseline and current on identical disposable source snapshots. Keep originals untouched; concurrent consumer commits are not our changes. A lower warning total is not precision: new review scope can increase findings. OpenAPI absence is not implementation absence. Pair every exception with a true-defect control; source syntax and lexical ownership beat broad line matching. Custom doc roles need both direct-call and CLI write fences. Missing annotations leave behavioral coverage unknown; Python architecture coverage remains explicitly unsupported. Full-suite temp assertions must isolate process-owned fixtures and always clean up with ESM-safe imports. See docs-implementation/PRECISION-VALIDATION.md.
|
|
123
|
+
|
|
124
|
+
- **2026-09-11 (release verification)** — Install the actual release ZIP in a disposable Spec Kit project before updating the catalog: CLI tests and self-guard did not catch obsolete counts in extension install descriptions. Catalog draft checkboxes are evidence to fill after testing, not automatic assertions. Reuse the existing open submission issue; refresh MCP Registry identity auth when its JWT expires. Preserve published versions and use a patch release for post-publication corrections.
|
|
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.36.1] - 2026-09-11
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Removed stale validator counts from the Spec Kit extension installation description, README, and repair skill. Found by installing the published v0.36.0 ZIP in a disposable Spec Kit project. The validation engine is unchanged.
|
|
15
|
+
- The Spec Kit verbose helper reads structured score/guard JSON, preserves PASS/WARN/FAIL, and rejects malformed reports. CLI resolution prefers local installs, quotes paths safely, and requires an installed CLI instead of fetching through npx.
|
|
16
|
+
|
|
17
|
+
|
|
10
18
|
## [0.36.0] - 2026-09-11
|
|
11
19
|
|
|
12
20
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: docguard-cli
|
|
3
|
-
Version: 0.36.
|
|
3
|
+
Version: 0.36.1
|
|
4
4
|
Summary: The enforcement tool for Canonical-Driven Development (CDD). Audit, generate, and guard your project documentation. No Python dependencies (requires Node.js 18+).
|
|
5
5
|
Project-URL: Homepage, https://github.com/raccioly/docguard
|
|
6
6
|
Project-URL: Documentation, https://github.com/raccioly/docguard#readme
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# DocGuard — CDD Enforcement Extension for Spec Kit
|
|
2
2
|
|
|
3
|
-
Enterprise-grade Canonical-Driven Development (CDD) enforcement and **AI-readable project memory** for [Spec Kit](https://github.com/github/spec-kit). DocGuard builds
|
|
3
|
+
Enterprise-grade Canonical-Driven Development (CDD) enforcement and **AI-readable project memory** for [Spec Kit](https://github.com/github/spec-kit). DocGuard builds source-derived documentation context for supported code (`generate --plan`), refreshes generated sections as code changes (`sync`), and checks configured rules (`guard`) — with deterministic mechanical fixes (`fix --write`) where it can and grounded agent prompts where prose is needed.
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
- **
|
|
8
|
-
- **Language-
|
|
7
|
+
- **Configurable validators** — Structure, Security, Doc Quality, Test-Spec, Drift-Comments, API-Surface, Freshness, Cross-Reference, and more; use `docguard --help` for the current surface
|
|
8
|
+
- **Language-specific extraction** — Supported checks cover several languages and monorepos. Coverage varies by detector; unsupported inputs remain unverified.
|
|
9
9
|
- **AI-powered Generate** — `generate --plan` builds the code-truth skeleton in `<!-- docguard:section -->` markers and emits a structured agent task manifest; the AI writes the prose.
|
|
10
|
-
- **
|
|
10
|
+
- **Refresh and review** — `sync` surgically refreshes code-truth doc sections in place, **preserves human prose**, flags prose for agent review.
|
|
11
11
|
- **Mechanical `fix --write`** — deterministic, no-LLM: remove stale documented endpoints, refresh stale "N validators" counts, replace stale version refs, insert missing `## [Unreleased]`.
|
|
12
12
|
- **5 AI Skills** — docguard-fix, docguard-guard, docguard-sync, docguard-review, docguard-score (enterprise-grade behavior protocols, not just step-lists)
|
|
13
13
|
- **Workflow Chaining** — YAML handoffs enable guard → sync → fix → review → score flows
|
|
@@ -20,7 +20,7 @@ Enterprise-grade Canonical-Driven Development (CDD) enforcement and **AI-readabl
|
|
|
20
20
|
npm install -g docguard-cli
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
Spec Kit orchestration scripts require a local `node_modules/docguard-cli` installation or `docguard` on PATH; they do not implicitly download a CLI. Direct CLI use via npx remains available:
|
|
24
24
|
```bash
|
|
25
25
|
npx docguard-cli guard
|
|
26
26
|
```
|
|
@@ -45,7 +45,7 @@ docguard score
|
|
|
45
45
|
|
|
46
46
|
| Command | Alias | Purpose |
|
|
47
47
|
|---------|-------|---------|
|
|
48
|
-
| `speckit.docguard.guard` | `docguard.guard` | Run
|
|
48
|
+
| `speckit.docguard.guard` | `docguard.guard` | Run configurable quality gate with severity triage |
|
|
49
49
|
| `speckit.docguard.fix` | `docguard.fix` | AI-driven documentation repair with codebase research |
|
|
50
50
|
| `speckit.docguard.review` | `docguard.review` | Cross-document semantic consistency analysis (read-only) |
|
|
51
51
|
| `speckit.docguard.score` | `docguard.score` | CDD maturity score with ROI improvement roadmap |
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: Refresh canonical code-truth sections and flag prose for review — refresh code-truth sections in place, preserve human prose
|
|
3
3
|
allowed-tools: Bash, Read, Edit
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -3,7 +3,7 @@ schema_version: "1.0"
|
|
|
3
3
|
extension:
|
|
4
4
|
id: "docguard"
|
|
5
5
|
name: "DocGuard — CDD Enforcement"
|
|
6
|
-
version: "0.36.
|
|
6
|
+
version: "0.36.1"
|
|
7
7
|
description: "Canonical-Driven Development enforcement as a true spec-kit extension. LLM-first design with automated validators, 4 AI behavior skills, spec-kit skill chaining, and workflow hooks. One pinned runtime dependency (@babel/parser); pure Node.js otherwise."
|
|
8
8
|
author: "Ricardo Accioly"
|
|
9
9
|
repository: "https://github.com/raccioly/docguard"
|
|
@@ -27,7 +27,7 @@ provides:
|
|
|
27
27
|
commands:
|
|
28
28
|
- name: "speckit.docguard.guard"
|
|
29
29
|
file: "commands/guard.md"
|
|
30
|
-
description: "Run
|
|
30
|
+
description: "Run configurable quality gate with severity triage and remediation plan"
|
|
31
31
|
|
|
32
32
|
- name: "speckit.docguard.fix"
|
|
33
33
|
file: "commands/generate.md"
|
{docguard_cli-0.36.0 → docguard_cli-0.36.1}/extensions/spec-kit-docguard/scripts/bash/common.sh
RENAMED
|
@@ -23,25 +23,17 @@ find_docguard_root() {
|
|
|
23
23
|
|
|
24
24
|
find_docguard_cli() {
|
|
25
25
|
local root="${1:-$(pwd)}"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
echo "docguard-cli"
|
|
36
|
-
return 0
|
|
37
|
-
fi
|
|
38
|
-
|
|
39
|
-
# Fall back to npx
|
|
40
|
-
if command -v npx >/dev/null 2>&1; then
|
|
41
|
-
echo "npx docguard-cli"
|
|
26
|
+
local entry
|
|
27
|
+
for entry in "$root/cli/docguard.mjs" "$root/node_modules/docguard-cli/cli/docguard.mjs"; do
|
|
28
|
+
if [ -f "$entry" ] && command -v node >/dev/null 2>&1; then
|
|
29
|
+
printf '%q %q\n' "$(command -v node)" "$entry"
|
|
30
|
+
return 0
|
|
31
|
+
fi
|
|
32
|
+
done
|
|
33
|
+
if command -v docguard >/dev/null 2>&1; then
|
|
34
|
+
printf '%q\n' "$(command -v docguard)"
|
|
42
35
|
return 0
|
|
43
36
|
fi
|
|
44
|
-
|
|
45
37
|
return 1
|
|
46
38
|
}
|
|
47
39
|
|
|
@@ -104,17 +104,24 @@ if $JSON_MODE; then
|
|
|
104
104
|
# Optionally include score and guard
|
|
105
105
|
EXTRAS=""
|
|
106
106
|
if $VERBOSE; then
|
|
107
|
-
SCORE_OUTPUT=$(eval $CLI_CMD score --format json
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
107
|
+
SCORE_OUTPUT=$(eval "$CLI_CMD score --format json")
|
|
108
|
+
SCORE=$(printf '%s' "$SCORE_OUTPUT" | node -e '
|
|
109
|
+
const d=JSON.parse(require("fs").readFileSync(0,"utf8"));
|
|
110
|
+
if(!Number.isFinite(d.score) || d.score<0 || d.score>100) throw Error("Invalid DocGuard score");
|
|
111
|
+
process.stdout.write(String(d.score));
|
|
112
|
+
')
|
|
113
|
+
GUARD_STATUS=0
|
|
114
|
+
GUARD_OUTPUT=$(eval "$CLI_CMD guard --format json") || GUARD_STATUS=$?
|
|
115
|
+
EXTRAS=$(printf '%s' "$GUARD_OUTPUT" | node -e '
|
|
116
|
+
const d=JSON.parse(require("fs").readFileSync(0,"utf8"));
|
|
117
|
+
const exit=Number(process.argv[2]);
|
|
118
|
+
const expected={PASS:0,WARN:2,FAIL:1};
|
|
119
|
+
if(!Object.hasOwn(expected,d.status) || expected[d.status]!==exit ||
|
|
120
|
+
!Number.isInteger(d.passed) || !Number.isInteger(d.total) ||
|
|
121
|
+
d.passed<0 || d.total<d.passed) throw Error("Invalid DocGuard guard report");
|
|
122
|
+
const fields={score:Number(process.argv[1]),guardPass:d.passed,guardTotal:d.total,guardStatus:d.status};
|
|
123
|
+
process.stdout.write(","+JSON.stringify(fields).slice(1,-1));
|
|
124
|
+
' "$SCORE" "$GUARD_STATUS")
|
|
118
125
|
fi
|
|
119
126
|
|
|
120
127
|
# Check for spec-kit
|
|
@@ -6,10 +6,10 @@ description: AI-driven documentation repair with structured research workflow, t
|
|
|
6
6
|
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
7
7
|
metadata:
|
|
8
8
|
author: docguard
|
|
9
|
-
version: 0.36.
|
|
9
|
+
version: 0.36.1
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-fix
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.36.
|
|
12
|
+
<!-- docguard:version: 0.36.1 -->
|
|
13
13
|
|
|
14
14
|
# DocGuard Fix Skill
|
|
15
15
|
|
|
@@ -25,7 +25,7 @@ If no arguments, fix ALL issues found by `docguard diagnose`.
|
|
|
25
25
|
|
|
26
26
|
## Goal
|
|
27
27
|
|
|
28
|
-
Research the actual codebase to generate or repair canonical documentation that passes DocGuard's
|
|
28
|
+
Research the actual codebase to generate or repair canonical documentation that passes DocGuard's configurable guard suite. This skill replaces generic templates with real, project-specific content and iterates until quality checks pass.
|
|
29
29
|
|
|
30
30
|
## Operating Constraints
|
|
31
31
|
|
|
@@ -7,10 +7,10 @@ description: Run DocGuard guard validation against Canonical-Driven Development
|
|
|
7
7
|
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
8
8
|
metadata:
|
|
9
9
|
author: docguard
|
|
10
|
-
version: 0.36.
|
|
10
|
+
version: 0.36.1
|
|
11
11
|
source: extensions/spec-kit-docguard/skills/docguard-guard
|
|
12
12
|
---
|
|
13
|
-
<!-- docguard:version: 0.36.
|
|
13
|
+
<!-- docguard:version: 0.36.1 -->
|
|
14
14
|
|
|
15
15
|
# DocGuard Guard Skill
|
|
16
16
|
|
|
@@ -6,10 +6,10 @@ description: Cross-document consistency analysis and quality assessment. Perform
|
|
|
6
6
|
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
7
7
|
metadata:
|
|
8
8
|
author: docguard
|
|
9
|
-
version: 0.36.
|
|
9
|
+
version: 0.36.1
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-review
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.36.
|
|
12
|
+
<!-- docguard:version: 0.36.1 -->
|
|
13
13
|
|
|
14
14
|
# DocGuard Review Skill
|
|
15
15
|
|
|
@@ -6,10 +6,10 @@ description: CDD maturity assessment with category-aware improvement roadmap. Ru
|
|
|
6
6
|
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
7
7
|
metadata:
|
|
8
8
|
author: docguard
|
|
9
|
-
version: 0.36.
|
|
9
|
+
version: 0.36.1
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-score
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.36.
|
|
12
|
+
<!-- docguard:version: 0.36.1 -->
|
|
13
13
|
|
|
14
14
|
# DocGuard Score Skill
|
|
15
15
|
|
|
@@ -4,10 +4,10 @@ description: Keep canonical documentation ALWAYS UP TO DATE. Refreshes code-trut
|
|
|
4
4
|
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
5
5
|
metadata:
|
|
6
6
|
author: docguard
|
|
7
|
-
version: 0.36.
|
|
7
|
+
version: 0.36.1
|
|
8
8
|
source: extensions/spec-kit-docguard/skills/docguard-sync
|
|
9
9
|
---
|
|
10
|
-
<!-- docguard:version: 0.36.
|
|
10
|
+
<!-- docguard:version: 0.36.1 -->
|
|
11
11
|
|
|
12
12
|
# DocGuard Sync Skill
|
|
13
13
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "docguard-cli",
|
|
3
|
-
"version": "0.36.
|
|
3
|
+
"version": "0.36.1",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "docguard-cli",
|
|
9
|
-
"version": "0.36.
|
|
9
|
+
"version": "0.36.1",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@babel/parser": "7.29.8"
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "docguard-cli"
|
|
7
|
-
version = "0.36.
|
|
7
|
+
version = "0.36.1"
|
|
8
8
|
description = "The enforcement tool for Canonical-Driven Development (CDD). Audit, generate, and guard your project documentation. No Python dependencies (requires Node.js 18+)."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "io.github.raccioly/docguard",
|
|
4
4
|
"title": "DocGuard",
|
|
5
5
|
"description": "Deterministic doc-drift detection: guard, score, explain, verify-claims and diagnose MCP tools.",
|
|
6
|
-
"version": "0.36.
|
|
6
|
+
"version": "0.36.1",
|
|
7
7
|
"websiteUrl": "https://github.com/raccioly/docguard#readme",
|
|
8
8
|
"repository": {
|
|
9
9
|
"url": "https://github.com/raccioly/docguard",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"registryType": "npm",
|
|
15
15
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
16
16
|
"identifier": "docguard-cli",
|
|
17
|
-
"version": "0.36.
|
|
17
|
+
"version": "0.36.1",
|
|
18
18
|
"runtimeHint": "npx",
|
|
19
19
|
"transport": {
|
|
20
20
|
"type": "stdio"
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { describe, it } from 'node:test';
|
|
2
|
+
import { strict as assert } from 'node:assert';
|
|
3
|
+
import { chmodSync, existsSync, mkdirSync, mkdtempSync, readFileSync, realpathSync, rmSync, symlinkSync } from 'node:fs';
|
|
4
|
+
import { spawnSync } from 'node:child_process';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { tmpdir } from 'node:os';
|
|
7
|
+
import { fileURLToPath } from 'node:url';
|
|
8
|
+
import { safeWrite } from '../cli/writers/generate-io.mjs';
|
|
9
|
+
|
|
10
|
+
const helper = fileURLToPath(new URL('../extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh', import.meta.url));
|
|
11
|
+
const scoreJSON = JSON.stringify({ score: 73 }, null, 2);
|
|
12
|
+
const guardJSON = (status = 'PASS', passed = 4, total = 5) => JSON.stringify({ status, passed, total }, null, 2);
|
|
13
|
+
|
|
14
|
+
// Execute a real Node CLI fixture through the shipped Bash helper. A closed PATH
|
|
15
|
+
// excludes host installs and turns any attempted npx download into a local trap.
|
|
16
|
+
function withProject(options, check) {
|
|
17
|
+
const temp = realpathSync(mkdtempSync(join(tmpdir(), 'docguard-helper-')));
|
|
18
|
+
try {
|
|
19
|
+
const root = join(temp, options.specialPath ? 'project spaces;$(touch INJECTED);\x60touch INJECTED\x60 "quote"' : 'project');
|
|
20
|
+
const bin = join(temp, 'bin');
|
|
21
|
+
const calls = join(temp, 'calls.jsonl');
|
|
22
|
+
mkdirSync(bin);
|
|
23
|
+
safeWrite(join(root, '.docguard.json'), '{}');
|
|
24
|
+
symlinkSync(process.execPath, join(bin, 'node'));
|
|
25
|
+
for (const name of ['dirname', 'basename', 'grep', 'sed', 'tr', 'head', 'cat', 'pwd', 'mktemp', 'rm']) {
|
|
26
|
+
const executable = ['/usr/bin/', '/bin/'].map(prefix => prefix + name).find(existsSync);
|
|
27
|
+
assert.ok(executable, name + ' must be available');
|
|
28
|
+
symlinkSync(executable, join(bin, name));
|
|
29
|
+
}
|
|
30
|
+
const fixture = [
|
|
31
|
+
"import { appendFileSync } from 'node:fs';",
|
|
32
|
+
'const args = process.argv.slice(2);',
|
|
33
|
+
'appendFileSync(process.env.CALLS, JSON.stringify({ args, cwd: process.cwd() }) + "\\n");',
|
|
34
|
+
'if (args.length !== 3 || args[1] !== "--format" || args[2] !== "json") process.exit(91);',
|
|
35
|
+
'if (args[0] === "score") { process.stdout.write(process.env.SCORE_JSON); process.exit(Number(process.env.SCORE_EXIT)); }',
|
|
36
|
+
'if (args[0] === "guard") { process.stdout.write(process.env.GUARD_JSON); process.exit(Number(process.env.GUARD_EXIT)); }',
|
|
37
|
+
'process.exit(92);',
|
|
38
|
+
].join('\n');
|
|
39
|
+
if (options.install !== 'missing') {
|
|
40
|
+
safeWrite(join(root, options.install === 'package' ? 'node_modules/docguard-cli/cli/docguard.mjs' : 'cli/docguard.mjs'), fixture);
|
|
41
|
+
}
|
|
42
|
+
for (const name of ['npx', ...(options.global ? ['docguard', 'docguard-cli'] : [])]) {
|
|
43
|
+
const executable = join(bin, name);
|
|
44
|
+
safeWrite(executable, '#!/bin/sh\nprintf "%s\\n" "' + name + '" >> "$TRAPS"\nexit 93\n');
|
|
45
|
+
chmodSync(executable, 0o755);
|
|
46
|
+
}
|
|
47
|
+
const result = spawnSync('/bin/bash', [helper, '--json', '--verbose'], {
|
|
48
|
+
cwd: root,
|
|
49
|
+
encoding: 'utf8',
|
|
50
|
+
timeout: 10000,
|
|
51
|
+
env: {
|
|
52
|
+
PATH: bin, HOME: temp, TMPDIR: temp, CALLS: calls, TRAPS: join(temp, 'traps'),
|
|
53
|
+
SCORE_JSON: scoreJSON, SCORE_EXIT: '0', GUARD_JSON: guardJSON(), GUARD_EXIT: '0',
|
|
54
|
+
...options.env,
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
assert.equal(result.error, undefined);
|
|
58
|
+
assert.equal(result.signal, null);
|
|
59
|
+
assert.equal(existsSync(join(temp, 'traps')), false, 'must not invoke global CLI or npx');
|
|
60
|
+
assert.equal(existsSync(join(root, 'INJECTED')), false, 'project path must remain literal');
|
|
61
|
+
assert.equal(existsSync(join(temp, 'INJECTED')), false, 'must not evaluate command substitutions');
|
|
62
|
+
check(result, root, existsSync(calls) ? readFileSync(calls, 'utf8').trim().split('\n').map(line => JSON.parse(line)) : []);
|
|
63
|
+
} finally {
|
|
64
|
+
rmSync(temp, { recursive: true, force: true });
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function expectReport(result, root, calls, status) {
|
|
69
|
+
assert.equal(result.status, 0, result.stdout + result.stderr);
|
|
70
|
+
const report = JSON.parse(result.stdout);
|
|
71
|
+
assert.equal(report.projectRoot, root);
|
|
72
|
+
assert.deepEqual({ score: report.score, guardPass: report.guardPass, guardTotal: report.guardTotal, guardStatus: report.guardStatus },
|
|
73
|
+
{ score: 73, guardPass: 4, guardTotal: 5, guardStatus: status });
|
|
74
|
+
assert.deepEqual(calls, ['score', 'guard'].map(command => ({ args: [command, '--format', 'json'], cwd: root })));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function expectFailure(result) {
|
|
78
|
+
assert.notEqual(result.status, 0, result.stdout + result.stderr);
|
|
79
|
+
let report;
|
|
80
|
+
try { report = JSON.parse(result.stdout); } catch { return; }
|
|
81
|
+
assert.ok(report && typeof report === 'object' && !Array.isArray(report) && report.error,
|
|
82
|
+
'failure must not emit a successful helper JSON report: ' + result.stdout);
|
|
83
|
+
for (const key of ['score', 'guardPass', 'guardTotal', 'guardStatus']) {
|
|
84
|
+
assert.equal(Object.hasOwn(report, key), false, 'failure must not include success field ' + key);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
describe('Spec Kit helper JSON contract', () => {
|
|
89
|
+
for (const [status, exit] of [['PASS', 0], ['WARN', 2], ['FAIL', 1]]) {
|
|
90
|
+
it('reports pretty JSON ' + status + ' with helper exit zero', () => {
|
|
91
|
+
withProject({ env: { GUARD_JSON: guardJSON(status), GUARD_EXIT: String(exit) } },
|
|
92
|
+
(result, root, calls) => expectReport(result, root, calls, status));
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
for (const install of ['dev', 'package']) {
|
|
97
|
+
it('safely executes ' + install + ' CLI in a path with spaces and shell metacharacters', () => {
|
|
98
|
+
withProject({ install, specialPath: true }, (result, root, calls) => expectReport(result, root, calls, 'PASS'));
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
it('prefers installed project package over global executables', () => {
|
|
103
|
+
withProject({ install: 'package', global: true }, (result, root, calls) => expectReport(result, root, calls, 'PASS'));
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
it('fails without an installed CLI and never falls back to npx', () => {
|
|
107
|
+
withProject({ install: 'missing' }, (result, root, calls) => {
|
|
108
|
+
expectFailure(result);
|
|
109
|
+
assert.deepEqual(calls, []);
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
for (const value of ['', 'not JSON', '{"score":73', '{"score":73} trailing', '{}', 'null', '[]',
|
|
114
|
+
'{"score":"73"}', '{"score":null}', '{"score":true}', '{"score":-1}', '{"score":101}', '{"score":1e999}']) {
|
|
115
|
+
it('rejects invalid score ' + JSON.stringify(value), () => {
|
|
116
|
+
withProject({ env: { SCORE_JSON: value } }, expectFailure);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const invalidGuards = ['', 'not JSON', '{"status":"PASS","passed":4,"total":5', guardJSON() + ' trailing',
|
|
121
|
+
'{}', 'null', '[]', '{"status":"PASS","passed":4}', guardJSON('UNKNOWN'), guardJSON('pass'), guardJSON(null)];
|
|
122
|
+
for (const value of ['4', null, true, -1, 1.5]) {
|
|
123
|
+
invalidGuards.push(guardJSON('PASS', value, 5), guardJSON('PASS', 0, value));
|
|
124
|
+
}
|
|
125
|
+
invalidGuards.push(guardJSON('PASS', 6, 5), '{"status":"PASS","passed":1e999,"total":5}');
|
|
126
|
+
for (const value of invalidGuards) {
|
|
127
|
+
it('rejects invalid guard ' + JSON.stringify(value), () => {
|
|
128
|
+
withProject({ env: { GUARD_JSON: value } }, expectFailure);
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
for (const [status, validExit] of [['PASS', 0], ['WARN', 2], ['FAIL', 1]]) {
|
|
133
|
+
for (const exit of [0, 1, 2, 3, 127]) {
|
|
134
|
+
if (exit === validExit) continue;
|
|
135
|
+
it('rejects guard status ' + status + ' with exit ' + exit, () => {
|
|
136
|
+
withProject({ env: { GUARD_JSON: guardJSON(status), GUARD_EXIT: String(exit) } }, expectFailure);
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
for (const exit of [1, 2, 127]) {
|
|
142
|
+
it('rejects valid score JSON when score exits ' + exit, () => {
|
|
143
|
+
withProject({ env: { SCORE_EXIT: String(exit) } }, expectFailure);
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
});
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|