docguard-cli 0.34.3__tar.gz → 0.34.4__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.34.3/extensions/spec-kit-docguard → docguard_cli-0.34.4/.agent}/skills/docguard-fix/SKILL.md +2 -2
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/skills/docguard-guard/SKILL.md +2 -2
- {docguard_cli-0.34.3/extensions/spec-kit-docguard → docguard_cli-0.34.4/.agent}/skills/docguard-review/SKILL.md +2 -2
- {docguard_cli-0.34.3/extensions/spec-kit-docguard → docguard_cli-0.34.4/.agent}/skills/docguard-score/SKILL.md +2 -2
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/skills/docguard-sync/SKILL.md +2 -2
- docguard_cli-0.34.4/.github/workflows/auto-merge.yml +135 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.github/workflows/ci.yml +24 -2
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.github/workflows/jules-triage.yml +26 -1
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.github/workflows/release.yml +15 -8
- docguard_cli-0.34.4/.github/workflows/scheduled-release.yml +137 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/anatomy.md +8 -5
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/buglog.json +123 -1
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/cerebrum.md +1 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/hooks/_session.json +61 -9
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/memory.md +11 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/token-ledger.json +250 -7
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/CHANGELOG.md +21 -3
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/PKG-INFO +1 -1
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/extension.yml +1 -1
- {docguard_cli-0.34.3/.agent → docguard_cli-0.34.4/extensions/spec-kit-docguard}/skills/docguard-fix/SKILL.md +2 -2
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/skills/docguard-guard/SKILL.md +2 -2
- {docguard_cli-0.34.3/.agent → docguard_cli-0.34.4/extensions/spec-kit-docguard}/skills/docguard-review/SKILL.md +2 -2
- {docguard_cli-0.34.3/.agent → docguard_cli-0.34.4/extensions/spec-kit-docguard}/skills/docguard-score/SKILL.md +2 -2
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/skills/docguard-sync/SKILL.md +2 -2
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/package-lock.json +2 -2
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/package.json +1 -1
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/pyproject.toml +1 -1
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/commands/docguard.fix.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/commands/docguard.guard.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/commands/docguard.review.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/commands/docguard.score.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/commands/speckit.analyze.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/commands/speckit.checklist.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/commands/speckit.clarify.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/commands/speckit.constitution.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/commands/speckit.implement.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/commands/speckit.plan.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/commands/speckit.specify.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/commands/speckit.tasks.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/commands/speckit.taskstoissues.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/skills/speckit-analyze/SKILL.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/skills/speckit-checklist/SKILL.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/skills/speckit-clarify/SKILL.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/skills/speckit-constitution/SKILL.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/skills/speckit-implement/SKILL.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/skills/speckit-plan/SKILL.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/skills/speckit-specify/SKILL.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/skills/speckit-tasks/SKILL.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.agent/skills/speckit-taskstoissues/SKILL.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.claude/rules/openwolf.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.claude/settings.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.docguard.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.docguardignore +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.github/ISSUE_TEMPLATE/docguard-feedback.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.github/dependabot.yml +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.github/scripts/speckit-submission.py +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.github/workflows/supply-chain.yml +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.github/workflows/sync-speckit-catalog.yml +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.gitignore +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.jules/bolt.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.jules/palette.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.jules/sentinel.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.jules-setup.sh +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.npmignore +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.npmrc +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.pre-commit-hooks.yaml +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.specify/extensions/.cache/catalog-ebf165086500aab1-metadata.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.specify/extensions/.cache/catalog-ebf165086500aab1.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.specify/extensions/.cache/catalog-metadata.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.specify/extensions/.cache/catalog.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.specify/init-options.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.specify/memory/constitution.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.specify/scripts/bash/common.sh +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.specify/scripts/bash/setup-plan.sh +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.specify/templates/agent-file-template.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.specify/templates/checklist-template.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.specify/templates/constitution-template.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.specify/templates/plan-template.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.specify/templates/spec-template.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.specify/templates/tasks-template.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/OPENWOLF.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/config.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/cron-manifest.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/cron-state.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/daemon.log +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/designqc-report.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/hooks/_wrap_up_nudged +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/hooks/package.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/hooks/post-read.js +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/hooks/post-write.js +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/hooks/pre-read.js +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/hooks/pre-write.js +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/hooks/session-start.js +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/hooks/shared.js +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/hooks/stop.js +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/identity.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/reframe-frameworks.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/.wolf/suggestions.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/AGENTS.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/CLAUDE.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/CODE_OF_CONDUCT.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/COMPARISONS.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/CONTRIBUTING.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/DRIFT-LOG.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/Dockerfile +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/LICENSE +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/PHILOSOPHY.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/PRIVACY.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/README.es.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/README.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/README.pt-BR.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/ROADMAP.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/SECURITY.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/STANDARD.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/SUPPLY-CHAIN-AUDIT.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/SUPPORT.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/VALIDATION.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/action.yml +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/assets/bin/docguard +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/assets/demo.gif +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/assets/demo.tape +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/assets/docguard-logo.png +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/agent.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/agents.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/badge.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/ci.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/demo.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/diagnose.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/diff.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/explain.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/feedback.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/fix.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/generate.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/guard.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/hooks.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/impact.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/init.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/llms.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/mcp.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/memory.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/publish.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/report.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/score.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/setup.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/sync-tests.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/sync.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/trace.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/upgrade.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/verify.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/commands/watch.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/config.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/docguard.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/ensure-skills.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/findings.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/scanners/agent-readability.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/scanners/api-doc.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/scanners/cdk.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/scanners/doc-tools.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/scanners/frontend.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/scanners/iac.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/scanners/instruction-audit.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/scanners/integrations.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/scanners/inventory.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/scanners/js-ast.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/scanners/memory-plan.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/scanners/project-type.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/scanners/py-ast.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/scanners/routes.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/scanners/schemas.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/scanners/semantic-claims.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/scanners/speckit.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/shared-diff.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/shared-git.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/shared-ignore.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/shared-ir.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/shared-source.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/shared-trace-patterns.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/shared.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validator-markers.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/api-doc-smells.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/api-surface.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/architecture.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/canonical-sync.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/changelog.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/cross-reference.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/diff-suspicion.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/doc-quality.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/docs-coverage.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/docs-diff.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/docs-sync.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/drift.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/environment.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/freshness.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/generated-staleness.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/metadata-sync.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/metrics-consistency.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/reference-existence.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/schema-sync.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/security.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/spec-kit.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/structure.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/surface-sync.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/test-spec.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/todo-tracking.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/validators/traceability.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/writers/api-reference.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/writers/baseline.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/writers/doc-generators.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/writers/fix-memory.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/writers/generate-io.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/writers/history.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/writers/junit.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/writers/mechanical.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/writers/sarif.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/cli/writers/sections.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/commands/docguard.fix.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/commands/docguard.guard.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/commands/docguard.review.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/commands/docguard.score.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/configs/fastify.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/configs/generic.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/configs/nextjs.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/configs/python.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docguard_cli/__init__.py +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docguard_cli/wrapper.py +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docs/ai-integration.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docs/commands.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docs/configuration.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docs/doc-sections.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docs/faq.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docs/installation.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docs/profiles.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docs/quickstart.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docs-canonical/CI-RECIPES.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docs-canonical/DATA-MODEL.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docs-canonical/ENVIRONMENT.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docs-canonical/REQUIREMENTS.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docs-canonical/SECURITY.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docs-canonical/SURFACE-AUDIT.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/docs-implementation/MIGRATION-v0.20.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/examples/01-express-api/README.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/examples/01-express-api/package.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/examples/01-express-api/server.js +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/examples/02-python-flask/README.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/examples/02-python-flask/app.py +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/examples/02-python-flask/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/examples/02-python-flask/requirements.txt +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/examples/03-spec-kit-project/CHANGELOG.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/examples/03-spec-kit-project/README.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/examples/03-spec-kit-project/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/examples/03-spec-kit-project/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/examples/03-spec-kit-project/package.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/examples/03-spec-kit-project/src/index.js +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/examples/03-spec-kit-project/tasks.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/examples/03-spec-kit-project/tests/basic.test.js +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/examples/README.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/LICENSE +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/README.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/commands/diagnose.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/commands/fix.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/commands/generate.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/commands/guard.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/commands/init.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/commands/score.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/commands/sync.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/commands/trace.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/scripts/bash/common.sh +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/scripts/bash/docguard-init-doc.sh +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/scripts/bash/docguard-suggest-fix.sh +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/templates/extensions.yml +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/templates/github-workflows/docguard-autofix.yml +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/templates/github-workflows/docguard-guard.yml +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/glama.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/llms-full.txt +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/llms.txt +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/mcpb/README.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/mcpb/manifest.template.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/packaging/homebrew/docguard.rb +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/packaging/submissions.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/schemas/docguard-config.schema.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/server.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/smithery.yaml +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/specs/001-fix-ignore-validators/plan.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/specs/001-fix-ignore-validators/spec.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/specs/001-fix-ignore-validators/tasks.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/specs/002-fix-test-discovery/plan.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/specs/002-fix-test-discovery/spec.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/specs/002-fix-test-discovery/tasks.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/specs/003-v011-false-positives/plan.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/specs/003-v011-false-positives/spec.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/specs/003-v011-false-positives/tasks.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/specs/004-v020-env-var-false-negative/spec.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/specs/005-hugocross-next-bugs/spec.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/ADR.md.template +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/AGENTS.md.template +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/ARCHITECTURE.md.template +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/CHANGELOG.md.template +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/CURRENT-STATE.md.template +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/DATA-MODEL.md.template +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/DEPLOYMENT.md.template +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/DRIFT-LOG.md.template +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/ENVIRONMENT.md.template +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/KNOWN-GOTCHAS.md.template +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/REQUIREMENTS.md.template +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/ROADMAP.md.template +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/RUNBOOKS.md.template +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/SECURITY.md.template +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/TEST-SPEC.md.template +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/TROUBLESHOOTING.md.template +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/VENDOR-BUGS.md.template +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/ci/github-actions.yml +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/ci/gitlab-component.yml +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/commands/docguard.fix.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/commands/docguard.guard.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/commands/docguard.init.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/commands/docguard.review.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/commands/docguard.update.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/demo-fixture/.docguard.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/demo-fixture/.env.example +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/demo-fixture/AGENTS.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/demo-fixture/CHANGELOG.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/demo-fixture/DRIFT-LOG.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/demo-fixture/README.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/demo-fixture/docs-canonical/API-REFERENCE.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/demo-fixture/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/demo-fixture/docs-canonical/DATA-MODEL.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/demo-fixture/docs-canonical/ENVIRONMENT.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/demo-fixture/docs-canonical/SECURITY.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/demo-fixture/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/demo-fixture/package.json +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/demo-fixture/src/api.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/demo-fixture/src/notifier.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/demo-fixture/src/scheduler.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/templates/demo-fixture/src/worker.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/agent-readability.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/agent.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/agents-command.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/agents-sync.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/anchor-autofix.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/api-doc-smells.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/api-doc.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/api-surface.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/api-write.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/architecture.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/b7-node-env-symmetry.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/backup-failure.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/badge.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/baseline.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/canonical-docs-nested-phase2.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/canonical-docs-nested.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/canonical-sync.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/cdk-detection.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/changed-only-scoping.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/changed-only.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/changelog.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/commands.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/cross-reference.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/demo-command.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/diff-suspicion.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/doc-quality.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/doc-section-synonyms.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/docguardignore.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/docs-coverage.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/docs-diff.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/docs-sync.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/drift.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/ensure-skills-idempotent.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/env-schema-detection.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/environment.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/explain-coverage.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/field-report-2-cli.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/field-report-3-deferred.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/field-report-3.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/fix-memory.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/fix-suppression.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/fixture-projects.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/freshness.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/frontend-deep.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/frontend.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/generate-io.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/generated-staleness.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/guard-classify.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/guard-no-throw.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/history.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/hooks.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/i18n.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/impact.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/init-smart-detection.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/instruction-audit.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/integrations.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/inventory.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/js-ast.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/junit.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/llms-full-pack.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/mcp-http.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/mcp.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/mechanical.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/memory-plan.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/metadata-sync.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/metrics-consistency.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/metrics-dedup.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/monorepo-scanning.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/multi-spec.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/npm-pack-smoke.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/nudge-hook.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/openapi-parse-honesty.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/patch-0.11.2.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/plan-disk-cache.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/profile-flag.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/project-type.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/py-ast.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/reference-existence.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/regenerate-section.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/report.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/routes-express-mounts.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/routes-fastify.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/routes-multilang.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/routes-nextjs-app-router.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/sarif.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/schema-sync.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/schemas-multilang.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/schemas.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/scoping-extended.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/score-suggestions.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/section-na-markers.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/sections.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/security-init-injection.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/security.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/severity.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/shared-diff.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/shared-git.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/shared-ignore-functions.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/shared-ir.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/shared-source.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/speckit-bugfix.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/speckit-phantom.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/starter-scaffold.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/stress-test.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/structure.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/surface-sync.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/sweep-nudge.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/sync-since.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/sync.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/test-spec.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/todo-tracking.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/trace-features.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/trace-multilang.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/trace-reverse.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/traceability-ir.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/traceability.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/upgrade-pr-e2e.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/upgrade-pr.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/upgrade.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/v020-consolidation.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/validator-markers.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/validator-naming.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/verify-change-context.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/version-pin.test.mjs +0 -0
- {docguard_cli-0.34.3 → docguard_cli-0.34.4}/tests/whats-new.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.34.
|
|
9
|
+
version: 0.34.4
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-fix
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.34.
|
|
12
|
+
<!-- docguard:version: 0.34.4 -->
|
|
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.34.
|
|
10
|
+
version: 0.34.4
|
|
11
11
|
source: extensions/spec-kit-docguard/skills/docguard-guard
|
|
12
12
|
---
|
|
13
|
-
<!-- docguard:version: 0.34.
|
|
13
|
+
<!-- docguard:version: 0.34.4 -->
|
|
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.34.
|
|
9
|
+
version: 0.34.4
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-review
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.34.
|
|
12
|
+
<!-- docguard:version: 0.34.4 -->
|
|
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.34.
|
|
9
|
+
version: 0.34.4
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-score
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.34.
|
|
12
|
+
<!-- docguard:version: 0.34.4 -->
|
|
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.34.
|
|
7
|
+
version: 0.34.4
|
|
8
8
|
source: extensions/spec-kit-docguard/skills/docguard-sync
|
|
9
9
|
---
|
|
10
|
-
<!-- docguard:version: 0.34.
|
|
10
|
+
<!-- docguard:version: 0.34.4 -->
|
|
11
11
|
|
|
12
12
|
# DocGuard Sync Skill
|
|
13
13
|
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
name: Auto-merge (green bot PRs)
|
|
2
|
+
|
|
3
|
+
# Hands-off merging for bot PRs that have ALREADY passed the full CI matrix.
|
|
4
|
+
#
|
|
5
|
+
# WHY workflow_run AND NOT `gh pr merge --auto`: GitHub's native auto-merge
|
|
6
|
+
# requires the repo-level `allow_auto_merge` setting plus REQUIRED status
|
|
7
|
+
# checks in branch protection. Without required checks configured, `--auto`
|
|
8
|
+
# merges IMMEDIATELY without waiting for CI — worse than merging by hand.
|
|
9
|
+
# This workflow instead fires only after "DocGuard CI" reports success for
|
|
10
|
+
# the head SHA, re-verifies every matrix leg via the API, and merges itself.
|
|
11
|
+
# No repo settings required, and it is fail-closed: anything unexpected → skip.
|
|
12
|
+
#
|
|
13
|
+
# SECURITY: workflow_run runs in the BASE repo context with write scope, so it
|
|
14
|
+
# NEVER checks out or executes PR code. It reads PR metadata + check results
|
|
15
|
+
# via the API only. (Same rule as jules-triage.yml / AGENTS.md CI rule.)
|
|
16
|
+
#
|
|
17
|
+
# WHAT AUTO-MERGES:
|
|
18
|
+
# - dependabot: patch + minor only. Majors NEVER (v0.34.1 shipped a Node-18
|
|
19
|
+
# break from an auto-accepted @babel/parser major; bug-255).
|
|
20
|
+
# - jules: test-only and docs-only changes. Anything touching cli/ logic,
|
|
21
|
+
# .github/, or package.json is labeled and left for a human.
|
|
22
|
+
|
|
23
|
+
on:
|
|
24
|
+
workflow_run:
|
|
25
|
+
workflows: ["DocGuard CI"]
|
|
26
|
+
types: [completed]
|
|
27
|
+
|
|
28
|
+
permissions:
|
|
29
|
+
contents: write
|
|
30
|
+
pull-requests: write
|
|
31
|
+
checks: read
|
|
32
|
+
actions: read
|
|
33
|
+
|
|
34
|
+
jobs:
|
|
35
|
+
auto-merge:
|
|
36
|
+
if: github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'pull_request'
|
|
37
|
+
runs-on: ubuntu-latest
|
|
38
|
+
steps:
|
|
39
|
+
- name: Evaluate and merge if safe
|
|
40
|
+
uses: actions/github-script@v9
|
|
41
|
+
with:
|
|
42
|
+
script: |
|
|
43
|
+
const owner = context.repo.owner;
|
|
44
|
+
const repo = context.repo.repo;
|
|
45
|
+
const run = context.payload.workflow_run;
|
|
46
|
+
const headSha = run.head_sha;
|
|
47
|
+
|
|
48
|
+
// ── Locate the PR for this CI run ────────────────────────────
|
|
49
|
+
const { data: prs } = await github.rest.repos.listPullRequestsAssociatedWithCommit({
|
|
50
|
+
owner, repo, commit_sha: headSha,
|
|
51
|
+
});
|
|
52
|
+
const pr = prs.find((p) => p.state === 'open');
|
|
53
|
+
if (!pr) { core.info('No open PR for this SHA — nothing to do.'); return; }
|
|
54
|
+
const num = pr.number;
|
|
55
|
+
const author = pr.user.login;
|
|
56
|
+
|
|
57
|
+
const BOT_DEPENDABOT = 'dependabot[bot]';
|
|
58
|
+
const BOT_JULES = 'google-labs-jules[bot]';
|
|
59
|
+
if (![BOT_DEPENDABOT, BOT_JULES].includes(author)) {
|
|
60
|
+
core.info(`#${num} authored by ${author} (not a handled bot) — leaving alone.`);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const hold = async (label, why) => {
|
|
65
|
+
try {
|
|
66
|
+
await github.rest.issues.addLabels({ owner, repo, issue_number: num, labels: [label] });
|
|
67
|
+
} catch (e) { core.info(`label skipped: ${e.message}`); }
|
|
68
|
+
await github.rest.issues.createComment({
|
|
69
|
+
owner, repo, issue_number: num,
|
|
70
|
+
body: `⏸️ **Held for human review** — ${why}\n\nCI is green, but this falls outside the auto-merge policy in \`.github/workflows/auto-merge.yml\`.`,
|
|
71
|
+
});
|
|
72
|
+
core.notice(`#${num} held: ${why}`);
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
// ── Re-verify EVERY matrix leg independently ─────────────────
|
|
76
|
+
// workflow_run.conclusion=success covers this run, but be explicit:
|
|
77
|
+
// all four Node legs must be present AND successful. Fail closed.
|
|
78
|
+
const { data: checks } = await github.rest.checks.listForRef({
|
|
79
|
+
owner, repo, ref: headSha, per_page: 100,
|
|
80
|
+
});
|
|
81
|
+
const REQUIRED = ['test (18)', 'test (20)', 'test (22)', 'test (24)'];
|
|
82
|
+
const bad = [];
|
|
83
|
+
for (const name of REQUIRED) {
|
|
84
|
+
const c = checks.check_runs.find((r) => r.name === name);
|
|
85
|
+
if (!c) bad.push(`${name}: missing`);
|
|
86
|
+
else if (c.conclusion !== 'success') bad.push(`${name}: ${c.conclusion}`);
|
|
87
|
+
}
|
|
88
|
+
if (bad.length) {
|
|
89
|
+
core.info(`#${num} not merging — checks not all green: ${bad.join(', ')}`);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// ── Scope gate: what files does this PR touch? ───────────────
|
|
94
|
+
const { data: files } = await github.rest.pulls.listFiles({
|
|
95
|
+
owner, repo, pull_number: num, per_page: 300,
|
|
96
|
+
});
|
|
97
|
+
const paths = files.map((f) => f.filename);
|
|
98
|
+
|
|
99
|
+
if (author === BOT_DEPENDABOT) {
|
|
100
|
+
// Version delta from the title: "bump X from 1.2.3 to 1.2.4"
|
|
101
|
+
const m = /from (\d+)\.(\d+)\.(\d+)\S* to (\d+)\.(\d+)\.(\d+)/.exec(pr.title || '');
|
|
102
|
+
if (!m) { await hold('needs-review', 'could not parse the version delta from the PR title.'); return; }
|
|
103
|
+
const [fromMaj, fromMin] = [Number(m[1]), Number(m[2])];
|
|
104
|
+
const [toMaj, toMin] = [Number(m[4]), Number(m[5])];
|
|
105
|
+
if (toMaj !== fromMaj) {
|
|
106
|
+
await hold('needs-review', `this is a **major** bump (${m[1]}.${m[2]}.${m[3]} → ${m[4]}.${m[5]}.${m[6]}). Majors are never auto-merged — a @babel/parser major silently dropped Node 18 support and broke a release (bug-255).`);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
core.info(`#${num} dependabot ${toMin !== fromMin ? 'minor' : 'patch'} bump — eligible.`);
|
|
110
|
+
} else {
|
|
111
|
+
// Jules: only test-only / docs-only changes auto-merge.
|
|
112
|
+
const risky = paths.filter((p) =>
|
|
113
|
+
!(p.startsWith('tests/') || p.startsWith('docs/') || p.endsWith('.md'))
|
|
114
|
+
);
|
|
115
|
+
if (risky.length) {
|
|
116
|
+
await hold('jules-review', `it changes non-test/non-doc files:\n${risky.map((p) => `- \`${p}\``).join('\n')}\n\nProduction-logic changes from an agent get a human read before they ship to npm.`);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
core.info(`#${num} jules test/docs-only (${paths.length} files) — eligible.`);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// ── Merge ────────────────────────────────────────────────────
|
|
123
|
+
try {
|
|
124
|
+
await github.rest.pulls.merge({
|
|
125
|
+
owner, repo, pull_number: num, merge_method: 'squash',
|
|
126
|
+
});
|
|
127
|
+
await github.rest.issues.createComment({
|
|
128
|
+
owner, repo, issue_number: num,
|
|
129
|
+
body: `🤖 **Auto-merged** — all four Node legs (18/20/22/24) green, within the test-runtime budget, and inside the auto-merge policy in \`.github/workflows/auto-merge.yml\`.`,
|
|
130
|
+
});
|
|
131
|
+
core.notice(`Merged #${num}.`);
|
|
132
|
+
} catch (e) {
|
|
133
|
+
core.warning(`Merge of #${num} failed: ${e.message}`);
|
|
134
|
+
await hold('needs-review', `auto-merge failed: \`${e.message}\``);
|
|
135
|
+
}
|
|
@@ -45,8 +45,30 @@ jobs:
|
|
|
45
45
|
run: python3 -c "import docguard_cli.wrapper; print('docguard_cli.wrapper OK')"
|
|
46
46
|
|
|
47
47
|
# ── Automated Test Suite ──
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
# Also enforces a RUNTIME BUDGET. A test that walks an unintended tree
|
|
49
|
+
# (e.g. passing '/' as a project dir) still PASSES — it just takes
|
|
50
|
+
# forever. PR #328 did exactly that: tests/schemas.test.mjs went from
|
|
51
|
+
# 118ms to >10s and the whole suite from ~25s to 190s, green the entire
|
|
52
|
+
# time. Only a duration check catches that class, so auto-merge depends
|
|
53
|
+
# on this gate existing. Normal: ~33s (node 24) to ~51s (node 18) on CI.
|
|
54
|
+
# Budget is deliberately loose — it catches catastrophes, not jitter.
|
|
55
|
+
- name: Run Tests (with runtime budget)
|
|
56
|
+
env:
|
|
57
|
+
TEST_BUDGET_MS: 120000
|
|
58
|
+
run: |
|
|
59
|
+
set -o pipefail
|
|
60
|
+
npm test 2>&1 | tee /tmp/test-output.txt
|
|
61
|
+
DURATION=$(grep -oE 'duration_ms [0-9]+' /tmp/test-output.txt | tail -1 | grep -oE '[0-9]+' | cut -d. -f1)
|
|
62
|
+
if [ -z "$DURATION" ]; then
|
|
63
|
+
echo "::warning::Could not parse test duration — skipping budget check"
|
|
64
|
+
exit 0
|
|
65
|
+
fi
|
|
66
|
+
echo "Test suite duration: ${DURATION}ms (budget: ${TEST_BUDGET_MS}ms)"
|
|
67
|
+
if [ "$DURATION" -gt "$TEST_BUDGET_MS" ]; then
|
|
68
|
+
echo "::error::Test suite took ${DURATION}ms, over the ${TEST_BUDGET_MS}ms budget."
|
|
69
|
+
echo "::error::Something is scanning far more than it should (see PR #328 / bug-254)."
|
|
70
|
+
exit 1
|
|
71
|
+
fi
|
|
50
72
|
|
|
51
73
|
# ── Self-validation (dogfooding) ──
|
|
52
74
|
- name: CLI Version
|
|
@@ -52,7 +52,32 @@ jobs:
|
|
|
52
52
|
.trim();
|
|
53
53
|
const mine = norm(title);
|
|
54
54
|
const { data: open } = await github.rest.pulls.list({ owner, repo, state: 'open', per_page: 100 });
|
|
55
|
-
|
|
55
|
+
let dup = mine && open.find((p) => p.number !== num && norm(p.title) === mine);
|
|
56
|
+
|
|
57
|
+
// Title-equality alone is too strict: #324 "add tests for untested
|
|
58
|
+
// shared-ignore utilities", #325 "add missing tests for
|
|
59
|
+
// shared-ignore functions" and #329 "Add unit tests for
|
|
60
|
+
// shared-ignore detection utilities" were the SAME work, all three
|
|
61
|
+
// sat open, and two of them would have collided on the same import
|
|
62
|
+
// block if merged together. So also treat a PR as a duplicate when
|
|
63
|
+
// it touches an identical file set to another open Jules PR.
|
|
64
|
+
// Still metadata-only (listFiles) — never checks out PR code.
|
|
65
|
+
if (!dup) {
|
|
66
|
+
const fileSet = async (n) => {
|
|
67
|
+
const { data } = await github.rest.pulls.listFiles({ owner, repo, pull_number: n, per_page: 300 });
|
|
68
|
+
return data.map((f) => f.filename).sort().join('|');
|
|
69
|
+
};
|
|
70
|
+
try {
|
|
71
|
+
const mineFiles = await fileSet(num);
|
|
72
|
+
if (mineFiles) {
|
|
73
|
+
for (const p of open) {
|
|
74
|
+
if (p.number === num) continue;
|
|
75
|
+
if (p.user.login !== 'google-labs-jules[bot]') continue;
|
|
76
|
+
if (await fileSet(p.number) === mineFiles) { dup = p; break; }
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
} catch (e) { core.info(`file-overlap dup check skipped: ${e.message}`); }
|
|
80
|
+
}
|
|
56
81
|
|
|
57
82
|
const addLabel = async (name) => {
|
|
58
83
|
try {
|
|
@@ -207,14 +207,21 @@ jobs:
|
|
|
207
207
|
registry-url: 'https://registry.npmjs.org'
|
|
208
208
|
|
|
209
209
|
# Trusted Publishing (OIDC) needs npm CLI >= 11.5.0; Node 20's bundled
|
|
210
|
-
# npm predates that, so self-update first.
|
|
211
|
-
# npm
|
|
212
|
-
#
|
|
213
|
-
#
|
|
214
|
-
#
|
|
215
|
-
#
|
|
216
|
-
#
|
|
217
|
-
|
|
210
|
+
# npm predates that, so self-update first. Pinned to the 11.x line
|
|
211
|
+
# (NOT `npm@latest`) because npm 12 requires Node ^22.22.2 || ^24.15.0
|
|
212
|
+
# || >=26.0.0 -- newer than the Node 20 this job runs on. Learned this
|
|
213
|
+
# the hard way: the first cut of this fix used `npm@latest` and broke
|
|
214
|
+
# the same way the @babel/parser major bump did earlier (bug-255) --
|
|
215
|
+
# an unpinned "latest" floated past what this job's Node version
|
|
216
|
+
# supports. npm 11.x itself supports Node ^20.17.0 || >=22.9.0, so it
|
|
217
|
+
# installs cleanly here. No NODE_AUTH_TOKEN needed — npm exchanges the
|
|
218
|
+
# id-token (permissions, above) directly with the registry via the
|
|
219
|
+
# trusted-publisher connection configured on npmjs.com
|
|
220
|
+
# (raccioly/docguard, release.yml). This replaces the NPM_TOKEN-based
|
|
221
|
+
# auth that silently broke for 2 releases (v0.34.1, v0.34.2 never
|
|
222
|
+
# reached npm) when the token expired — nothing here can expire the
|
|
223
|
+
# same way; a short-lived token is minted per run.
|
|
224
|
+
- run: npm install -g npm@11
|
|
218
225
|
|
|
219
226
|
- name: Publish (with provenance)
|
|
220
227
|
run: npm publish --provenance
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
name: Scheduled Release
|
|
2
|
+
|
|
3
|
+
# Self-sustaining releases: batches whatever has landed on main since the last
|
|
4
|
+
# tag into a weekly patch release, instead of cutting a version per merge.
|
|
5
|
+
#
|
|
6
|
+
# WHY BATCHED AND NOT PER-MERGE: every release publishes to npm AND PyPI
|
|
7
|
+
# publicly. Per-merge releases would burn a version number per dependabot
|
|
8
|
+
# patch and publish constantly. Weekly batching keeps releases hands-off
|
|
9
|
+
# without turning the registry into a changelog.
|
|
10
|
+
#
|
|
11
|
+
# HOW IT TRIGGERS THE ACTUAL RELEASE: this workflow only bumps package.json
|
|
12
|
+
# and pushes. release.yml is triggered by pushes that touch package.json, so
|
|
13
|
+
# it picks up from there and does tag → GitHub Release → npm → PyPI → catalog
|
|
14
|
+
# reminder. Keeping the publish logic in one place (release.yml) on purpose.
|
|
15
|
+
#
|
|
16
|
+
# NO-OP WHEN NOTHING CHANGED: if there are no commits since the last release
|
|
17
|
+
# tag, this exits without bumping — no empty releases.
|
|
18
|
+
|
|
19
|
+
on:
|
|
20
|
+
schedule:
|
|
21
|
+
- cron: '0 9 * * 1' # Mondays 09:00 UTC
|
|
22
|
+
workflow_dispatch:
|
|
23
|
+
inputs:
|
|
24
|
+
bump:
|
|
25
|
+
description: 'Version bump type'
|
|
26
|
+
required: false
|
|
27
|
+
default: 'patch'
|
|
28
|
+
type: choice
|
|
29
|
+
options: [patch, minor]
|
|
30
|
+
|
|
31
|
+
permissions:
|
|
32
|
+
contents: write
|
|
33
|
+
|
|
34
|
+
jobs:
|
|
35
|
+
cut-release:
|
|
36
|
+
runs-on: ubuntu-latest
|
|
37
|
+
steps:
|
|
38
|
+
- uses: actions/checkout@v7
|
|
39
|
+
with:
|
|
40
|
+
fetch-depth: 0
|
|
41
|
+
|
|
42
|
+
- uses: actions/setup-node@v7
|
|
43
|
+
with:
|
|
44
|
+
node-version: 20
|
|
45
|
+
|
|
46
|
+
- name: Check for unreleased changes
|
|
47
|
+
id: check
|
|
48
|
+
run: |
|
|
49
|
+
CURRENT=$(node -p "require('./package.json').version")
|
|
50
|
+
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
|
51
|
+
echo "current=$CURRENT" >> "$GITHUB_OUTPUT"
|
|
52
|
+
|
|
53
|
+
if [ -z "$LAST_TAG" ]; then
|
|
54
|
+
echo "No tags yet — nothing to compare against, skipping."
|
|
55
|
+
echo "changed=false" >> "$GITHUB_OUTPUT"
|
|
56
|
+
exit 0
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
# Commits since the last tag, excluding the release commits themselves
|
|
60
|
+
# and the OpenWolf bookkeeping noise (.wolf/ is auto-written by hooks
|
|
61
|
+
# every session and must never on its own justify a release).
|
|
62
|
+
COMMITS=$(git log "${LAST_TAG}..HEAD" --oneline -- . ':!.wolf' | grep -viE '^[0-9a-f]+ (release|chore\(release\)):' || true)
|
|
63
|
+
COUNT=$(echo "$COMMITS" | grep -c . || true)
|
|
64
|
+
|
|
65
|
+
echo "Last tag: $LAST_TAG"
|
|
66
|
+
echo "Releasable commits since: $COUNT"
|
|
67
|
+
echo "$COMMITS"
|
|
68
|
+
|
|
69
|
+
if [ "$COUNT" -eq 0 ]; then
|
|
70
|
+
echo "changed=false" >> "$GITHUB_OUTPUT"
|
|
71
|
+
else
|
|
72
|
+
echo "changed=true" >> "$GITHUB_OUTPUT"
|
|
73
|
+
echo "last_tag=$LAST_TAG" >> "$GITHUB_OUTPUT"
|
|
74
|
+
# Stash the log for the changelog entry
|
|
75
|
+
echo "$COMMITS" > /tmp/commits.txt
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
- name: Bump version and write changelog
|
|
79
|
+
if: steps.check.outputs.changed == 'true'
|
|
80
|
+
run: |
|
|
81
|
+
BUMP="${{ inputs.bump || 'patch' }}"
|
|
82
|
+
OLD="${{ steps.check.outputs.current }}"
|
|
83
|
+
NEW=$(node -e "
|
|
84
|
+
const [maj,min,pat] = '$OLD'.split('.').map(Number);
|
|
85
|
+
console.log('$BUMP' === 'minor' ? \`\${maj}.\${min+1}.0\` : \`\${maj}.\${min}.\${pat+1}\`);
|
|
86
|
+
")
|
|
87
|
+
echo "Bumping $OLD → $NEW"
|
|
88
|
+
|
|
89
|
+
node -e "
|
|
90
|
+
const fs = require('fs');
|
|
91
|
+
const p = JSON.parse(fs.readFileSync('package.json','utf8'));
|
|
92
|
+
p.version = '$NEW';
|
|
93
|
+
fs.writeFileSync('package.json', JSON.stringify(p,null,2) + '\n');
|
|
94
|
+
"
|
|
95
|
+
npm install --package-lock-only --ignore-scripts
|
|
96
|
+
|
|
97
|
+
# Changelog entry from the commit subjects, so release.yml's notes
|
|
98
|
+
# extractor (which reads the '## [VERSION]' section) has real content.
|
|
99
|
+
{
|
|
100
|
+
echo "## [$NEW] - $(date -u +%Y-%m-%d)"
|
|
101
|
+
echo
|
|
102
|
+
echo "Automated weekly release — batches everything merged since \`${{ steps.check.outputs.last_tag }}\`."
|
|
103
|
+
echo
|
|
104
|
+
echo "### Changed"
|
|
105
|
+
echo
|
|
106
|
+
sed -E 's/^[0-9a-f]+ /- /' /tmp/commits.txt
|
|
107
|
+
echo
|
|
108
|
+
} > /tmp/entry.md
|
|
109
|
+
|
|
110
|
+
# Splice in directly under '## [Unreleased]'
|
|
111
|
+
awk '/^## \[Unreleased\]/ { print; print ""; while ((getline line < "/tmp/entry.md") > 0) print line; next } { print }' \
|
|
112
|
+
CHANGELOG.md > /tmp/CHANGELOG.new && mv /tmp/CHANGELOG.new CHANGELOG.md
|
|
113
|
+
|
|
114
|
+
# Keep the spec-kit extension metadata in lockstep (same thing
|
|
115
|
+
# `docguard fix --write` does locally before a manual release).
|
|
116
|
+
node cli/docguard.mjs fix --write || true
|
|
117
|
+
|
|
118
|
+
echo "NEW_VERSION=$NEW" >> "$GITHUB_ENV"
|
|
119
|
+
|
|
120
|
+
- name: Verify the tree is still green before releasing
|
|
121
|
+
if: steps.check.outputs.changed == 'true'
|
|
122
|
+
run: |
|
|
123
|
+
npm ci
|
|
124
|
+
npm test
|
|
125
|
+
node cli/docguard.mjs guard || [ $? -eq 2 ]
|
|
126
|
+
|
|
127
|
+
- name: Commit and push (this triggers release.yml)
|
|
128
|
+
if: steps.check.outputs.changed == 'true'
|
|
129
|
+
run: |
|
|
130
|
+
git config user.name "github-actions[bot]"
|
|
131
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
132
|
+
git add package.json package-lock.json CHANGELOG.md extensions/ .agent/ 2>/dev/null || true
|
|
133
|
+
git commit -m "release: v${NEW_VERSION} — automated weekly batch
|
|
134
|
+
|
|
135
|
+
Cut by .github/workflows/scheduled-release.yml. Publishing itself is
|
|
136
|
+
handled by release.yml, which triggers on this package.json change."
|
|
137
|
+
git push origin HEAD:main
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# anatomy.md
|
|
2
2
|
|
|
3
|
-
> Auto-maintained by OpenWolf. Last scanned: 2026-09-11T15:
|
|
4
|
-
> Files:
|
|
3
|
+
> Auto-maintained by OpenWolf. Last scanned: 2026-09-11T15:34:41.013Z
|
|
4
|
+
> Files: 707 tracked | Anatomy hits: 0 | Misses: 0
|
|
5
5
|
|
|
6
6
|
## ../../../../../../../tmp/
|
|
7
7
|
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
- `.pre-commit-hooks.yaml` — DocGuard hooks for the pre-commit framework (https://pre-commit.com). (~490 tok)
|
|
30
30
|
- `action.yml` — Declares fs (~7591 tok)
|
|
31
31
|
- `AGENTS.md` — AI Agent Instructions — DocGuard (~1827 tok)
|
|
32
|
-
- `CHANGELOG.md` — Changelog (~
|
|
32
|
+
- `CHANGELOG.md` — Changelog (~52543 tok)
|
|
33
33
|
- `CLAUDE.md` — OpenWolf (~57 tok)
|
|
34
34
|
- `CODE_OF_CONDUCT.md` — Contributor Covenant Code of Conduct (~532 tok)
|
|
35
35
|
- `COMPARISONS.md` — Comparisons & Honest Limitations (~3382 tok)
|
|
@@ -959,8 +959,11 @@
|
|
|
959
959
|
|
|
960
960
|
## .github/workflows/
|
|
961
961
|
|
|
962
|
-
- `
|
|
963
|
-
- `
|
|
962
|
+
- `auto-merge.yml` — CI: Auto-merge (green bot PRs) (~1917 tok)
|
|
963
|
+
- `ci.yml` — CI: DocGuard CI (~1843 tok)
|
|
964
|
+
- `jules-triage.yml` — CI: Jules PR Triage (~1635 tok)
|
|
965
|
+
- `release.yml` — CI: Auto Release — Tag, GitHub Release, npm, PyPI (~4258 tok)
|
|
966
|
+
- `scheduled-release.yml` — CI: Scheduled Release (~1539 tok)
|
|
964
967
|
- `sync-speckit-catalog.yml` — CI: Prepare Spec Kit Catalog Submission (Manual) (~1385 tok)
|
|
965
968
|
|
|
966
969
|
## .jules/
|
|
@@ -4498,10 +4498,132 @@
|
|
|
4498
4498
|
"permanent-fix",
|
|
4499
4499
|
"browser-automation"
|
|
4500
4500
|
],
|
|
4501
|
-
"related_bugs": [
|
|
4501
|
+
"related_bugs": [
|
|
4502
|
+
"bug-256"
|
|
4503
|
+
],
|
|
4502
4504
|
"occurrences": 1,
|
|
4503
4505
|
"last_seen": "2026-09-11T15:20:00Z",
|
|
4504
4506
|
"notes": "The npm-side setup (trusted publisher config) was done via Claude in Chrome browser automation on the user's authenticated session — the user generated nothing themselves manually beyond confirming form field values live, since a different browser extension's autofill overlay blocked automation from reaching two fields directly. Token/credential VALUES never passed through the agent's context at any point — only the trusted-publisher CONFIGURATION (org/repo/workflow name, which are not secrets) did."
|
|
4507
|
+
},
|
|
4508
|
+
{
|
|
4509
|
+
"id": "bug-273",
|
|
4510
|
+
"timestamp": "2026-09-11T15:25:25.069Z",
|
|
4511
|
+
"error_message": "Significant refactor of ",
|
|
4512
|
+
"file": ".github/workflows/release.yml",
|
|
4513
|
+
"root_cause": "8 lines replaced/restructured",
|
|
4514
|
+
"fix": "Rewrote 9→16 lines (8 removed)",
|
|
4515
|
+
"tags": [
|
|
4516
|
+
"auto-detected",
|
|
4517
|
+
"refactor",
|
|
4518
|
+
"yml"
|
|
4519
|
+
],
|
|
4520
|
+
"related_bugs": [],
|
|
4521
|
+
"occurrences": 1,
|
|
4522
|
+
"last_seen": "2026-09-11T15:25:25.069Z"
|
|
4523
|
+
},
|
|
4524
|
+
{
|
|
4525
|
+
"id": "bug-274",
|
|
4526
|
+
"timestamp": "2026-09-11T15:26:38.465Z",
|
|
4527
|
+
"error_message": "Significant refactor of ",
|
|
4528
|
+
"file": "CHANGELOG.md",
|
|
4529
|
+
"root_cause": "3 lines replaced/restructured",
|
|
4530
|
+
"fix": "Rewrote 10→18 lines (3 removed)",
|
|
4531
|
+
"tags": [
|
|
4532
|
+
"auto-detected",
|
|
4533
|
+
"refactor",
|
|
4534
|
+
"md"
|
|
4535
|
+
],
|
|
4536
|
+
"related_bugs": [],
|
|
4537
|
+
"occurrences": 1,
|
|
4538
|
+
"last_seen": "2026-09-11T15:26:38.465Z"
|
|
4539
|
+
},
|
|
4540
|
+
{
|
|
4541
|
+
"id": "bug-275",
|
|
4542
|
+
"timestamp": "2026-09-11T15:26:43.072Z",
|
|
4543
|
+
"error_message": "Incorrect value in code",
|
|
4544
|
+
"file": "package.json",
|
|
4545
|
+
"root_cause": "Had \"0.34.3\"",
|
|
4546
|
+
"fix": "Changed to \"0.34.4\"",
|
|
4547
|
+
"tags": [
|
|
4548
|
+
"auto-detected",
|
|
4549
|
+
"wrong-value",
|
|
4550
|
+
"json"
|
|
4551
|
+
],
|
|
4552
|
+
"related_bugs": [],
|
|
4553
|
+
"occurrences": 1,
|
|
4554
|
+
"last_seen": "2026-09-11T15:26:43.072Z"
|
|
4555
|
+
},
|
|
4556
|
+
{
|
|
4557
|
+
"id": "bug-258",
|
|
4558
|
+
"timestamp": "2026-09-11T15:28:00Z",
|
|
4559
|
+
"error_message": "v0.34.3's own npm-publish fix (Trusted Publishing) failed on its first real test: 'npm install -g npm@latest' errored EBADENGINE, npm@12.0.2 requires node ^22.22.2 || ^24.15.0 || >=26.0.0, actual was npm 10.8.2 / node v20.20.2.",
|
|
4560
|
+
"file": ".github/workflows/release.yml",
|
|
4561
|
+
"root_cause": "Same class of mistake as bug-255 (@babel/parser major bump breaking Node 18): an unpinned `npm@latest` in the publish-npm job's self-update step floated to npm 12, which had bumped ITS OWN Node engine floor past the Node 20 this job runs on. The bug shipped in v0.34.3 because it wasn't (couldn't be) tested locally — GitHub Actions' OIDC token exchange only exists inside an actual Actions run, so the self-update step's own compatibility was the first thing to actually execute in CI, and it failed before publish ever ran.",
|
|
4562
|
+
"fix": "Pinned to `npm install -g npm@11` instead of `npm@latest`. npm 11.x declares engines {node: '^20.17.0 || >=22.9.0'}, compatible with the job's Node 20.20.2, and resolves to 11.19.1 -- well past the 11.5.0 floor Trusted Publishing needs. Verified locally this time: installed npm@11 into an isolated --prefix on Node 20.20.2 (matching the exact runner version from the failure log) and confirmed it resolves cleanly before pushing v0.34.4.",
|
|
4563
|
+
"tags": [
|
|
4564
|
+
"npm-publish",
|
|
4565
|
+
"trusted-publishing",
|
|
4566
|
+
"engines-field",
|
|
4567
|
+
"unpinned-latest",
|
|
4568
|
+
"release-pipeline",
|
|
4569
|
+
"same-mistake-twice"
|
|
4570
|
+
],
|
|
4571
|
+
"related_bugs": [
|
|
4572
|
+
"bug-256",
|
|
4573
|
+
"bug-257",
|
|
4574
|
+
"bug-255"
|
|
4575
|
+
],
|
|
4576
|
+
"occurrences": 1,
|
|
4577
|
+
"last_seen": "2026-09-11T15:28:00Z",
|
|
4578
|
+
"notes": "Pattern worth internalizing: 'npm install -g npm@latest' (or any @latest) in a CI step pinned to an older Node version is never safe to assume works, because npm's OWN major versions bump their engines floor over time just like any other package. Always pin to a specific major/range you've checked against the job's actual Node version, and verify by actually installing it (even in an isolated prefix) rather than reasoning from memory about what should be compatible."
|
|
4579
|
+
},
|
|
4580
|
+
{
|
|
4581
|
+
"id": "bug-277",
|
|
4582
|
+
"timestamp": "2026-09-11T15:31:51.639Z",
|
|
4583
|
+
"error_message": "Missing error handling in unknown",
|
|
4584
|
+
"file": ".github/workflows/ci.yml",
|
|
4585
|
+
"root_cause": "Code path had no error handling — exceptions would propagate uncaught",
|
|
4586
|
+
"fix": "Added try/catch block",
|
|
4587
|
+
"tags": [
|
|
4588
|
+
"auto-detected",
|
|
4589
|
+
"error-handling",
|
|
4590
|
+
"yml"
|
|
4591
|
+
],
|
|
4592
|
+
"related_bugs": [],
|
|
4593
|
+
"occurrences": 1,
|
|
4594
|
+
"last_seen": "2026-09-11T15:31:51.639Z"
|
|
4595
|
+
},
|
|
4596
|
+
{
|
|
4597
|
+
"id": "bug-278",
|
|
4598
|
+
"timestamp": "2026-09-11T15:33:55.369Z",
|
|
4599
|
+
"error_message": "Missing error handling in unknown",
|
|
4600
|
+
"file": ".github/workflows/jules-triage.yml",
|
|
4601
|
+
"root_cause": "Code path had no error handling — exceptions would propagate uncaught",
|
|
4602
|
+
"fix": "Added try/catch block",
|
|
4603
|
+
"tags": [
|
|
4604
|
+
"auto-detected",
|
|
4605
|
+
"error-handling",
|
|
4606
|
+
"yml"
|
|
4607
|
+
],
|
|
4608
|
+
"related_bugs": [],
|
|
4609
|
+
"occurrences": 1,
|
|
4610
|
+
"last_seen": "2026-09-11T15:33:55.369Z"
|
|
4611
|
+
},
|
|
4612
|
+
{
|
|
4613
|
+
"id": "bug-279",
|
|
4614
|
+
"timestamp": "2026-09-11T15:34:41.023Z",
|
|
4615
|
+
"error_message": "Missing error handling in unknown",
|
|
4616
|
+
"file": "CHANGELOG.md",
|
|
4617
|
+
"root_cause": "Code path had no error handling — exceptions would propagate uncaught",
|
|
4618
|
+
"fix": "Added try/catch block",
|
|
4619
|
+
"tags": [
|
|
4620
|
+
"auto-detected",
|
|
4621
|
+
"error-handling",
|
|
4622
|
+
"md"
|
|
4623
|
+
],
|
|
4624
|
+
"related_bugs": [],
|
|
4625
|
+
"occurrences": 1,
|
|
4626
|
+
"last_seen": "2026-09-11T15:34:41.023Z"
|
|
4505
4627
|
}
|
|
4506
4628
|
]
|
|
4507
4629
|
}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
## Key Learnings
|
|
14
14
|
|
|
15
|
+
- **2026-09-11 — `npm install -g npm@latest` in a CI step is never safe to assume works — npm's own majors bump their engines floor too.** v0.34.3's Trusted Publishing fix used `npm@latest`, which resolved to npm 12.0.2 (`engines: node ^22.22.2 || ^24.15.0 || >=26.0.0`) — incompatible with the Node 20 the publish-npm job runs on. Exact same class of mistake as bug-255 (@babel/parser major bump), one layer up the toolchain, caught by the pipeline itself on the very next real run. Fix: pin to a checked-compatible range (`npm@11`, whose engines field is `^20.17.0 || >=22.9.0`) and verify by actually installing it in an isolated prefix, not by reasoning about what "should" be compatible. See bug-258.
|
|
15
16
|
- **2026-09-11 — Fixed bug-256 permanently: migrated publish-npm to Trusted Publishing (OIDC), retiring NODE_AUTH_TOKEN entirely.** See bug-257. Two non-obvious things worth remembering: (1) npm Trusted Publishing needs npm CLI >=11.5.0 — Node 20's bundled npm is older, so the workflow now self-updates (`npm install -g npm@latest`) before publishing; forgetting this would trade one failure mode for another. (2) A GitHub Actions "rerun failed jobs" reruns using the workflow file AS IT EXISTED AT THAT RUN'S COMMIT, not the current default-branch version — editing release.yml and then rerunning an old failed run would NOT pick up the fix. Had to cut an actual new release (v0.34.3, no code changes) to get a fresh run that exercises the updated workflow. Confirm any workflow-file fix via a genuinely new run, never a rerun of a run that predates the fix.
|
|
16
17
|
- **2026-09-11 — Claude in Chrome can get blocked by an unrelated browser extension's overlay.** Mid-way through filling an npm settings form (Trusted Publisher setup), clicks and even a plain screenshot started failing with "Cannot access a chrome-extension:// URL of different extension" — almost certainly another extension (password manager autofill is the likely suspect) injected a frame that captured input on the tab. Claude in Chrome can't reach into another extension's frame to dismiss it; the fix was asking the user to click/Escape on their end to clear it, then resuming automation. Also: user's real Chrome profile carries their own extensions, unlike the in-app Browser pane — expect this class of interference there and not in the sandboxed pane.
|
|
17
18
|
- **2026-09-11 — `npm error 404` on a PUBLISH (not install) can mean an expired token, not a missing package or a registry incident.** `publish-npm` for v0.34.1 failed identically 3x over 2 weeks: provenance signs fine (real, distinct Sigstore transparency-log entries each time — proves GitHub's OIDC → Sigstore leg works), then the actual registry PUT 404s with "'docguard-cli@0.34.1' is not in this registry" ~0.1-0.4s later. Ruled out registry incident (npm status green, incident history clean, package untouched on registry each time) before concluding it's the token — `gh secret list` showing `NPM_TOKEN` last rotated 2026-05-22, and the last successful publish being 2026-08-13 (day 83) with every attempt since day 98 failing, lines up with npm's ~90-day Automation-token default expiration. npm apparently returns 404 (not 401/403) for some auth/scope failures on publish, presumably to avoid confirming a package's existence to an unauthorized caller — worth remembering next time a publish 404s on a package that obviously exists. This is NOT fixable by the agent — needs the user to rotate the token on npmjs.com and update the GitHub secret. See bug-256.
|