Skip to content

release: move prose-check stack (styles/, .vale.ini, prose-check.sh) to dev-only - #46

Merged
brettdavies merged 2 commits into
mainfrom
release/prose-check-stack-to-dev-only
May 30, 2026
Merged

brettdavies merged 2 commits into
mainfrom
release/prose-check-stack-to-dev-only

Conversation

@brettdavies

Copy link
Copy Markdown
Owner

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).

…ect note) (#45)

## 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 #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).
…ck.sh)

The Vale rule packs, the vale config, and the orchestrator script
are contributor tooling: they govern how the spec is authored on
dev, but nothing downstream consumes them. sync-spec.sh vendors
only principles/p*-*.md + VERSION + CHANGELOG.md; 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 of the change:
doc repoints 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, and the global
guard-main-docs caller picking up the new extra_paths input
(styles/,.vale.ini,scripts/prose-check.sh). This release branch
adds the actual file deletions on main.

After this lands, the global guard blocks the same paths from ever
being re-added to main via a PR.
@brettdavies
brettdavies merged commit 20b9deb into main May 30, 2026
3 checks passed
@brettdavies
brettdavies deleted the release/prose-check-stack-to-dev-only branch May 30, 2026 19:12
brettdavies added a commit that referenced this pull request Oct 5, 2026
…he release tooling (#56)

## Summary

Publishes `p3-should-unprefixed-command-list`, the SHOULD that
command-list entries name the command directly (`status`, `server stop`)
rather than repeating the binary name on every line (`tool status`,
`tool server stop`). The bare invocation line stays the one entry that
legitimately carries the binary name alone.
`principles/p3-progressive-help-discovery.md` gains the requirement
block and the normative text.

This closes a lockstep gap rather than adding something new. The
published `anc` v0.6.0 already audits this requirement and emits a
`p3-should-unprefixed-command-list` row in every scorecard, while
declaring `spec_version: 0.5.0` against a published spec that does not
define it. Until this merges, the auditor grades tools on a requirement
a reader cannot look up.

`VERSION` moves to 0.6.0. A new normative SHOULD is an additive spec
change, and `publish.yml` resolves its CHANGELOG section from `VERSION`,
so leaving it at 0.5.0 would point the release cut at the section v0.5.0
already published.

The release also carries the governance and release tooling that
accumulated on `dev` since v0.5.0: CODEOWNERS and a Dependabot config
(both inert until they reach the default branch), the re-vendored
`scripts/release/` helpers, `scripts/sync-dev-after-release.sh`, the
consolidated `scripts/generate-changelog.py` replacing the shell
version, refreshed guard workflows and the `protect-main` ruleset, and
the consumer-facing docs describing them. The prose-check stack stays
`dev`-only, as release #46 established.

## Changelog

### Added

- Add `p3-should-unprefixed-command-list` (SHOULD, applies when the CLI
uses subcommands): command-list entries name the command directly rather
than repeating the binary name as a prefix, so a reader or agent takes
the command token from the left column instead of reconstructing it from
a known prefix.

### Changed

- Require code-owner review on `main` and enable Dependabot, so
contributor PRs now need an owner approval before merge.
- Replace `scripts/generate-changelog.sh` with
`scripts/generate-changelog.py`, which keeps the same flags and
git-cliff plus PR-body pipeline and adds a duplicate-section guard.

## Linked audit review

brettdavies/agentnative-cli#95 adds the
`p3-unprefixed-command-list` audit that verifies this requirement. It
shipped in `anc` v0.6.0, which is published.

## Human reviewer

**Reviewer:** @brettdavies (review pending; this PR is open for it, not
approved)

## AI disclosure

Claude assembled the release branch, bumped `VERSION`, generated
`CHANGELOG.md` from the constituent `dev` PR bodies, and wrote this
body; every shipped change to the principle text, workflows, scripts,
and docs is human-authored work already reviewed and merged to `dev`
through its own PR.
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