chore(ci): single source of truth for the validation gate set#37
Merged
Conversation
`deno task verify` and the validate workflow were two hand-maintained lists of the same gates, and they drifted: verify omitted doc:lint (and publish:check's failure was easy to miss), so a public-API change could pass locally and fail in CI — exactly what happened on the #19 freeze. Introduce apps/cli/src/scripts/ci.ts: one ordered gate list, run as subprocesses (buffered output, shown only on failure), fail-fast. Both entry points now point at it: - `deno task verify` → runs the script - .github/workflows/dv-validate.yml → collapses its dozen steps to one `deno task verify` The gate set is now complete in both places: fmt:check, lint, check, test, schemas:check, publish:check, doc:lint, the dogfood gates (dv validate + plugin verify ×3), and the docs build. The dv-specific gates invoke apps/cli/src/main.ts directly, so CI no longer needs a separate "install dv from source" step. Add/remove a gate in ci.ts and both local and CI pick it up — they can no longer diverge. Docs (CONVENTIONS.md, apps/cli/CLAUDE.md) updated to point at `verify` as the one command. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
b3768a7 to
21194f5
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
deno task verifyand.github/workflows/dv-validate.ymlwere two hand-maintained lists of the same gates — and they had drifted.verifyomitteddoc:lint(and it was easy to misspublish:check's output), so a public-API change could pass locally and fail in CI. That's exactly what bit the #19 freeze (SCHEMA_URNStripped bothpublish:checkanddoc:lintonly in CI).The fix
A new
apps/cli/src/scripts/ci.tsis the single source of truth for the gate set — one ordered list, run as subprocesses (output buffered, shown only on failure), fail-fast. Both entry points point at it:deno task verify→ runs the scriptvalidateworkflow → its ~dozen steps collapse to onedeno task verifyAdd or remove a gate in
ci.tsand both local and CI pick it up. They can no longer diverge.Coverage (now identical in both places)
fmt:check · lint · check · test · schemas:check · publish:check · doc:lint · dv validate · dv plugin verify (deno / npm / dv-release) · docs build
The dv-specific gates invoke
apps/cli/src/main.tsdirectly, so CI no longer needs the separate "install dv from source" shim step.Sample output
On failure it stops at the first failing gate and dumps that gate's stdout/stderr.
Docs updated (
CONVENTIONS.md,apps/cli/CLAUDE.md) to point atverifyas the one command to run before calling work done. Infra-only — no Record.🤖 Generated with Claude Code