Skip to content

feat(prose-check): move stack to dev-only (docs, hook, guard, dev-direct note) - #45

Merged
brettdavies merged 6 commits into
devfrom
feat/prose-check-stack-dev-only
May 30, 2026
Merged

brettdavies merged 6 commits into
devfrom
feat/prose-check-stack-dev-only

Conversation

@brettdavies

@brettdavies brettdavies commented May 30, 2026 •

Copy link
Copy Markdown
Owner

Summary

Reposition the prose-check stack (Vale rule packs at styles/, .vale.ini, the scripts/prose-check.sh orchestrator) as dev-only contributor tooling. The narrative tier (BRAND.md, PRODUCT.md) is named as the authoritative voice contract; the packs encode the literal phrases for enforcement on contributor PRs against dev. Five shipped-to-main docs (PRODUCT.md, BRAND.md, AGENTS.md, principles/AGENTS.md, CONTRIBUTING.md) lose their "executable contract at styles/spec/" framing in favor of the new narrative-is-canonical phrasing. The pre-push hook gains a graceful skip so the same hook ships to both dev (stack present, runs) and main (stack absent, warn + skip). A local guard step in .github/workflows/guard-main-docs.yml blocks styles/, .vale.ini, and scripts/prose-check.sh from being added to or modified on main PRs, alongside the reusable engineering-docs guard. RELEASES.md documents the dev-direct commit exception (same treatment docs/plans/ already enjoys) for both engineering docs and the prose-check stack.

This is the evergreen half of the architecture correction. The actual file deletions on main (styles/, .vale.ini, scripts/prose-check.sh) happen in a follow-up branch cut from main once this lands.

Changelog

Changed

  • Vale rule packs (styles/brand/, styles/spec/), .vale.ini, and scripts/prose-check.sh are now dev-only contributor tooling. BRAND.md and PRODUCT.md are named as the authoritative voice contract in their place; the packs enforce on contributor PRs against dev and do not ship to main.
  • scripts/hooks/pre-push gracefully skips the prose-check stage with a warning when the stack is absent (normal on main), instead of failing.
  • .github/workflows/guard-main-docs.yml passes styles/,.vale.ini,scripts/prose-check.sh as extra_paths to the reusable brettdavies/.github guard-main-docs workflow (@main, after brettdavies/.github PR chore(launch): spec polish — prose tooling, plan close-outs, README version pin #31 released the input). The prose-check stack is now blocked from main PRs by the global guard rather than a local inline job.
  • RELEASES.md documents the dev-direct commit exception covering engineering docs (docs/architecture/, docs/plans/, etc.) and the prose-check stack.

Linked audit review

no audit changes needed. Repositioning of dev tooling and supporting governance prose; no requirements[] changes, no tier moves, no frontmatter shape changes.

Human reviewer

Reviewer: @brettdavies

AI disclosure

The styles/ reference rewrites, the pre-push graceful skip, the local guard step, the dev-direct exception note, and this PR body were AI-drafted (Claude Opus 4.7) from the maintainer's directives; the architecture decision (move the stack to dev-only) is human (@brettdavies).

The Vale rule packs and the prose-check orchestrator are contributor
tooling that enforces voice on PR work. They live on the dev branch
and never need to ship to main: sync-spec.sh does not vendor them,
nobody scores or audits against them, and downstream consumers have
no use for them.

Reframe the references in PRODUCT.md, BRAND.md, AGENTS.md,
principles/AGENTS.md, and CONTRIBUTING.md so the narrative tier
(BRAND.md, PRODUCT.md) is named as the authoritative voice contract
and the packs are described as enforcement tooling on dev.
The same hook ships to main and dev (per the project's keep-hooks-
in-sync convention), but the prose-check stack itself is moving to
dev-only. Detect the absence of styles/, .vale.ini, or the
orchestrator at hook time and skip the stage with a warning rather
than fail — normal on main, abnormal on dev.
The reusable guard-main-docs workflow hardcodes the engineering-docs
path list. Until it accepts an extra_paths input, enforce the
spec-repo-specific dev-only paths (styles/, .vale.ini,
scripts/prose-check.sh) inline alongside the reusable caller.
Retire when the reusable workflow gains parameterization.
Engineering docs (docs/architecture/, docs/plans/, etc.) and the
prose-check stack (styles/, .vale.ini, scripts/prose-check.sh) live
only on dev and are blocked from main by guard-main-docs. Document
that they may be committed directly to dev without a feature branch
or PR; the standard PR flow remains required for everything else.
brettdavies/.github PR #30 added an extra_paths input to the
reusable guard-main-docs workflow. Drop the local inline
guard-prose-check-stack job in favor of passing
styles/,.vale.ini,scripts/prose-check.sh through that input.

Pinned at @dev as a smoke test until the .github repo cuts its own
release carrying the input; flip to @main after that release lands.
brettdavies/.github PR #31 released the extra_paths input to main.
Drop the smoke-test pin on @dev now that the input is available on
the @main ref the rest of the repo's callers use.
@brettdavies
brettdavies merged commit ed066b6 into dev May 30, 2026
1 check passed
@brettdavies
brettdavies deleted the feat/prose-check-stack-dev-only branch May 30, 2026 19:06
brettdavies added a commit that referenced this pull request May 30, 2026
…to dev-only (#46)

## Summary

Move the prose-check stack (Vale rule packs at `styles/`, `.vale.ini`,
the `scripts/prose-check.sh` orchestrator) off `main` entirely. The
packs and the orchestrator are contributor tooling that govern how the
spec is authored on `dev`; nothing downstream consumes them.
`sync-spec.sh` vendors only `principles/p*-*.md`, `VERSION`, and
`CHANGELOG.md`, and the standard's contract is the principles, not the
rules that gate prose-about-the-principles.

PR #45 (already on `dev`) landed the evergreen half: doc repoints in
`PRODUCT.md`, `BRAND.md`, `AGENTS.md`, `principles/AGENTS.md`, and
`CONTRIBUTING.md` to name `BRAND.md` and `PRODUCT.md` as the
authoritative voice contract; pre-push hook graceful skip when the stack
is absent; dev-direct commit exception in `RELEASES.md` for engineering
docs and the prose-check stack; and
`.github/workflows/guard-main-docs.yml` switching from a local inline
guard to the reusable `brettdavies/.github` guard-main-docs workflow's
new `extra_paths` input (`styles/,.vale.ini,scripts/prose-check.sh`).
This release branch carries those evergreen changes plus the actual file
deletions.

After this lands, the global guard blocks `styles/`, `.vale.ini`, and
`scripts/prose-check.sh` from ever being re-added to `main` via a PR. No
`VERSION` bump and no `CHANGELOG` entry: the standard's contract
(principles, requirement IDs, tiers) is unchanged; `publish.yml` does
not fire because neither `principles/p*-*.md` nor `VERSION` is touched.

## Changelog

## Linked audit review

no audit changes needed. Repository-hygiene change with no
`requirements[]` impact and no consumer-facing surface affected.

## Human reviewer

**Reviewer:** @brettdavies

## AI disclosure

Cherry-pick, deletion staging, triple-diff verification, commit
messages, and this PR body were AI-drafted (Claude Opus 4.7) from the
maintainer's directives; the architecture call (move the prose-check
stack to dev-only) is human (@brettdavies).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant