You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Canonical-Driven Development enforcement. Validates, scores, and traces project documentation with automated checks, AI-driven workflows, and spec-kit hooks. One pinned runtime dependency; pure Node.js otherwise.
This is an update to an existing catalog entry (docguard) for a new release — please bump the version and download URL on the current entry rather than adding a duplicate.
Release notes (v0.28.0):
Closes the detection-gap items deferred from LLM field report #3 — the checks
regex/AST couldn't make before — plus a latent CI-correctness bug surfaced by
dogfooding.
Added
docguard verify --semantic (field report feat: implement in Japanese #5) — extracts the semantic
claims in the canonical docs (documented numbers, limits, and enums: retention
days, rate limits, GSI/role counts, status enums) as a structured verification
task list with each claim's doc:line, section, and nearest cited code path. The
highest-value bug class (a doc value drifted from code) and the one regex/AST
can't judge — so DocGuard does the deterministic discovery and the agent does
the comparison (the docguard agent division of labour). Precision-first:
numbers count only with a recognized unit, enums only as 2+ UPPER_SNAKE values
in a status/state context; version strings, dates, and code-fenced numbers are
ignored.
docguard sync --tests (field report Include instructions for uvx dependency #10) — reconciles the hand-maintained
TEST-SPEC Source-to-Test Map from disk: drops ghost-source rows (source file
deleted), appends newly-covered co-located source↔test pairs, and reports ghost
test references for the human (never auto-edits a curated status/notes cell).
Preview by default; --write applies.
Fixed
Dynamic import() no longer counted as an import cycle (field report Fix release workflow to work with repository rules #2) —
the Architecture validator excludes runtime await import() edges from cycle
detection (a dynamic import is the canonical way to BREAK a load-time cycle).
Static import/require edges still count, and dynamic edges still count for
layer-boundary checks.
API-Surface diffs the OpenAPI spec against the registered routes (field
report doco(spec-driven): Fix small typo in spec-driven.md #4) — when a spec is the authoritative surface, the API-REFERENCE doc
reconciles against the spec, so a spec that declares a phantom endpoint (no
Express/Fastify route registers it) passed clean. It's now flagged. Conservative:
only runs when code routes are actually scannable.
Freshness markers stamped on init (field report Sample Guidance on how to version control "context" within the repository #11) — the SECURITY,
ENVIRONMENT, TEST-SPEC, and REQUIREMENTS templates gained the standard docguard:last-reviewed header, and init stamps every canonical doc with a
today-dated marker (belt-and-suspenders for future templates). Freshness is now
marker-based and consistent from day one — and satisfiable in a pre-commit
review loop. explain freshness now documents the marker > git-mtime precedence.
guard --format json no longer truncates large reports — replaced console.log(...) + process.exit() with process.exitCode + a drained write.
A JSON payload over ~8 KB written to a pipe flushes asynchronously, so the
immediate process.exit() cut it off mid-string — a CI consumer parsing stdout
got "Unterminated string in JSON" on exactly the big reports that matter.
(Surfaced by dogfooding this release.)
Notes
Tests 813 → 825 (new tests/field-report-3-deferred.test.mjs, each fix with a
non-vacuous control). All field-report-3 items are now addressed.
Extension ID
docguard
Extension Name
DocGuard — CDD Enforcement
Version
0.28.0
Description
Canonical-Driven Development enforcement. Validates, scores, and traces project documentation with automated checks, AI-driven workflows, and spec-kit hooks. One pinned runtime dependency; pure Node.js otherwise.
Author
raccioly
Repository URL
https://github.com/raccioly/docguard
Download URL
https://github.com/raccioly/docguard/releases/download/v0.28.0/spec-kit-docguard-v0.28.0.zip
License
MIT
Homepage (optional)
https://www.npmjs.com/package/docguard-cli
Documentation URL (optional)
https://github.com/raccioly/docguard/blob/main/extensions/spec-kit-docguard/README.md
Changelog URL (optional)
https://github.com/raccioly/docguard/blob/main/CHANGELOG.md
Required Spec Kit Version
Required Tools (optional)
Number of Commands
6
Number of Hooks (optional)
3
Tags
documentation, validation, quality, cdd, traceability, ai-agents, enforcement, spec-kit
Key Features
Testing Checklist
Submission Requirements
extension.ymlmanifest includedTesting Details
Tested on: Linux + macOS with the spec-kit CLI.
Install:
Scenarios verified:
speckit.docguard.*commands resolve and run.Example Usage
Proposed Catalog Entry
Additional Context
This is an update to an existing catalog entry (
docguard) for a new release — please bump the version and download URL on the current entry rather than adding a duplicate.Release notes (v0.28.0):
Closes the detection-gap items deferred from LLM field report #3 — the checks
regex/AST couldn't make before — plus a latent CI-correctness bug surfaced by
dogfooding.
Added
docguard verify --semantic(field report feat: implement in Japanese #5) — extracts the semanticclaims in the canonical docs (documented numbers, limits, and enums: retention
days, rate limits, GSI/role counts, status enums) as a structured verification
task list with each claim's doc:line, section, and nearest cited code path. The
highest-value bug class (a doc value drifted from code) and the one regex/AST
can't judge — so DocGuard does the deterministic discovery and the agent does
the comparison (the
docguard agentdivision of labour). Precision-first:numbers count only with a recognized unit, enums only as 2+ UPPER_SNAKE values
in a status/state context; version strings, dates, and code-fenced numbers are
ignored.
docguard sync --tests(field report Include instructions for uvx dependency #10) — reconciles the hand-maintainedTEST-SPEC Source-to-Test Map from disk: drops ghost-source rows (source file
deleted), appends newly-covered co-located source↔test pairs, and reports ghost
test references for the human (never auto-edits a curated status/notes cell).
Preview by default;
--writeapplies.Fixed
import()no longer counted as an import cycle (field report Fix release workflow to work with repository rules #2) —the Architecture validator excludes runtime
await import()edges from cycledetection (a dynamic import is the canonical way to BREAK a load-time cycle).
Static
import/requireedges still count, and dynamic edges still count forlayer-boundary checks.
report doco(spec-driven): Fix small typo in spec-driven.md #4) — when a spec is the authoritative surface, the API-REFERENCE doc
reconciles against the spec, so a spec that declares a phantom endpoint (no
Express/Fastify route registers it) passed clean. It's now flagged. Conservative:
only runs when code routes are actually scannable.
init(field report Sample Guidance on how to version control "context" within the repository #11) — the SECURITY,ENVIRONMENT, TEST-SPEC, and REQUIREMENTS templates gained the standard
docguard:last-reviewedheader, andinitstamps every canonical doc with atoday-dated marker (belt-and-suspenders for future templates). Freshness is now
marker-based and consistent from day one — and satisfiable in a pre-commit
review loop.
explain freshnessnow documents the marker > git-mtime precedence.guard --format jsonno longer truncates large reports — replacedconsole.log(...) + process.exit()withprocess.exitCode+ a drained write.A JSON payload over ~8 KB written to a pipe flushes asynchronously, so the
immediate
process.exit()cut it off mid-string — a CI consumer parsing stdoutgot "Unterminated string in JSON" on exactly the big reports that matter.
(Surfaced by dogfooding this release.)
Notes
tests/field-report-3-deferred.test.mjs, each fix with anon-vacuous control). All field-report-3 items are now addressed.