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