docguard-cli 0.41.2__tar.gz → 0.41.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.41.2 → docguard_cli-0.41.3}/.agent/skills/docguard-fix/SKILL.md +2 -2
- {docguard_cli-0.41.2/extensions/spec-kit-docguard → docguard_cli-0.41.3/.agent}/skills/docguard-guard/SKILL.md +2 -2
- {docguard_cli-0.41.2/extensions/spec-kit-docguard → docguard_cli-0.41.3/.agent}/skills/docguard-review/SKILL.md +2 -2
- {docguard_cli-0.41.2/extensions/spec-kit-docguard → docguard_cli-0.41.3/.agent}/skills/docguard-score/SKILL.md +2 -2
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/skills/docguard-sync/SKILL.md +2 -2
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.docguard-specs.json +2 -2
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/buglog.json +114 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/cerebrum.md +3 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/memory.md +1 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/CHANGELOG.md +23 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/PKG-INFO +2 -2
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/README.md +1 -1
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/hooks.mjs +37 -17
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/specs.mjs +7 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/verify.mjs +8 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/spec-registry.mjs +49 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/spec-registry.mjs +4 -1
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/docs-canonical/ARCHITECTURE.md +7 -5
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/docs-canonical/CI-RECIPES.md +5 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/docs-canonical/DATA-MODEL.md +12 -3
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/docs-canonical/REQUIREMENTS.md +4 -3
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/docs-canonical/TEST-SPEC.md +13 -5
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/extension.yml +1 -1
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/skills/docguard-fix/SKILL.md +2 -2
- {docguard_cli-0.41.2/.agent → docguard_cli-0.41.3/extensions/spec-kit-docguard}/skills/docguard-guard/SKILL.md +2 -2
- {docguard_cli-0.41.2/.agent → docguard_cli-0.41.3/extensions/spec-kit-docguard}/skills/docguard-review/SKILL.md +2 -2
- {docguard_cli-0.41.2/.agent → docguard_cli-0.41.3/extensions/spec-kit-docguard}/skills/docguard-score/SKILL.md +2 -2
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/skills/docguard-sync/SKILL.md +2 -2
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/templates/github-workflows/docguard-autofix.yml +1 -1
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/templates/github-workflows/docguard-guard.yml +1 -1
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/package-lock.json +2 -2
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/package.json +1 -1
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/pyproject.toml +1 -1
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/server.json +2 -2
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/ci/github-actions.yml +1 -1
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/evidence-integration.test.mjs +30 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/hooks-contract.test.mjs +29 -2
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/hooks.test.mjs +56 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/spec-kit-helper-json.test.mjs +4 -1
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/spec-registry.test.mjs +33 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/architect.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/commands/docguard.fix.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/commands/docguard.guard.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/commands/docguard.review.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/commands/docguard.score.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/commands/speckit.analyze.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/commands/speckit.checklist.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/commands/speckit.clarify.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/commands/speckit.constitution.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/commands/speckit.implement.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/commands/speckit.plan.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/commands/speckit.specify.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/commands/speckit.tasks.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/commands/speckit.taskstoissues.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/skills/speckit-analyze/SKILL.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/skills/speckit-checklist/SKILL.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/skills/speckit-clarify/SKILL.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/skills/speckit-constitution/SKILL.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/skills/speckit-implement/SKILL.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/skills/speckit-plan/SKILL.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/skills/speckit-specify/SKILL.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/skills/speckit-tasks/SKILL.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.agent/skills/speckit-taskstoissues/SKILL.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.claude/rules/openwolf.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.claude/settings.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.docguard-archive.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.docguard.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.docguardignore +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.github/ISSUE_TEMPLATE/docguard-feedback.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.github/dependabot.yml +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.github/scripts/speckit-submission.py +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.github/scripts/sync-release-version.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.github/scripts/upsert-catalog-reminder.sh +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.github/scripts/validate-release-candidate.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.github/workflows/auto-merge.yml +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.github/workflows/ci.yml +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.github/workflows/jules-triage.yml +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.github/workflows/release.yml +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.github/workflows/scheduled-release.yml +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.github/workflows/supply-chain.yml +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.github/workflows/sync-speckit-catalog.yml +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.gitignore +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.jules/bolt.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.jules/palette.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.jules/sentinel.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.jules-setup.sh +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.npmignore +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.npmrc +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.pre-commit-hooks.yaml +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.specify/extensions/.cache/catalog-ebf165086500aab1-metadata.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.specify/extensions/.cache/catalog-ebf165086500aab1.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.specify/extensions/.cache/catalog-metadata.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.specify/extensions/.cache/catalog.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.specify/init-options.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.specify/memory/constitution.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.specify/scripts/bash/common.sh +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.specify/scripts/bash/setup-plan.sh +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.specify/templates/agent-file-template.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.specify/templates/checklist-template.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.specify/templates/constitution-template.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.specify/templates/plan-template.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.specify/templates/spec-template.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.specify/templates/tasks-template.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/OPENWOLF.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/anatomy.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/config.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/cron-manifest.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/cron-state.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/daemon.log +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/designqc-report.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/hooks/_session.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/hooks/_wrap_up_nudged +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/hooks/package.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/hooks/post-read.js +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/hooks/post-write.js +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/hooks/pre-read.js +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/hooks/pre-write.js +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/hooks/session-start.js +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/hooks/shared.js +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/hooks/stop.js +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/identity.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/reframe-frameworks.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/suggestions.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/.wolf/token-ledger.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/AGENTS.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/CLAUDE.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/CODE_OF_CONDUCT.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/COMPARISONS.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/CONTRIBUTING.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/DRIFT-LOG.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/Dockerfile +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/LICENSE +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/PHILOSOPHY.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/PRIVACY.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/README.es.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/README.pt-BR.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/ROADMAP.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/SECURITY.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/STANDARD.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/SUPPLY-CHAIN-AUDIT.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/SUPPORT.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/VALIDATION.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/action.yml +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/assets/bin/docguard +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/assets/demo.gif +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/assets/demo.tape +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/assets/docguard-logo.png +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/option-migration/.docguard-specs.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/option-migration/.docguard.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/option-migration/AGENTS.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/option-migration/CHANGELOG.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/option-migration/DRIFT-LOG.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/option-migration/docs-canonical/REQUIREMENTS.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/option-migration/package.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/option-migration/specs/001-retired-timeout/spec.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/option-migration/specs/002-timeout-options/spec.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/option-migration/src/options.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/option-migration/tests/options.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/python-config/.docguard-specs.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/python-config/.docguard.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/python-config/AGENTS.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/python-config/CHANGELOG.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/python-config/DRIFT-LOG.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/python-config/config_loader.py +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/python-config/docs-canonical/SECURITY.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/python-config/pyproject.toml +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/python-config/specs/001-safe-config/spec.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/python-config/tests/test_config_loader.py +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/status-alias/.docguard-specs.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/status-alias/.docguard.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/status-alias/AGENTS.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/status-alias/CHANGELOG.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/status-alias/DRIFT-LOG.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/status-alias/docs-canonical/REQUIREMENTS.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/status-alias/package.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/status-alias/specs/001-status-aliases/spec.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/status-alias/src/status.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/fixtures/status-alias/tests/status.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/hidden/option-migration/evaluate.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/hidden/python-config/evaluate.py +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/hidden/status-alias/evaluate.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/manifest.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/reference/option-migration/options.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/reference/python-config/config_loader.py +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/reference/status-alias/status.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/results/README.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/results/observed-v1.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/agent-context/run.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/baseline.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/corpus.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/generated-security-control/.docguardignore +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/generated-security-control/.gitignore +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/generated-security-control/package.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/generated-security-control/src/generated-client/config.js +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/go-todo-control/ROADMAP.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/go-todo-control/app.go +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/go-todo-control/go.mod +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/js-security-control/package.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/js-security-control/src/config.js +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/monorepo-security-control/.gitignore +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/monorepo-security-control/package.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/monorepo-security-control/packages/auth/package.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/monorepo-security-control/packages/auth/src/config.ts +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/python-security-control/.gitignore +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/python-security-control/app.py +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/python-security-control/pyproject.toml +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/python-unsupported/app.py +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/python-unsupported/pyproject.toml +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/sparse-doc-control/DRIFT-LOG.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/sparse-doc-control/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/sparse-doc-control/package.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/ts-security-control/.gitignore +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/ts-security-control/package.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/fixtures/ts-security-control/src/config.ts +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/lib/compare.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/lib/manifest.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/lib/metrics.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/lib/runner.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/benchmarks/run.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/assessment.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/agent.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/agents.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/badge.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/ci.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/demo.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/diagnose.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/diff.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/explain.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/feedback.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/fix.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/generate.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/guard.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/impact.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/init.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/llms.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/mcp.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/memory.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/publish.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/reconcile.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/report.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/retire.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/score.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/setup.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/sync-tests.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/sync.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/trace.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/upgrade.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/commands/watch.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/config.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/docguard.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/ensure-skills.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/evidence/adapters.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/evidence/evaluate.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/evidence/manifest.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/evidence/markdown.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/evidence/python-literal.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/feedback-fixture.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/findings.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/release-pr-policy.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/repository-root.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/agent-readability.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/api-doc.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/cdk.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/doc-tools.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/document-lifecycle.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/frontend.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/iac.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/instruction-audit.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/integrations.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/inventory.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/js-ast.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/lifecycle-context.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/memory-plan.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/project-type.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/py-ast.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/reconciliation.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/requirement-evidence.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/retirement-manifest.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/routes.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/schemas.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/semantic-claims.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/speckit.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/scanners/task-context.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/shared-diff.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/shared-doc-roles.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/shared-git.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/shared-ignore.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/shared-ir.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/shared-requirements.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/shared-source.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/shared-sync-scope.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/shared-trace-patterns.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/shared.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validator-coverage.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validator-markers.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/api-doc-smells.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/api-surface.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/architecture.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/canonical-sync.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/changelog.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/cross-reference.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/diff-suspicion.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/doc-quality.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/docs-coverage.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/docs-diff.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/docs-sync.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/document-lifecycle.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/drift.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/environment.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/evidence.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/freshness.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/generated-staleness.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/metadata-sync.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/metrics-consistency.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/reference-existence.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/schema-sync.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/security.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/spec-kit.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/structure.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/surface-sync.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/test-spec.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/todo-tracking.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/validators/traceability.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/writers/api-reference.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/writers/baseline.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/writers/doc-generators.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/writers/file-transaction.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/writers/fix-memory.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/writers/generate-io.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/writers/history.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/writers/junit.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/writers/mechanical.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/writers/sarif.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/writers/sections.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/cli/writers/spec-outcomes.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/commands/docguard.fix.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/commands/docguard.guard.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/commands/docguard.review.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/commands/docguard.score.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/configs/fastify.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/configs/generic.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/configs/nextjs.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/configs/python.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/docguard_cli/__init__.py +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/docguard_cli/wrapper.py +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/docs/ai-integration.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/docs/commands.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/docs/configuration.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/docs/doc-sections.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/docs/faq.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/docs/installation.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/docs/profiles.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/docs/quickstart.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/docs-canonical/ENVIRONMENT.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/docs-canonical/SECURITY.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/examples/01-express-api/README.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/examples/01-express-api/package.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/examples/01-express-api/server.js +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/examples/02-python-flask/README.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/examples/02-python-flask/app.py +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/examples/02-python-flask/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/examples/02-python-flask/requirements.txt +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/examples/03-spec-kit-project/CHANGELOG.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/examples/03-spec-kit-project/README.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/examples/03-spec-kit-project/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/examples/03-spec-kit-project/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/examples/03-spec-kit-project/package.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/examples/03-spec-kit-project/src/index.js +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/examples/03-spec-kit-project/tasks.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/examples/03-spec-kit-project/tests/basic.test.js +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/examples/README.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/LICENSE +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/README.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/commands/brief.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/commands/complete.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/commands/diagnose.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/commands/fix.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/commands/generate.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/commands/guard.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/commands/init.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/commands/preflight.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/commands/review.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/commands/score.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/commands/sync.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/commands/trace.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/scripts/bash/common.sh +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/scripts/bash/docguard-init-doc.sh +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/scripts/bash/docguard-suggest-fix.sh +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/extensions/spec-kit-docguard/templates/extensions.yml +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/glama.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/llms-full.txt +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/llms.txt +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/mcpb/README.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/mcpb/manifest.template.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/packaging/homebrew/docguard.rb +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/packaging/submissions.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/schemas/docguard-agent-context-benchmark.schema.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/schemas/docguard-agent-context-result.schema.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/schemas/docguard-benchmark.schema.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/schemas/docguard-config.schema.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/schemas/docguard-evidence.schema.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/schemas/docguard-feedback-fixture.schema.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/schemas/docguard-specs.schema.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/schemas/docguard-task-context.schema.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/smithery.yaml +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/006-document-lifecycle/plan.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/006-document-lifecycle/spec.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/006-document-lifecycle/tasks.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/007-precision-evidence-loop/plan.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/007-precision-evidence-loop/spec.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/007-precision-evidence-loop/tasks.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/008-evidence-scoped-verification/plan.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/008-evidence-scoped-verification/research.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/008-evidence-scoped-verification/spec.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/008-evidence-scoped-verification/tasks.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/009-language-repository-coverage/plan.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/009-language-repository-coverage/research.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/009-language-repository-coverage/spec.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/009-language-repository-coverage/tasks.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/010-task-specific-agent-context/plan.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/010-task-specific-agent-context/research.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/010-task-specific-agent-context/spec.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/010-task-specific-agent-context/tasks.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/011-tokenless-scheduled-releases/plan.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/011-tokenless-scheduled-releases/spec.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/011-tokenless-scheduled-releases/tasks.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/specs/012-adoption-workflow-integrity/spec.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/ADR.md.template +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/AGENTS.md.template +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/ARCHITECTURE.md.template +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/CHANGELOG.md.template +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/CURRENT-STATE.md.template +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/DATA-MODEL.md.template +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/DEPLOYMENT.md.template +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/DRIFT-LOG.md.template +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/ENVIRONMENT.md.template +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/KNOWN-GOTCHAS.md.template +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/REQUIREMENTS.md.template +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/ROADMAP.md.template +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/RUNBOOKS.md.template +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/SECURITY.md.template +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/TEST-SPEC.md.template +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/TROUBLESHOOTING.md.template +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/VENDOR-BUGS.md.template +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/ci/gitlab-component.yml +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/commands/docguard.fix.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/commands/docguard.guard.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/commands/docguard.init.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/commands/docguard.review.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/commands/docguard.update.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/demo-fixture/.docguard.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/demo-fixture/.env.example +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/demo-fixture/AGENTS.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/demo-fixture/CHANGELOG.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/demo-fixture/DRIFT-LOG.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/demo-fixture/README.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/demo-fixture/docs-canonical/API-REFERENCE.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/demo-fixture/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/demo-fixture/docs-canonical/DATA-MODEL.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/demo-fixture/docs-canonical/ENVIRONMENT.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/demo-fixture/docs-canonical/SECURITY.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/demo-fixture/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/demo-fixture/package.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/demo-fixture/src/api.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/demo-fixture/src/notifier.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/demo-fixture/src/scheduler.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/demo-fixture/src/worker.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/evidence-manifest.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/templates/feedback-fixture.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/adoption-workflow.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/agent-context-benchmark.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/agent-evidence.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/agent-readability.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/agent.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/agents-check-readonly.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/agents-command.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/agents-sync.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/anchor-autofix.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/api-authority-precision.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/api-doc-smells.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/api-doc.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/api-surface.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/api-write.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/architecture.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/archive.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/assessment.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/b7-node-env-symmetry.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/backup-failure.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/badge.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/baseline.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/benchmark-manifest.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/benchmark-metrics.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/benchmark-runner.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/canonical-docs-nested-phase2.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/canonical-docs-nested.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/canonical-sync.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/catalog-submission.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/cdk-detection.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/changed-only-scoping.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/changed-only.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/changelog.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/check-coverage.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/ci-reproducibility.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/ci-scaffolder.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/commands.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/cross-reference.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/demo-command.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/diagnose-review-guidance.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/diff-suspicion.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/doc-quality.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/doc-role-boundaries.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/doc-role-mapping.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/doc-section-synonyms.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/docguard-config-schema.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/docguardignore.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/docs-coverage-reference-evidence.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/docs-coverage-scope.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/docs-coverage.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/docs-diff.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/docs-sync.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/document-lifecycle.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/drift.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/ensure-skills-idempotent.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/env-schema-detection.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/environment.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/evidence-adapters.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/evidence-manifest.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/evidence-python-literal.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/explain-coverage.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/feedback-contributions.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/feedback-fixture.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/field-context-precision.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/field-diff-precision.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/field-report-2-cli.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/field-report-3-deferred.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/field-report-3.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/field-review-clarity.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/file-transaction.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/finding-severity-config.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/fix-memory.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/fix-suppression.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/fixture-projects.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/fixtures/release-workflow-probe.json +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/freshness.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/frontend-deep.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/frontend.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/generate-io.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/generated-staleness.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/guard-classify.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/guard-no-throw.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/history.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/i18n.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/impact.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/init-smart-detection.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/instruction-audit.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/integrations.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/inventory.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/js-ast.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/junit.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/llms-full-pack.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/mapped-writers.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/mcp-http.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/mcp.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/mechanical.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/memory-plan.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/metadata-sync.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/metrics-consistency.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/metrics-dedup.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/monorepo-scanning.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/multi-spec.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/npm-pack-smoke.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/nudge-hook.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/openapi-parse-honesty.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/patch-0.11.2.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/plan-disk-cache.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/profile-flag.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/project-type.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/py-ast.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/python-import-graph.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/reconcile.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/reference-existence.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/regenerate-section.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/release-version-sync.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/report.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/repository-root.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/requirement-scope.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/route-field-precision.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/routes-express-mounts.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/routes-fastify.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/routes-multilang.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/routes-nextjs-app-router.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/sarif.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/scheduled-release.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/schema-sync-scope.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/schema-sync.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/schemas-multilang.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/schemas.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/scoping-extended.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/score-assurance.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/score-suggestions.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/section-na-markers.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/sections.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/security-init-injection.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/security.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/severity.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/shared-diff.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/shared-git.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/shared-ignore-functions.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/shared-ir.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/shared-source.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/spec-completion.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/speckit-bugfix.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/speckit-phantom.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/starter-scaffold.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/stress-test.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/structure.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/surface-sync.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/sweep-nudge.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/sync-since.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/sync.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/task-context.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/test-spec.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/todo-tracking.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/trace-features.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/trace-multilang.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/trace-reverse.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/traceability-fixtures.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/traceability-ir.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/traceability-lifecycle.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/traceability.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/upgrade-pr-e2e.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/upgrade-pr.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/upgrade.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/v020-consolidation.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/validator-markers.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/validator-naming.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/verify-change-context.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/version-pin.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/watch-reliability.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/whats-new.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/worker-python-capability.test.mjs +0 -0
- {docguard_cli-0.41.2 → docguard_cli-0.41.3}/tests/workflow-action-pins.test.mjs +0 -0
|
@@ -6,10 +6,10 @@ description: AI-driven documentation repair with structured research workflow, t
|
|
|
6
6
|
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
7
7
|
metadata:
|
|
8
8
|
author: docguard
|
|
9
|
-
version: 0.41.
|
|
9
|
+
version: 0.41.3
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-fix
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.41.
|
|
12
|
+
<!-- docguard:version: 0.41.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.41.
|
|
10
|
+
version: 0.41.3
|
|
11
11
|
source: extensions/spec-kit-docguard/skills/docguard-guard
|
|
12
12
|
---
|
|
13
|
-
<!-- docguard:version: 0.41.
|
|
13
|
+
<!-- docguard:version: 0.41.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.41.
|
|
9
|
+
version: 0.41.3
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-review
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.41.
|
|
12
|
+
<!-- docguard:version: 0.41.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.41.
|
|
9
|
+
version: 0.41.3
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-score
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.41.
|
|
12
|
+
<!-- docguard:version: 0.41.3 -->
|
|
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.41.
|
|
7
|
+
version: 0.41.3
|
|
8
8
|
source: extensions/spec-kit-docguard/skills/docguard-sync
|
|
9
9
|
---
|
|
10
|
-
<!-- docguard:version: 0.41.
|
|
10
|
+
<!-- docguard:version: 0.41.3 -->
|
|
11
11
|
|
|
12
12
|
# DocGuard Sync Skill
|
|
13
13
|
|
|
@@ -860,12 +860,12 @@
|
|
|
860
860
|
{
|
|
861
861
|
"requirementId": "FR-018",
|
|
862
862
|
"file": "tests/hooks-contract.test.mjs",
|
|
863
|
-
"line":
|
|
863
|
+
"line": 17
|
|
864
864
|
},
|
|
865
865
|
{
|
|
866
866
|
"requirementId": "FR-019",
|
|
867
867
|
"file": "tests/hooks-contract.test.mjs",
|
|
868
|
-
"line":
|
|
868
|
+
"line": 18
|
|
869
869
|
},
|
|
870
870
|
{
|
|
871
871
|
"requirementId": "FR-020",
|
|
@@ -6199,6 +6199,120 @@
|
|
|
6199
6199
|
"related_bugs": [],
|
|
6200
6200
|
"occurrences": 1,
|
|
6201
6201
|
"last_seen": "2026-09-15T16:21:14.288Z"
|
|
6202
|
+
},
|
|
6203
|
+
{
|
|
6204
|
+
"id": "bug-374",
|
|
6205
|
+
"timestamp": "2026-09-15T16:39:17.000Z",
|
|
6206
|
+
"error_message": "Reinstalling a managed hook nested a second BEGIN/END marker pair",
|
|
6207
|
+
"file": "cli/commands/hooks.mjs",
|
|
6208
|
+
"root_cause": "The install path wrapped the raw hook body before passing it to a splice helper that also added managed markers",
|
|
6209
|
+
"fix": "Pass raw hook content to the splice boundary, replace the outermost marker range, and repair already-nested hooks on reinstall or removal",
|
|
6210
|
+
"tags": [
|
|
6211
|
+
"hooks",
|
|
6212
|
+
"managed-block",
|
|
6213
|
+
"idempotency",
|
|
6214
|
+
"field-report"
|
|
6215
|
+
],
|
|
6216
|
+
"related_bugs": [
|
|
6217
|
+
"bug-354"
|
|
6218
|
+
],
|
|
6219
|
+
"occurrences": 1,
|
|
6220
|
+
"last_seen": "2026-09-15T16:39:17.000Z"
|
|
6221
|
+
},
|
|
6222
|
+
{
|
|
6223
|
+
"id": "bug-375",
|
|
6224
|
+
"timestamp": "2026-09-15T16:39:17.000Z",
|
|
6225
|
+
"error_message": "A successful DocGuard managed hook exited before user-owned postlude commands could run",
|
|
6226
|
+
"file": "cli/commands/hooks.mjs",
|
|
6227
|
+
"root_cause": "Generated hook bodies ended in exit 0 even though managed blocks are designed to compose inside a larger hook file",
|
|
6228
|
+
"fix": "Retain explicit blocking exits and end successful managed bodies with the no-op command so execution falls through to the surrounding hook",
|
|
6229
|
+
"tags": [
|
|
6230
|
+
"hooks",
|
|
6231
|
+
"composition",
|
|
6232
|
+
"postlude",
|
|
6233
|
+
"field-report"
|
|
6234
|
+
],
|
|
6235
|
+
"related_bugs": [
|
|
6236
|
+
"bug-374"
|
|
6237
|
+
],
|
|
6238
|
+
"occurrences": 1,
|
|
6239
|
+
"last_seen": "2026-09-15T16:39:17.000Z"
|
|
6240
|
+
},
|
|
6241
|
+
{
|
|
6242
|
+
"id": "bug-376",
|
|
6243
|
+
"timestamp": "2026-09-15T16:39:17.000Z",
|
|
6244
|
+
"error_message": "docguard verify --evidence exited 0 when its JSON status was contradicted",
|
|
6245
|
+
"file": "cli/commands/verify.mjs",
|
|
6246
|
+
"root_cause": "The direct evidence command rendered evaluator states but never mapped them to the CLI process-status contract",
|
|
6247
|
+
"fix": "Exit 1 for contradicted or invalid, 2 for attention-required, and 0 for verified or unconfigured evidence, with subprocess regressions for every class",
|
|
6248
|
+
"tags": [
|
|
6249
|
+
"evidence",
|
|
6250
|
+
"exit-code",
|
|
6251
|
+
"ci",
|
|
6252
|
+
"false-green",
|
|
6253
|
+
"field-report"
|
|
6254
|
+
],
|
|
6255
|
+
"related_bugs": [],
|
|
6256
|
+
"occurrences": 1,
|
|
6257
|
+
"last_seen": "2026-09-15T16:39:17.000Z"
|
|
6258
|
+
},
|
|
6259
|
+
{
|
|
6260
|
+
"id": "bug-377",
|
|
6261
|
+
"timestamp": "2026-09-15T16:39:17.000Z",
|
|
6262
|
+
"error_message": "docguard specs --check reported STALE for array ordering without identifying the changed field",
|
|
6263
|
+
"file": "cli/scanners/spec-registry.mjs; cli/commands/specs.mjs; cli/validators/spec-registry.mjs",
|
|
6264
|
+
"root_cause": "Registry currency used an all-or-nothing serialized comparison and discarded the reason for a mismatch",
|
|
6265
|
+
"fix": "Expose bounded value-safe field paths and difference kinds, including an explicit order-only canonicalization reason",
|
|
6266
|
+
"tags": [
|
|
6267
|
+
"spec-registry",
|
|
6268
|
+
"diagnostics",
|
|
6269
|
+
"ordering",
|
|
6270
|
+
"clarity",
|
|
6271
|
+
"field-report"
|
|
6272
|
+
],
|
|
6273
|
+
"related_bugs": [
|
|
6274
|
+
"bug-355"
|
|
6275
|
+
],
|
|
6276
|
+
"occurrences": 1,
|
|
6277
|
+
"last_seen": "2026-09-15T16:39:17.000Z"
|
|
6278
|
+
},
|
|
6279
|
+
{
|
|
6280
|
+
"id": "bug-378",
|
|
6281
|
+
"timestamp": "2026-09-15T16:39:17.000Z",
|
|
6282
|
+
"error_message": "README What’s New still described the current v0.40 release line after v0.41 shipped",
|
|
6283
|
+
"file": "README.md",
|
|
6284
|
+
"root_cause": "A hand-maintained release-line label was coupled to automated package releases",
|
|
6285
|
+
"fix": "Use version-independent recent-release wording while leaving exact release history in CHANGELOG",
|
|
6286
|
+
"tags": [
|
|
6287
|
+
"documentation",
|
|
6288
|
+
"version-drift",
|
|
6289
|
+
"readme",
|
|
6290
|
+
"field-report"
|
|
6291
|
+
],
|
|
6292
|
+
"related_bugs": [
|
|
6293
|
+
"bug-356",
|
|
6294
|
+
"bug-373"
|
|
6295
|
+
],
|
|
6296
|
+
"occurrences": 1,
|
|
6297
|
+
"last_seen": "2026-09-15T16:39:17.000Z"
|
|
6298
|
+
},
|
|
6299
|
+
{
|
|
6300
|
+
"id": "bug-379",
|
|
6301
|
+
"timestamp": "2026-09-15T17:02:00.000Z",
|
|
6302
|
+
"error_message": "Subprocess-heavy contract tests intermittently failed with ETIMEDOUT during parallel full-suite execution",
|
|
6303
|
+
"file": "tests/hooks-contract.test.mjs; tests/spec-kit-helper-json.test.mjs",
|
|
6304
|
+
"root_cause": "Five- and ten-second process deadlines left no scheduler-contention margin when Node ran many integration suites concurrently",
|
|
6305
|
+
"fix": "Retain finite process deadlines but raise them to 15 and 20 seconds for the shell-hook and Spec Kit helper integration fixtures",
|
|
6306
|
+
"tags": [
|
|
6307
|
+
"tests",
|
|
6308
|
+
"timeout",
|
|
6309
|
+
"parallel-ci",
|
|
6310
|
+
"false-failure",
|
|
6311
|
+
"reliability"
|
|
6312
|
+
],
|
|
6313
|
+
"related_bugs": [],
|
|
6314
|
+
"occurrences": 2,
|
|
6315
|
+
"last_seen": "2026-09-15T17:02:00.000Z"
|
|
6202
6316
|
}
|
|
6203
6317
|
]
|
|
6204
6318
|
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
## User Preferences
|
|
7
7
|
|
|
8
|
+
- **2026-09-15** — Batch improvements and wait between public releases. Publish only after a materially significant set is ready or a critical correctness defect requires a release; avoid creating a visible release for each small merged change.
|
|
8
9
|
- **2026-07-03** — **NO VS Code extension. Ever (until Ricardo says otherwise).** He built one before, it was deeply problematic ("a shit show"), and he removed it. Do not propose, scaffold, or build a VS Code extension for DocGuard. SARIF + Problems-panel via existing SARIF viewers is the sanctioned path to editor visibility. All OTHER distribution channels approved 2026-07-03: pre-commit, MCP registries (official/Smithery/mcp.so/Glama), awesome lists, Homebrew tap, GitLab CI component, Actions Marketplace (his click). #286 catalog submission SENT as-is — sharpened description goes into release.yml sync-catalog for the NEXT release, don't touch the submitted issue.
|
|
9
10
|
- **2026-07-03** — Keep the LOCAL main tree (`/Users/ricardoaccioly/Repo_claude/canonical-spec-kit`) always up to date with origin/main. After any merge/push to main (releases especially), sync it in the same session: `git -C <main> status --short` first (never clobber unrecognized work — stash leftovers with a message, surface real WIP), then `git -C <main> pull --ff-only`. Sessions run in auto-worktrees, so the main tree silently falls behind otherwise (it sat at v0.25 while origin hit v0.29).
|
|
10
11
|
|
|
@@ -14,6 +15,7 @@
|
|
|
14
15
|
|
|
15
16
|
## Key Learnings
|
|
16
17
|
|
|
18
|
+
- **2026-09-15 — Composition and process status are public contracts.** A hook test that preserves postlude text does not prove the postlude executes, and an evaluator-state test does not prove a direct CLI command gates CI. Execute generated hooks with commands on both sides, assert exact marker cardinality after reinstall, and spawn every machine command to verify its exit status agrees with its JSON status.
|
|
17
19
|
- **2026-09-15 — A successful Spec Kit install does not prove manifest correctness.** The v0.40.4 ZIP passed validation and installed, yet `fix` resolved to `generate`, `review` resolved to `diagnose`, three shipped command files were absent from `provides.commands`, and its description exceeded the documented 200-character limit. Treat the manifest as an executable public API: require unique names and files, match every `speckit.docguard.<verb>` to `commands/<verb>.md`, compare declarations with the complete shipped directory, keep catalog metadata byte-aligned, and inspect the installed inventory before catalog submission.
|
|
18
20
|
|
|
19
21
|
- **2026-09-14 — Release-generated skill parity:** The scheduled release updates extension skill metadata through `fix --write`, whose headless mode correctly skips setup. It must then run an explicit managed-agent sync before tests and staging; otherwise `.agent/skills` remains one release behind. A repository parity test should compare every managed copy byte-for-byte with its extension source.
|
|
@@ -76,6 +78,7 @@
|
|
|
76
78
|
|
|
77
79
|
## Do-Not-Repeat
|
|
78
80
|
|
|
81
|
+
- **2026-09-15** — Never treat preserved hook text as proof of composition or a correct evaluator object as proof of CI behavior. Run the resulting script and spawn the CLI process; assertions must cover externally observable control flow and exit codes.
|
|
79
82
|
- **2026-09-14** — Never put Markdown backticks inside a double-quoted shell command passed to `zsh -lc`; command substitution executes the text. Use single-quoted search patterns, and perform exact cleanup through a bounded script when destructive shell forms are rejected.
|
|
80
83
|
- **2026-09-14** — Never treat a Git object ID as durable recovery by itself; unreachable commits and blobs can be garbage-collected after squash merges or branch deletion. Require the source revision to be an ancestor of a recorded retention ref and report recoverability explicitly.
|
|
81
84
|
- **2026-09-14** — Never count a bare requirement ID as feature-completion evidence. Once the original spec is retired, a formerly ambiguous `FR-012` can become unique and silently rebind to another feature. Feature gates require a qualified stable identity; retired identities remain tombstoned.
|
|
@@ -1334,3 +1334,4 @@
|
|
|
1334
1334
|
| 14:56 | Edited .github/workflows/release.yml | expanded (+53 lines) | ~845 |
|
|
1335
1335
|
| 14:56 | Edited README.md | expanded (+19 lines) | ~245 |
|
|
1336
1336
|
| 12:18 | Fixed living-spec completion and released maintenance; merged PRs #398–#400; published and independently verified v0.41.1; removed 348 temp artifacts | specs lifecycle, registry, roadmap, release | 1,866 tests + Node 18/20/22/24 + OSV + all publication targets passed | ~43000 tok |
|
|
1337
|
+
| 12:39 | Reproduced and fixed field-report hook composition, evidence exit, registry explanation, and README drift defects; classified four other v0.40.5 items as already fixed | hooks, verify, spec registry, canonical docs, tests | focused behavioral regressions added; v0.41.2 publication completed before release-cadence correction | ~18000 tok |
|
|
@@ -7,6 +7,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.41.3] - 2026-09-15
|
|
11
|
+
|
|
12
|
+
Automated weekly release — batches everything merged since `v0.41.2`.
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- fix: preserve hook composition and evidence gates (#404)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- Increased the bounded subprocess deadlines in the hook and Spec Kit helper contract suites so parallel CI load does not misreport healthy integrations as `ETIMEDOUT` failures.
|
|
22
|
+
- Make managed Git hook reinstall idempotent, repair nested marker pairs written
|
|
23
|
+
by affected releases, and allow successful DocGuard blocks to continue into
|
|
24
|
+
user-owned postlude commands.
|
|
25
|
+
- Make direct `verify --evidence` suitable for CI by exiting 1 for contradictions
|
|
26
|
+
and invalid manifests, 2 for unresolved evidence, and 0 for verified or
|
|
27
|
+
unconfigured evidence.
|
|
28
|
+
- Explain deterministic spec-registry drift with bounded field paths and identify
|
|
29
|
+
order-only canonicalization instead of returning an unexplained `STALE` state.
|
|
30
|
+
- Replace the README's release-line label with version-independent wording so it
|
|
31
|
+
cannot become stale on the next automated release.
|
|
32
|
+
|
|
10
33
|
## [0.41.2] - 2026-09-15
|
|
11
34
|
|
|
12
35
|
Automated weekly release — batches everything merged since `v0.41.1`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: docguard-cli
|
|
3
|
-
Version: 0.41.
|
|
3
|
+
Version: 0.41.3
|
|
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
|
|
@@ -738,7 +738,7 @@ Two ready-to-use templates ship with the Spec Kit extension and as standalone fi
|
|
|
738
738
|
|
|
739
739
|
## ✨ What's New
|
|
740
740
|
|
|
741
|
-
Highlights
|
|
741
|
+
Highlights from recent releases:
|
|
742
742
|
|
|
743
743
|
- **Adoption baseline** — `guard --update-baseline` freezes a legacy repo's existing findings
|
|
744
744
|
into a committed `.docguard.baseline.json`; guard/ci then gate only NEW drift, with suppression
|
|
@@ -714,7 +714,7 @@ Two ready-to-use templates ship with the Spec Kit extension and as standalone fi
|
|
|
714
714
|
|
|
715
715
|
## ✨ What's New
|
|
716
716
|
|
|
717
|
-
Highlights
|
|
717
|
+
Highlights from recent releases:
|
|
718
718
|
|
|
719
719
|
- **Adoption baseline** — `guard --update-baseline` freezes a legacy repo's existing findings
|
|
720
720
|
into a committed `.docguard.baseline.json`; guard/ci then gate only NEW drift, with suppression
|
|
@@ -24,6 +24,19 @@ import { existsSync, mkdirSync, chmodSync, readFileSync, unlinkSync } from 'node
|
|
|
24
24
|
// pre-existing hooks), behavior falls back to the existing --force flow.
|
|
25
25
|
const BEGIN_MARKER = '# BEGIN DOCGUARD MANAGED — do not edit between these markers';
|
|
26
26
|
const END_MARKER = '# END DOCGUARD MANAGED';
|
|
27
|
+
const escapeRegExp = value => value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
28
|
+
|
|
29
|
+
function managedBounds(content) {
|
|
30
|
+
const starts = [...content.matchAll(new RegExp(`^${escapeRegExp(BEGIN_MARKER)}\\r?$`, 'gm'))]
|
|
31
|
+
.map(match => match.index);
|
|
32
|
+
const ends = [...content.matchAll(new RegExp(`^${escapeRegExp(END_MARKER)}\\r?$`, 'gm'))]
|
|
33
|
+
.map(match => match.index);
|
|
34
|
+
const start = starts[0];
|
|
35
|
+
const end = ends.at(-1);
|
|
36
|
+
return Number.isInteger(start) && Number.isInteger(end) && end > start
|
|
37
|
+
? { start, end }
|
|
38
|
+
: null;
|
|
39
|
+
}
|
|
27
40
|
|
|
28
41
|
/**
|
|
29
42
|
* Wrap a hook body in BEGIN/END markers so future re-installs can splice
|
|
@@ -44,15 +57,18 @@ function wrapManaged(body) {
|
|
|
44
57
|
* the BEGIN/END markers. Returns the new file content (string) or null
|
|
45
58
|
* when the markers aren't found (caller falls back to legacy behavior).
|
|
46
59
|
*/
|
|
47
|
-
function spliceManagedBlock(existing,
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
60
|
+
function spliceManagedBlock(existing, rawBody) {
|
|
61
|
+
const bounds = managedBounds(existing);
|
|
62
|
+
if (!bounds) return null;
|
|
63
|
+
const startIdx = bounds.start;
|
|
64
|
+
// Use the outermost end marker so one reinstall also repairs hooks written
|
|
65
|
+
// by v0.40.5-v0.41.2, which accidentally nested a second managed block.
|
|
66
|
+
const endIdx = bounds.end;
|
|
51
67
|
const before = existing.slice(0, startIdx);
|
|
52
68
|
const after = existing.slice(endIdx + END_MARKER.length);
|
|
53
|
-
//
|
|
69
|
+
// rawBody has its own shebang — strip it since we're splicing into the
|
|
54
70
|
// middle of an existing file (which already has one).
|
|
55
|
-
const bodyNoShebang =
|
|
71
|
+
const bodyNoShebang = rawBody.replace(/^#!.*\n/, '');
|
|
56
72
|
return `${before}${BEGIN_MARKER}\n${bodyNoShebang.replace(/\n+$/, '')}\n${END_MARKER}${after}`;
|
|
57
73
|
}
|
|
58
74
|
|
|
@@ -62,18 +78,21 @@ function hookState(name, hooksDir) {
|
|
|
62
78
|
let content;
|
|
63
79
|
try { content = readFileSync(path, 'utf-8'); }
|
|
64
80
|
catch { return { kind: 'unreadable', path, content: '' }; }
|
|
65
|
-
if (
|
|
81
|
+
if (managedBounds(content)) {
|
|
66
82
|
return { kind: 'managed', path, content };
|
|
67
83
|
}
|
|
68
|
-
const legacySignature = new RegExp(`^# DocGuard ${name
|
|
84
|
+
const legacySignature = new RegExp(`^# DocGuard ${escapeRegExp(name)} hook(?: \\(auto-fix mode\\))?$`, 'm');
|
|
69
85
|
if (legacySignature.test(content)) return { kind: 'legacy', path, content };
|
|
70
86
|
return { kind: 'foreign', path, content };
|
|
71
87
|
}
|
|
72
88
|
|
|
73
89
|
function removeManagedBlock(content) {
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
90
|
+
const bounds = managedBounds(content);
|
|
91
|
+
if (!bounds) return null;
|
|
92
|
+
const start = bounds.start;
|
|
93
|
+
// Match spliceManagedBlock's outermost recovery boundary so removal also
|
|
94
|
+
// cleans up already-nested blocks from affected releases.
|
|
95
|
+
const end = bounds.end;
|
|
77
96
|
const remaining = `${content.slice(0, start)}${content.slice(end + END_MARKER.length)}`
|
|
78
97
|
.replace(/\n{3,}/g, '\n\n');
|
|
79
98
|
return remaining;
|
|
@@ -128,7 +147,7 @@ elif [ $EXIT_CODE -eq 2 ]; then
|
|
|
128
147
|
echo "⚠️ DocGuard guard found warnings — commit allowed"
|
|
129
148
|
fi
|
|
130
149
|
|
|
131
|
-
|
|
150
|
+
:
|
|
132
151
|
`,
|
|
133
152
|
},
|
|
134
153
|
|
|
@@ -179,7 +198,7 @@ if [ "$SCORE" -lt "$MIN_SCORE" ]; then
|
|
|
179
198
|
fi
|
|
180
199
|
|
|
181
200
|
echo " ✅ Score meets minimum threshold"
|
|
182
|
-
|
|
201
|
+
:
|
|
183
202
|
`,
|
|
184
203
|
},
|
|
185
204
|
|
|
@@ -215,7 +234,7 @@ if ! echo "$COMMIT_MSG" | head -1 | grep -qE "$PATTERN"; then
|
|
|
215
234
|
exit 1
|
|
216
235
|
fi
|
|
217
236
|
|
|
218
|
-
|
|
237
|
+
:
|
|
219
238
|
`,
|
|
220
239
|
},
|
|
221
240
|
};
|
|
@@ -256,7 +275,7 @@ if [ "$EXIT_CODE" -ne 0 ] && [ "$EXIT_CODE" -ne 2 ]; then
|
|
|
256
275
|
elif [ $EXIT_CODE -eq 2 ]; then
|
|
257
276
|
echo "⚠️ DocGuard guard found warnings — commit allowed"
|
|
258
277
|
fi
|
|
259
|
-
|
|
278
|
+
:
|
|
260
279
|
`;
|
|
261
280
|
|
|
262
281
|
export function runHooks(projectDir, config, flags) {
|
|
@@ -356,7 +375,8 @@ export function runHooks(projectDir, config, flags) {
|
|
|
356
375
|
for (const name of hookTypes) {
|
|
357
376
|
const hookPath = resolve(hooksDir, name);
|
|
358
377
|
const useAutofix = name === 'pre-commit' && flags.autoFix;
|
|
359
|
-
const
|
|
378
|
+
const rawContent = useAutofix ? PRE_COMMIT_AUTOFIX : HOOKS[name].content;
|
|
379
|
+
const newContent = wrapManaged(rawContent);
|
|
360
380
|
const desc = useAutofix ? 'Apply mechanical fixes (fix --write) then guard' : HOOKS[name].description;
|
|
361
381
|
|
|
362
382
|
if (existsSync(hookPath)) {
|
|
@@ -366,7 +386,7 @@ export function runHooks(projectDir, config, flags) {
|
|
|
366
386
|
// preserve everything outside it. The user can extend the hook with
|
|
367
387
|
// their own commands above/below the markers without losing them on
|
|
368
388
|
// re-install.
|
|
369
|
-
const spliced = spliceManagedBlock(existing,
|
|
389
|
+
const spliced = spliceManagedBlock(existing, rawContent);
|
|
370
390
|
if (spliced !== null) {
|
|
371
391
|
safeWrite(hookPath, spliced);
|
|
372
392
|
chmodSync(hookPath, 0o755);
|
|
@@ -226,6 +226,12 @@ function printResult(result) {
|
|
|
226
226
|
console.log(`Spec registry: ${result.status}`);
|
|
227
227
|
console.log(`Registry: ${SPEC_REGISTRY_PATH}`);
|
|
228
228
|
console.log(`Specs: ${result.specs}; tombstones: ${result.tombstones}`);
|
|
229
|
+
if (result.differences?.length) {
|
|
230
|
+
console.log('Differences:');
|
|
231
|
+
for (const difference of result.differences) {
|
|
232
|
+
console.log(` ${difference.path}: ${difference.message}`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
229
235
|
if (result.issues.length) printIssues(result.issues);
|
|
230
236
|
}
|
|
231
237
|
|
|
@@ -268,6 +274,7 @@ export function runSpecs(projectDir, config, flags = {}) {
|
|
|
268
274
|
specs: projection.registry.specs.length,
|
|
269
275
|
tombstones: projection.registry.tombstones.length,
|
|
270
276
|
issues: projection.issues,
|
|
277
|
+
differences: projection.differences,
|
|
271
278
|
};
|
|
272
279
|
if (flags.format === 'json') console.log(JSON.stringify(result, null, 2));
|
|
273
280
|
else printResult(result);
|
|
@@ -169,6 +169,14 @@ export function runVerify(projectDir, config, flags) {
|
|
|
169
169
|
|
|
170
170
|
function runEvidenceVerification(projectDir, config, flags) {
|
|
171
171
|
const evaluation = evaluateEvidence(projectDir, config);
|
|
172
|
+
// Match guard's severity contract so this command is safe as a direct CI
|
|
173
|
+
// gate: contradictions and invalid manifests fail, while unresolved evidence
|
|
174
|
+
// uses the warning-only status shared by the rest of the CLI.
|
|
175
|
+
process.exitCode = evaluation.status === 'contradicted' || evaluation.status === 'invalid'
|
|
176
|
+
? 1
|
|
177
|
+
: evaluation.status === 'attention-required'
|
|
178
|
+
? 2
|
|
179
|
+
: 0;
|
|
172
180
|
if (flags.format === 'json') {
|
|
173
181
|
console.log(JSON.stringify(evaluation, null, 2));
|
|
174
182
|
return;
|
|
@@ -35,6 +35,51 @@ const posix = path => path.split(sep).join('/').replace(/^\.\//, '');
|
|
|
35
35
|
const digest = content => `sha256:${createHash('sha256').update(content).digest('hex')}`;
|
|
36
36
|
const sortedUnique = values => [...new Set(values)].sort((a, b) => a.localeCompare(b));
|
|
37
37
|
|
|
38
|
+
function registryDifferences(left, right) {
|
|
39
|
+
const differences = [];
|
|
40
|
+
let omitted = false;
|
|
41
|
+
const add = difference => {
|
|
42
|
+
if (differences.length < 25) differences.push(difference);
|
|
43
|
+
else omitted = true;
|
|
44
|
+
};
|
|
45
|
+
const memberKeys = values => values.map(value => JSON.stringify(value)).sort();
|
|
46
|
+
const visit = (actual, projected, path) => {
|
|
47
|
+
if (omitted) return;
|
|
48
|
+
if (Object.is(actual, projected)) return;
|
|
49
|
+
if (Array.isArray(actual) && Array.isArray(projected)) {
|
|
50
|
+
if (JSON.stringify(actual) === JSON.stringify(projected)) return;
|
|
51
|
+
const actualMembers = memberKeys(actual);
|
|
52
|
+
const projectedMembers = memberKeys(projected);
|
|
53
|
+
if (actualMembers.length === projectedMembers.length
|
|
54
|
+
&& actualMembers.every((value, index) => value === projectedMembers[index])) {
|
|
55
|
+
add({ path, kind: 'order', message: 'Unordered values are not in canonical sort order.' });
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const length = Math.max(actual.length, projected.length);
|
|
59
|
+
for (let index = 0; index < length; index++) visit(actual[index], projected[index], `${path}[${index}]`);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const actualObject = actual !== null && typeof actual === 'object' && !Array.isArray(actual);
|
|
63
|
+
const projectedObject = projected !== null && typeof projected === 'object' && !Array.isArray(projected);
|
|
64
|
+
if (actualObject && projectedObject) {
|
|
65
|
+
for (const key of [...new Set([...Object.keys(actual), ...Object.keys(projected)])].sort()) {
|
|
66
|
+
visit(actual[key], projected[key], `${path}.${key}`);
|
|
67
|
+
}
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const kind = actual === undefined ? 'missing'
|
|
71
|
+
: projected === undefined ? 'unexpected'
|
|
72
|
+
: 'value';
|
|
73
|
+
const message = kind === 'missing' ? 'Field is missing from the registry.'
|
|
74
|
+
: kind === 'unexpected' ? 'Field is not part of the deterministic projection.'
|
|
75
|
+
: 'Field value differs from the deterministic projection.';
|
|
76
|
+
add({ path, kind, message });
|
|
77
|
+
};
|
|
78
|
+
visit(left, right, '$');
|
|
79
|
+
if (omitted) differences.push({ path: '$', kind: 'truncated', message: 'Additional differences were omitted.' });
|
|
80
|
+
return differences;
|
|
81
|
+
}
|
|
82
|
+
|
|
38
83
|
function isSafeFile(projectDir, path) {
|
|
39
84
|
try {
|
|
40
85
|
const root = realpathSync(projectDir);
|
|
@@ -472,10 +517,14 @@ export function projectSpecRegistry(projectDir, config = {}, options = {}) {
|
|
|
472
517
|
const current = existing.exists && !existing.error
|
|
473
518
|
? `${JSON.stringify(existing.value, null, 2)}\n` === serialized
|
|
474
519
|
: false;
|
|
520
|
+
const differences = existing.exists && !existing.error
|
|
521
|
+
? registryDifferences(existing.value, projected)
|
|
522
|
+
: [];
|
|
475
523
|
return {
|
|
476
524
|
registry: projected,
|
|
477
525
|
serialized,
|
|
478
526
|
current,
|
|
527
|
+
differences,
|
|
479
528
|
exists: existing.exists,
|
|
480
529
|
issues,
|
|
481
530
|
detected: detected.specs.length,
|
|
@@ -25,13 +25,16 @@ export function validateSpecRegistry(projectDir, config = {}) {
|
|
|
25
25
|
},
|
|
26
26
|
}));
|
|
27
27
|
if (!projection.current && projection.issues.length === 0) {
|
|
28
|
+
const detail = projection.differences.slice(0, 3)
|
|
29
|
+
.map(difference => `${difference.path}: ${difference.message}`)
|
|
30
|
+
.join(' ');
|
|
28
31
|
findings.push(mkFinding({
|
|
29
32
|
code: 'SPR001',
|
|
30
33
|
validator: 'specRegistry',
|
|
31
34
|
severity: 'warn',
|
|
32
35
|
confidence: 'high',
|
|
33
36
|
message: projection.exists
|
|
34
|
-
? `${SPEC_REGISTRY_PATH} does not match the current deterministic spec evidence projection
|
|
37
|
+
? `${SPEC_REGISTRY_PATH} does not match the current deterministic spec evidence projection.${detail ? ` ${detail}` : ''}`
|
|
35
38
|
: `${SPEC_REGISTRY_PATH} is missing while active specifications exist.`,
|
|
36
39
|
location: SPEC_REGISTRY_PATH,
|
|
37
40
|
suggestion: {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# Architecture
|
|
2
2
|
|
|
3
|
-
<!-- docguard:version 1.
|
|
3
|
+
<!-- docguard:version 1.3.0 -->
|
|
4
4
|
<!-- docguard:status active -->
|
|
5
5
|
<!-- docguard:last-reviewed 2026-09-15 -->
|
|
6
6
|
|
|
7
7
|
| Metadata | Value |
|
|
8
8
|
|----------|-------|
|
|
9
9
|
| **Status** |  |
|
|
10
|
-
| **Version** | `1.
|
|
10
|
+
| **Version** | `1.3.0` |
|
|
11
11
|
| **Last Updated** | 2026-09-15 |
|
|
12
12
|
| **Project Size** | ~24K lines across `cli/` |
|
|
13
13
|
|
|
@@ -26,11 +26,12 @@ It targets development teams and AI coding agents that need to maintain document
|
|
|
26
26
|
| **CLI Entry Point** | Argument parsing, config loading, command routing | `cli/` | `docguard.mjs` |
|
|
27
27
|
| **Commands** | User-facing commands (the Daily 5 — init/guard/diff/sync/score — plus situational tools including reconcile, retire, specs, and `init --with` scaffolders) | `cli/commands/` | `*.mjs` |
|
|
28
28
|
| **Document lifecycle** | Finds exact terminal-status docs and completed-task review candidates; explicit retirement removes documentation from active context only after its source revision is reachable from a retained Git ref | `cli/scanners/document-lifecycle.mjs`, `cli/validators/document-lifecycle.mjs`, `cli/commands/retire.mjs` | Scanner is read-only; retirement uses the shared multi-file transaction and remains explicit |
|
|
29
|
-
| **Spec lifecycle registry** | Projects immutable spec identities, reviewed lifecycle/lineage/scope, artifact digests, task state, qualified implementation/test evidence, bounded outcomes, and recovery tombstones into one byte-stable control file | `cli/scanners/spec-registry.mjs`, `cli/scanners/requirement-evidence.mjs`, `cli/validators/spec-registry.mjs`, `cli/commands/specs.mjs` | `specs --write` preserves reviewed fields; `specs complete` is the only verified-delivery writer
|
|
29
|
+
| **Spec lifecycle registry** | Projects immutable spec identities, reviewed lifecycle/lineage/scope, artifact digests, task state, qualified implementation/test evidence, bounded outcomes, and recovery tombstones into one byte-stable control file | `cli/scanners/spec-registry.mjs`, `cli/scanners/requirement-evidence.mjs`, `cli/validators/spec-registry.mjs`, `cli/commands/specs.mjs` | `specs --write` preserves reviewed fields; stale checks identify bounded field paths and distinguish canonical ordering from changed content; `specs complete` is the only verified-delivery writer |
|
|
30
30
|
| **Reconciliation graph** | Inventories changed paths independently from bounded patch text, maps them to direct spec evidence, and keeps mechanical facts, approved intent, decisions, unrelated changes, and unsupported evidence separate | `cli/shared-git.mjs`, `cli/scanners/reconciliation.mjs`, `cli/commands/reconcile.mjs` | Timeout, overflow, parse failure, or incomplete inventory blocks a ready result; planning is read-only and `--write` never rewrites requirements |
|
|
31
31
|
| **Precision evidence** | Runs labelled synthetic and exact-commit public cases, separates deterministic results from observations, calculates null-safe quality metrics and confidence bounds, and compares case-first baselines | `benchmarks/`, `schemas/docguard-benchmark.schema.json` | External runs are explicit; third-party project code is never executed and disposable checkouts are removed by default |
|
|
32
32
|
| **Feedback fixtures** | Validates synthetic reproductions and opposite controls, reduces them under an explicit predicate, derives duplicate identities, and emits test-only contributions | `cli/feedback-fixture.mjs`, `cli/commands/feedback.mjs`, `schemas/docguard-feedback-fixture.schema.json` | Publication remains user-controlled; contribution generation requires reviewed redaction, scope, and benchmark-delta evidence |
|
|
33
|
-
| **Evidence-scoped verification** | Binds one exact Markdown statement to a typed JSON Pointer value, bounded file collection, static Python container literal, or saved upstream compatibility report and returns one of five explicit states | `cli/evidence/`, `cli/validators/evidence.mjs`, `schemas/docguard-evidence.schema.json` | Reads stay local, bounded, non-executable, and symlink/private-path safe;
|
|
33
|
+
| **Evidence-scoped verification** | Binds one exact Markdown statement to a typed JSON Pointer value, bounded file collection, static Python container literal, or saved upstream compatibility report and returns one of five explicit states | `cli/evidence/`, `cli/validators/evidence.mjs`, `cli/commands/verify.mjs`, `schemas/docguard-evidence.schema.json` | Reads stay local, bounded, non-executable, and symlink/private-path safe; direct verification exits 1 for contradiction/invalid input, 2 for unresolved evidence, and 0 only for verified or unconfigured evidence |
|
|
34
|
+
| **Managed Git hooks** | Installs bounded DocGuard blocks while preserving user-owned hook commands before and after them | `cli/commands/hooks.mjs` | Reinstall and removal use one outer marker pair, repair nested markers from affected releases, fail closed on enforcement errors, and fall through after success so user postludes execute |
|
|
34
35
|
| **Readiness assessment** | Combines guard enforcement and optional CI score policy without changing structural score semantics | `cli/assessment.mjs`, `cli/commands/ci.mjs`, `cli/commands/diagnose.mjs`, `cli/commands/report.mjs` | READY requires a passing guard and configured gates; ATTENTION carries advisory warnings; BLOCKED identifies failed enforcement |
|
|
35
36
|
| **Task-specific agent context** | Ranks exact task paths, qualified requirements, finding codes, identifiers, and bounded lexical overlap across current governed evidence | `cli/scanners/task-context.mjs`, `cli/commands/agent.mjs`, `schemas/docguard-task-context.schema.json` | Read-only and deterministic; excludes retired, unapproved, digest-stale, private, and unsafe material; abstains on weak relevance and never upgrades prose accuracy |
|
|
36
37
|
| **Cross-language import graph** | Resolves repository-local JS/TS and Python static imports for cycle and layer checks | `cli/validators/architecture.mjs`, `cli/scanners/py-ast.mjs` | Python supports regular flat/`src/` packages and explicit relatives; dynamic imports, runtime path changes, parse failures, missing interpreters, and ambiguous modules remain explicit limitations |
|
|
@@ -204,9 +205,10 @@ DocGuard declares one exact-pinned runtime dependency, `@babel/parser`. It loads
|
|
|
204
205
|
|
|
205
206
|
| Version | Date | Author | Changes |
|
|
206
207
|
|---------|------|--------|---------|
|
|
208
|
+
| 1.3.0 | 2026-09-15 | DocGuard Team | Made managed hooks composable and self-repairing, aligned direct evidence exit codes with guard severity, and exposed field-level registry drift |
|
|
207
209
|
| 1.2.0 | 2026-09-15 | DocGuard Team | Made router mounts symbol-aware and statically composable, retained negative scan evidence as review-only, and aligned monorepo/config/design-sync discovery boundaries |
|
|
208
|
-
| 1.0.0 | 2026-09-14 | DocGuard Team | Added deterministic task-specific context selection, lifecycle and safe-reader boundaries, strict packet schema, and the frozen promotion benchmark |
|
|
209
210
|
| 1.1.0 | 2026-09-15 | DocGuard Team | Added packed adoption qualification, independent diff inventory, exact finding-code policy, combined readiness assessment, lifecycle-aware traceability, static Python literal evidence, and transitive static router-mount resolution with test-client exclusion |
|
|
211
|
+
| 1.0.0 | 2026-09-14 | DocGuard Team | Added deterministic task-specific context selection, lifecycle and safe-reader boundaries, strict packet schema, and the frozen promotion benchmark |
|
|
210
212
|
| 0.9.0 | 2026-09-14 | DocGuard Team | Added strict evidence manifests, typed local adapters, five-state evaluation, exact semantic-claim coverage, and guard/agent assurance integration |
|
|
211
213
|
| 0.8.0 | 2026-09-14 | DocGuard Team | Added transactional retirement/completion writes, reconciliation review graphs, qualified implementation evidence, bounded outcomes, active-context regeneration, and Spec Kit completion hooks |
|
|
212
214
|
| 0.7.0 | 2026-09-14 | DocGuard Team | Added the deterministic spec lifecycle registry, immutable spec-ID resolution, shared requirement evidence scanner, recovery tombstones, and two-stage preflight boundary |
|
|
@@ -24,6 +24,11 @@ visible warnings. Inspect the complete contract with:
|
|
|
24
24
|
npx docguard-cli verify --evidence --format json
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
+
This direct command exits 0 when every configured declaration is verified, 2
|
|
28
|
+
when evidence is stale, inconclusive, or unsupported, and 1 when a declaration
|
|
29
|
+
is contradicted or the manifest is invalid. CI that permits unresolved evidence
|
|
30
|
+
must explicitly allow only status 2; a contradiction is always a failed gate.
|
|
31
|
+
|
|
27
32
|
Generate oasdiff or Buf reports in an earlier pinned CI step, save their machine
|
|
28
33
|
output, and declare SHA-256 identities for every repository input. DocGuard
|
|
29
34
|
consumes those artifacts; it does not install or invoke either producer. Keep
|