docguard-cli 0.34.2__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.2/extensions/spec-kit-docguard → docguard_cli-0.34.4/.agent}/skills/docguard-fix/SKILL.md +2 -2
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/skills/docguard-guard/SKILL.md +2 -2
- {docguard_cli-0.34.2/extensions/spec-kit-docguard → docguard_cli-0.34.4/.agent}/skills/docguard-review/SKILL.md +2 -2
- {docguard_cli-0.34.2/extensions/spec-kit-docguard → docguard_cli-0.34.4/.agent}/skills/docguard-score/SKILL.md +2 -2
- {docguard_cli-0.34.2 → 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.2 → docguard_cli-0.34.4}/.github/workflows/ci.yml +24 -2
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.github/workflows/jules-triage.yml +26 -1
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.github/workflows/release.yml +17 -2
- docguard_cli-0.34.4/.github/workflows/scheduled-release.yml +137 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/anatomy.md +8 -5
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/buglog.json +174 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/cerebrum.md +3 -0
- docguard_cli-0.34.4/.wolf/hooks/_session.json +133 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/memory.md +20 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/token-ledger.json +500 -7
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/CHANGELOG.md +27 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/PKG-INFO +1 -1
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/extension.yml +1 -1
- {docguard_cli-0.34.2/.agent → docguard_cli-0.34.4/extensions/spec-kit-docguard}/skills/docguard-fix/SKILL.md +2 -2
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/skills/docguard-guard/SKILL.md +2 -2
- {docguard_cli-0.34.2/.agent → docguard_cli-0.34.4/extensions/spec-kit-docguard}/skills/docguard-review/SKILL.md +2 -2
- {docguard_cli-0.34.2/.agent → docguard_cli-0.34.4/extensions/spec-kit-docguard}/skills/docguard-score/SKILL.md +2 -2
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/skills/docguard-sync/SKILL.md +2 -2
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/package-lock.json +2 -2
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/package.json +1 -1
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/pyproject.toml +1 -1
- docguard_cli-0.34.2/.wolf/hooks/_session.json +0 -51
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/commands/docguard.fix.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/commands/docguard.guard.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/commands/docguard.review.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/commands/docguard.score.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/commands/speckit.analyze.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/commands/speckit.checklist.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/commands/speckit.clarify.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/commands/speckit.constitution.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/commands/speckit.implement.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/commands/speckit.plan.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/commands/speckit.specify.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/commands/speckit.tasks.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/commands/speckit.taskstoissues.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/skills/speckit-analyze/SKILL.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/skills/speckit-checklist/SKILL.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/skills/speckit-clarify/SKILL.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/skills/speckit-constitution/SKILL.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/skills/speckit-implement/SKILL.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/skills/speckit-plan/SKILL.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/skills/speckit-specify/SKILL.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/skills/speckit-tasks/SKILL.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.agent/skills/speckit-taskstoissues/SKILL.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.claude/rules/openwolf.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.claude/settings.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.docguard.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.docguardignore +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.github/ISSUE_TEMPLATE/docguard-feedback.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.github/dependabot.yml +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.github/scripts/speckit-submission.py +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.github/workflows/supply-chain.yml +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.github/workflows/sync-speckit-catalog.yml +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.gitignore +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.jules/bolt.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.jules/palette.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.jules/sentinel.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.jules-setup.sh +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.npmignore +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.npmrc +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.pre-commit-hooks.yaml +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.specify/extensions/.cache/catalog-ebf165086500aab1-metadata.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.specify/extensions/.cache/catalog-ebf165086500aab1.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.specify/extensions/.cache/catalog-metadata.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.specify/extensions/.cache/catalog.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.specify/init-options.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.specify/memory/constitution.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.specify/scripts/bash/common.sh +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.specify/scripts/bash/setup-plan.sh +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.specify/templates/agent-file-template.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.specify/templates/checklist-template.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.specify/templates/constitution-template.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.specify/templates/plan-template.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.specify/templates/spec-template.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.specify/templates/tasks-template.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/OPENWOLF.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/config.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/cron-manifest.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/cron-state.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/daemon.log +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/designqc-report.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/hooks/_wrap_up_nudged +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/hooks/package.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/hooks/post-read.js +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/hooks/post-write.js +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/hooks/pre-read.js +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/hooks/pre-write.js +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/hooks/session-start.js +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/hooks/shared.js +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/hooks/stop.js +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/identity.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/reframe-frameworks.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/.wolf/suggestions.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/AGENTS.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/CLAUDE.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/CODE_OF_CONDUCT.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/COMPARISONS.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/CONTRIBUTING.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/DRIFT-LOG.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/Dockerfile +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/LICENSE +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/PHILOSOPHY.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/PRIVACY.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/README.es.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/README.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/README.pt-BR.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/ROADMAP.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/SECURITY.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/STANDARD.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/SUPPLY-CHAIN-AUDIT.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/SUPPORT.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/VALIDATION.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/action.yml +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/assets/bin/docguard +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/assets/demo.gif +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/assets/demo.tape +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/assets/docguard-logo.png +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/agent.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/agents.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/badge.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/ci.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/demo.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/diagnose.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/diff.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/explain.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/feedback.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/fix.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/generate.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/guard.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/hooks.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/impact.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/init.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/llms.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/mcp.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/memory.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/publish.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/report.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/score.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/setup.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/sync-tests.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/sync.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/trace.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/upgrade.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/verify.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/commands/watch.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/config.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/docguard.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/ensure-skills.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/findings.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/scanners/agent-readability.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/scanners/api-doc.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/scanners/cdk.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/scanners/doc-tools.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/scanners/frontend.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/scanners/iac.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/scanners/instruction-audit.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/scanners/integrations.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/scanners/inventory.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/scanners/js-ast.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/scanners/memory-plan.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/scanners/project-type.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/scanners/py-ast.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/scanners/routes.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/scanners/schemas.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/scanners/semantic-claims.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/scanners/speckit.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/shared-diff.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/shared-git.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/shared-ignore.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/shared-ir.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/shared-source.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/shared-trace-patterns.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/shared.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validator-markers.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/api-doc-smells.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/api-surface.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/architecture.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/canonical-sync.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/changelog.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/cross-reference.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/diff-suspicion.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/doc-quality.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/docs-coverage.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/docs-diff.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/docs-sync.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/drift.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/environment.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/freshness.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/generated-staleness.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/metadata-sync.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/metrics-consistency.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/reference-existence.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/schema-sync.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/security.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/spec-kit.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/structure.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/surface-sync.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/test-spec.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/todo-tracking.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/validators/traceability.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/writers/api-reference.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/writers/baseline.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/writers/doc-generators.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/writers/fix-memory.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/writers/generate-io.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/writers/history.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/writers/junit.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/writers/mechanical.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/writers/sarif.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/cli/writers/sections.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/commands/docguard.fix.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/commands/docguard.guard.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/commands/docguard.review.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/commands/docguard.score.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/configs/fastify.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/configs/generic.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/configs/nextjs.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/configs/python.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docguard_cli/__init__.py +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docguard_cli/wrapper.py +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docs/ai-integration.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docs/commands.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docs/configuration.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docs/doc-sections.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docs/faq.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docs/installation.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docs/profiles.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docs/quickstart.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docs-canonical/CI-RECIPES.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docs-canonical/DATA-MODEL.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docs-canonical/ENVIRONMENT.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docs-canonical/REQUIREMENTS.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docs-canonical/SECURITY.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docs-canonical/SURFACE-AUDIT.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/docs-implementation/MIGRATION-v0.20.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/examples/01-express-api/README.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/examples/01-express-api/package.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/examples/01-express-api/server.js +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/examples/02-python-flask/README.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/examples/02-python-flask/app.py +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/examples/02-python-flask/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/examples/02-python-flask/requirements.txt +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/examples/03-spec-kit-project/CHANGELOG.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/examples/03-spec-kit-project/README.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/examples/03-spec-kit-project/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/examples/03-spec-kit-project/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/examples/03-spec-kit-project/package.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/examples/03-spec-kit-project/src/index.js +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/examples/03-spec-kit-project/tasks.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/examples/03-spec-kit-project/tests/basic.test.js +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/examples/README.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/LICENSE +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/README.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/commands/diagnose.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/commands/fix.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/commands/generate.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/commands/guard.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/commands/init.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/commands/score.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/commands/sync.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/commands/trace.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/scripts/bash/common.sh +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/scripts/bash/docguard-init-doc.sh +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/scripts/bash/docguard-suggest-fix.sh +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/templates/extensions.yml +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/templates/github-workflows/docguard-autofix.yml +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/extensions/spec-kit-docguard/templates/github-workflows/docguard-guard.yml +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/glama.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/llms-full.txt +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/llms.txt +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/mcpb/README.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/mcpb/manifest.template.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/packaging/homebrew/docguard.rb +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/packaging/submissions.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/schemas/docguard-config.schema.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/server.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/smithery.yaml +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/specs/001-fix-ignore-validators/plan.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/specs/001-fix-ignore-validators/spec.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/specs/001-fix-ignore-validators/tasks.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/specs/002-fix-test-discovery/plan.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/specs/002-fix-test-discovery/spec.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/specs/002-fix-test-discovery/tasks.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/specs/003-v011-false-positives/plan.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/specs/003-v011-false-positives/spec.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/specs/003-v011-false-positives/tasks.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/specs/004-v020-env-var-false-negative/spec.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/specs/005-hugocross-next-bugs/spec.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/ADR.md.template +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/AGENTS.md.template +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/ARCHITECTURE.md.template +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/CHANGELOG.md.template +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/CURRENT-STATE.md.template +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/DATA-MODEL.md.template +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/DEPLOYMENT.md.template +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/DRIFT-LOG.md.template +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/ENVIRONMENT.md.template +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/KNOWN-GOTCHAS.md.template +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/REQUIREMENTS.md.template +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/ROADMAP.md.template +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/RUNBOOKS.md.template +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/SECURITY.md.template +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/TEST-SPEC.md.template +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/TROUBLESHOOTING.md.template +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/VENDOR-BUGS.md.template +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/ci/github-actions.yml +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/ci/gitlab-component.yml +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/commands/docguard.fix.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/commands/docguard.guard.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/commands/docguard.init.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/commands/docguard.review.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/commands/docguard.update.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/demo-fixture/.docguard.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/demo-fixture/.env.example +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/demo-fixture/AGENTS.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/demo-fixture/CHANGELOG.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/demo-fixture/DRIFT-LOG.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/demo-fixture/README.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/demo-fixture/docs-canonical/API-REFERENCE.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/demo-fixture/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/demo-fixture/docs-canonical/DATA-MODEL.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/demo-fixture/docs-canonical/ENVIRONMENT.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/demo-fixture/docs-canonical/SECURITY.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/demo-fixture/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/demo-fixture/package.json +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/demo-fixture/src/api.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/demo-fixture/src/notifier.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/demo-fixture/src/scheduler.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/templates/demo-fixture/src/worker.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/agent-readability.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/agent.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/agents-command.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/agents-sync.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/anchor-autofix.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/api-doc-smells.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/api-doc.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/api-surface.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/api-write.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/architecture.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/b7-node-env-symmetry.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/backup-failure.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/badge.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/baseline.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/canonical-docs-nested-phase2.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/canonical-docs-nested.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/canonical-sync.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/cdk-detection.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/changed-only-scoping.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/changed-only.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/changelog.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/commands.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/cross-reference.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/demo-command.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/diff-suspicion.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/doc-quality.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/doc-section-synonyms.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/docguardignore.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/docs-coverage.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/docs-diff.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/docs-sync.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/drift.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/ensure-skills-idempotent.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/env-schema-detection.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/environment.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/explain-coverage.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/field-report-2-cli.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/field-report-3-deferred.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/field-report-3.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/fix-memory.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/fix-suppression.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/fixture-projects.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/freshness.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/frontend-deep.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/frontend.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/generate-io.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/generated-staleness.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/guard-classify.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/guard-no-throw.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/history.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/hooks.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/i18n.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/impact.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/init-smart-detection.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/instruction-audit.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/integrations.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/inventory.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/js-ast.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/junit.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/llms-full-pack.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/mcp-http.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/mcp.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/mechanical.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/memory-plan.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/metadata-sync.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/metrics-consistency.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/metrics-dedup.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/monorepo-scanning.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/multi-spec.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/npm-pack-smoke.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/nudge-hook.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/openapi-parse-honesty.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/patch-0.11.2.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/plan-disk-cache.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/profile-flag.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/project-type.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/py-ast.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/reference-existence.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/regenerate-section.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/report.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/routes-express-mounts.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/routes-fastify.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/routes-multilang.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/routes-nextjs-app-router.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/sarif.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/schema-sync.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/schemas-multilang.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/schemas.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/scoping-extended.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/score-suggestions.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/section-na-markers.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/sections.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/security-init-injection.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/security.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/severity.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/shared-diff.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/shared-git.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/shared-ignore-functions.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/shared-ir.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/shared-source.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/speckit-bugfix.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/speckit-phantom.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/starter-scaffold.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/stress-test.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/structure.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/surface-sync.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/sweep-nudge.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/sync-since.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/sync.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/test-spec.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/todo-tracking.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/trace-features.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/trace-multilang.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/trace-reverse.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/traceability-ir.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/traceability.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/upgrade-pr-e2e.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/upgrade-pr.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/upgrade.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/v020-consolidation.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/validator-markers.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/validator-naming.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/verify-change-context.test.mjs +0 -0
- {docguard_cli-0.34.2 → docguard_cli-0.34.4}/tests/version-pin.test.mjs +0 -0
- {docguard_cli-0.34.2 → 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 {
|
|
@@ -206,10 +206,25 @@ jobs:
|
|
|
206
206
|
node-version: 20
|
|
207
207
|
registry-url: 'https://registry.npmjs.org'
|
|
208
208
|
|
|
209
|
+
# Trusted Publishing (OIDC) needs npm CLI >= 11.5.0; Node 20's bundled
|
|
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
|
|
225
|
+
|
|
209
226
|
- name: Publish (with provenance)
|
|
210
227
|
run: npm publish --provenance
|
|
211
|
-
env:
|
|
212
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
213
228
|
|
|
214
229
|
# ── Step 6: Publish to PyPI ────────────────────────────────────────────
|
|
215
230
|
publish-pypi:
|
|
@@ -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-
|
|
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/
|
|
@@ -4450,6 +4450,180 @@
|
|
|
4450
4450
|
"occurrences": 3,
|
|
4451
4451
|
"last_seen": "2026-09-11T14:34:00Z",
|
|
4452
4452
|
"notes": "Do NOT keep blindly retrying publish-npm if this recurs after a token rotation looks successful — verify the token's actual publish scope/expiration on npmjs.com first. Also: don't assume '404 on a publish that should be an update' is a transient registry blip just because npm's status page is green and the error text sounds like a missing-package error — check secret rotation dates before concluding 'try again later'."
|
|
4453
|
+
},
|
|
4454
|
+
{
|
|
4455
|
+
"id": "bug-270",
|
|
4456
|
+
"timestamp": "2026-09-11T15:15:53.416Z",
|
|
4457
|
+
"error_message": "Significant refactor of ",
|
|
4458
|
+
"file": ".github/workflows/release.yml",
|
|
4459
|
+
"root_cause": "2 lines replaced/restructured",
|
|
4460
|
+
"fix": "Rewrote 10→18 lines (2 removed)",
|
|
4461
|
+
"tags": [
|
|
4462
|
+
"auto-detected",
|
|
4463
|
+
"refactor",
|
|
4464
|
+
"yml"
|
|
4465
|
+
],
|
|
4466
|
+
"related_bugs": [],
|
|
4467
|
+
"occurrences": 1,
|
|
4468
|
+
"last_seen": "2026-09-11T15:15:53.416Z"
|
|
4469
|
+
},
|
|
4470
|
+
{
|
|
4471
|
+
"id": "bug-271",
|
|
4472
|
+
"timestamp": "2026-09-11T15:17:16.971Z",
|
|
4473
|
+
"error_message": "Incorrect value in code",
|
|
4474
|
+
"file": "package.json",
|
|
4475
|
+
"root_cause": "Had \"0.34.2\"",
|
|
4476
|
+
"fix": "Changed to \"0.34.3\"",
|
|
4477
|
+
"tags": [
|
|
4478
|
+
"auto-detected",
|
|
4479
|
+
"wrong-value",
|
|
4480
|
+
"json"
|
|
4481
|
+
],
|
|
4482
|
+
"related_bugs": [],
|
|
4483
|
+
"occurrences": 1,
|
|
4484
|
+
"last_seen": "2026-09-11T15:17:16.971Z"
|
|
4485
|
+
},
|
|
4486
|
+
{
|
|
4487
|
+
"id": "bug-257",
|
|
4488
|
+
"timestamp": "2026-09-11T15:20:00Z",
|
|
4489
|
+
"error_message": "Resolution of bug-256 (expired NPM_TOKEN blocking publish-npm for 2 releases).",
|
|
4490
|
+
"file": ".github/workflows/release.yml",
|
|
4491
|
+
"root_cause": "See bug-256: a stored GitHub secret (NPM_TOKEN) with an ~90-day expiration window, no rotation reminder, silent failure mode (npm returns 404 not 401/403 on the auth-scope failure). Structural problem: ANY stored long-lived publish credential recurs this exact class of outage eventually.",
|
|
4492
|
+
"fix": "Migrated publish-npm from NODE_AUTH_TOKEN (classic token auth) to npm Trusted Publishing (OIDC) — configured a trusted publisher on npmjs.com for docguard-cli (GitHub Actions, raccioly/docguard, release.yml, 'Allow npm publish' enabled since the workflow does a direct publish not stage+publish), then removed NODE_AUTH_TOKEN from the workflow entirely and added `npm install -g npm@latest` before publish (Trusted Publishing needs npm CLI >=11.5.0; Node 20's bundled npm predates that). The existing `id-token: write` permission (already present for provenance signing) is reused for the OIDC exchange itself — no new permissions needed. Nothing in this setup can expire the way a stored token did; npm mints a short-lived token per run. Verified end-to-end with a real v0.34.3 release (no code changes, purely to exercise the new pipeline — a rerun of the OLD failed job would have used the stale pre-fix workflow file, since GitHub Actions reruns pin to the original run's commit).",
|
|
4493
|
+
"tags": [
|
|
4494
|
+
"npm-publish",
|
|
4495
|
+
"trusted-publishing",
|
|
4496
|
+
"oidc",
|
|
4497
|
+
"release-pipeline",
|
|
4498
|
+
"permanent-fix",
|
|
4499
|
+
"browser-automation"
|
|
4500
|
+
],
|
|
4501
|
+
"related_bugs": [
|
|
4502
|
+
"bug-256"
|
|
4503
|
+
],
|
|
4504
|
+
"occurrences": 1,
|
|
4505
|
+
"last_seen": "2026-09-11T15:20:00Z",
|
|
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"
|
|
4453
4627
|
}
|
|
4454
4628
|
]
|
|
4455
4629
|
}
|