Skip to content

ci: block Vale tooling paths from main + mirror spec dev-only narrative - #69

Merged
brettdavies merged 3 commits into
devfrom
feat/remove-vale-and-prose-tooling
May 31, 2026
Merged

ci: block Vale tooling paths from main + mirror spec dev-only narrative#69
brettdavies merged 3 commits into
devfrom
feat/remove-vale-and-prose-tooling

Conversation

@brettdavies

Copy link
Copy Markdown
Owner

Summary

Repositions the Vale prose-check stack (styles/, .vale.ini, scripts/prose-check.sh) as dev-only contributor
tooling, mirroring agentnative-spec PR #45 (ed066b6). This is the evergreen half: workflow guard, doc reference
updates, and dev-direct exception note. The actual file deletions on main happen in a follow-up performed directly
on the release/v0.5.0 branch so that one release cycle removes the files from main; from then on the workflow
guard keeps them out.

Bundles two small release-doc polish items that surfaced during the same review pass: a guarded-path leak-check entry
in RELEASES-PREFLIGHT.md, and a version-neutral rename of CLAUDE.md § "Scorecard v0.5 Fields" to § "Scorecard
JSON fields" so the heading stops aging out as schema versions move.

Changelog

Changed

  • .github/workflows/guard-main-docs.yml: pass extra_paths: 'styles/,.vale.ini,scripts/prose-check.sh' to the
    reusable guard workflow. Future PRs to main that add or modify those paths fail the check. Mirrors the path values
    used by agentnative-spec.
  • BRAND.md: refreshed verbatim from agentnative-spec to pick up the "narrative is authoritative for both the why
    and the what" reframing and the (dev-only) annotation on the Vale-rule-pack column of the Channel-artifacts table.
    As a vendored mirror, BRAND.md should match the spec word for word.
  • PRODUCT.md: Inheritance and Register sections retune to "authoritative voice contract" framing; explicitly names
    the rule pack as dev-only tooling that does not ship to main. Removes the dead styles/brand/README.md /
    styles/brand/*.yml / styles/config/vocabularies/cli/ links.
  • AGENTS.md: rewrites the "Voice and prose rules" section to drop the scripts/prose-check.sh invocation example
    and the rule-pack vendoring prose; mirrors the spec's AGENTS.md voice-contract paragraph.
  • scripts/SYNCS.md: drops the sync-prose-tooling.sh row from the upstream sync table, the matching mermaid arrow,
    and the Reference section entry.
  • RELEASES.md: prose-scrubbing intro no longer promises a future vendoring; explicitly names the spec checkout as
    the Vale config source.
  • CLAUDE.md: § "Scorecard v0.5 Fields" renamed to § "Scorecard JSON fields"; the cross-link in
    RELEASES-PREFLIGHT.md updates to match.

Added

  • RELEASES.md gains a ### Dev-direct exception subsection under Daily development, mirroring the spec's same
    insertion point and content. Names the two path categories (engineering docs and prose-check stack) that may be
    committed directly to dev without a feature branch.
  • RELEASES-PREFLIGHT.md gains a "Release mechanics sanity" item that runs the same guarded-path leak check
    RELEASES.md step 4 runs, so operators catch leaks before the release PR opens. Points at the new
    RELEASES.md § Cherry-pick conflicts on guarded paths subsection for resolution.

Type of Change

  • ci: CI/CD configuration changes

Related Issues/Stories

Testing

  • All tests passing

Test Summary:

  • cargo test: 793 passed, 2 ignored.
  • cargo build: clean.
  • bash scripts/prose-check.sh --vale-only on dev: stack still present, runs as expected.

Files Modified

Modified:

  • .github/workflows/guard-main-docs.yml
  • AGENTS.md, BRAND.md, CLAUDE.md, PRODUCT.md, RELEASES.md, RELEASES-PREFLIGHT.md, scripts/SYNCS.md

Created:

  • None.

Renamed:

  • None.

Deleted:

  • None on this branch. The actual prose-check stack deletions (.vale.ini, styles/, scripts/prose-check.sh, plus
    the orphaned helpers scripts/sync-prose-tooling.sh, scripts/test-prose-check.mjs,
    scripts/generate-pack-readme.mjs) ship on the release branch.

Breaking Changes

  • No breaking changes

Deployment Notes

  • No special deployment steps required

…UDE.md scorecard section

Two small release-doc polish items.

`RELEASES-PREFLIGHT.md` gains a "Release mechanics sanity" item that
runs the same leak check `RELEASES.md` step 4 runs, so operators catch
guarded paths (docs/plans, docs/brainstorms, etc.) that snuck through
cherry-pick rename detection before the release PR opens. Points at
the new `RELEASES.md` § Cherry-pick conflicts on guarded paths
subsection for resolution.

`CLAUDE.md` § "Scorecard v0.5 Fields" renamed to § "Scorecard JSON
fields" so the heading does not bake the schema version into a section
title that operators link from elsewhere. The schema version moves
through 0.5 → 0.6 → 0.7 on a release cadence; the section name should
not. Updates the cross-link in `RELEASES-PREFLIGHT.md` to match.
The Vale prose-check tooling (`.vale.ini`, `styles/`,
`scripts/prose-check.sh`) is dev-side only going forward. Adds
`extra_paths: 'styles/,.vale.ini,scripts/prose-check.sh'` to the
`guard-main-docs.yml` workflow so future PRs cannot reintroduce those
paths to main. The path values mirror the spec repo's wrapper.

The actual file deletions ship on the release branch (one cycle of
release-only removal puts them on main; from there the workflow keeps
them out). Dev keeps the tooling for operators who want to run a
local prose-check pipeline.

Updates the doc references on dev that point at the now-future-only
local Vale paths so consumers reading main do not chase dead links
once the release lands:

- `PRODUCT.md`: removes `styles/brand/`, `styles/brand/README.md`, and
  `styles/config/vocabularies/cli/` references; points at
  agentnative-spec as the canonical Vale rule pack location. Drops
  the prose-rendering Vale callout in favor of generic prose-source
  guidance.
- `AGENTS.md`: rewrites the "Voice and prose rules" section to drop
  the `scripts/prose-check.sh` invocation and the rule-pack vendoring
  prose.
- `BRAND.md`: callout and rule-pack pointers updated to name
  agentnative-spec as the executable contract; the "Source of truth"
  block names the spec repo as the issue venue.
- `scripts/SYNCS.md`: drops the `sync-prose-tooling.sh` row from the
  upstream sync table, the matching mermaid arrow, and the Reference
  section entry. Same justification (tool not on main).
- `RELEASES.md`: prose-scrubbing section no longer promises a future
  vendoring; explicitly names the spec checkout as the Vale config
  source.
Aligns this repo's narrative with `agentnative-spec` PR #45
(ed066b6), the canonical "move prose-check stack to dev-only" change.
The earlier commit in this branch covered the workflow guard and
removed direct path references; this one mirrors the spec's specific
phrasings so the two repos do not drift on framing.

- `BRAND.md`: replaced with a verbatim copy of the spec's current
  version, which already carries the "narrative is authoritative for
  both the *why* and the *what*" framing and the "Vale rule pack on
  the `dev` branch (dev-only tooling)" parenthetical, plus the
  refreshed Channel-artifacts table with `(dev-only)` annotation. As
  a vendored mirror, BRAND.md should match the spec word for word.
- `PRODUCT.md`: tightened the Inheritance and Register passages to
  the spec's "authoritative voice contract" / "dev-only tooling,
  not shipped to main" phrasing pattern, adapted for the linter
  channel (rule pack lives in the spec, mirrored to this repo's
  `dev`).
- `AGENTS.md`: rewrote the Voice and prose rules section to mirror
  the spec's AGENTS.md voice-contract paragraph, again adapted for
  the consumer-side framing.
- `RELEASES.md`: added the `### Dev-direct exception` subsection
  under Daily development, mirroring the spec's same insertion point
  and content (engineering-docs path list plus the prose-check stack
  trio). The dev-direct allowance applies to both categories; the
  feature-branch flow still applies to everything else.
@brettdavies
brettdavies merged commit 9f7ac17 into dev May 31, 2026
8 checks passed
@brettdavies
brettdavies deleted the feat/remove-vale-and-prose-tooling branch May 31, 2026 06:53
brettdavies added a commit that referenced this pull request May 31, 2026
…ve (#69)

## Summary

Repositions the Vale prose-check stack (`styles/`, `.vale.ini`,
`scripts/prose-check.sh`) as dev-only contributor
tooling, mirroring `agentnative-spec` PR #45 (ed066b6). This is the
evergreen half: workflow guard, doc reference
updates, and dev-direct exception note. The actual file deletions on
`main` happen in a follow-up performed directly
on the `release/v0.5.0` branch so that one release cycle removes the
files from `main`; from then on the workflow
guard keeps them out.

Bundles two small release-doc polish items that surfaced during the same
review pass: a guarded-path leak-check entry
in `RELEASES-PREFLIGHT.md`, and a version-neutral rename of `CLAUDE.md`
§ "Scorecard v0.5 Fields" to § "Scorecard
JSON fields" so the heading stops aging out as schema versions move.

## Changelog

### Changed

- `.github/workflows/guard-main-docs.yml`: pass `extra_paths:
'styles/,.vale.ini,scripts/prose-check.sh'` to the
reusable guard workflow. Future PRs to `main` that add or modify those
paths fail the check. Mirrors the path values
  used by `agentnative-spec`.
- `BRAND.md`: refreshed verbatim from `agentnative-spec` to pick up the
"narrative is authoritative for both the why
and the what" reframing and the `(dev-only)` annotation on the
Vale-rule-pack column of the Channel-artifacts table.
  As a vendored mirror, BRAND.md should match the spec word for word.
- `PRODUCT.md`: Inheritance and Register sections retune to
"authoritative voice contract" framing; explicitly names
the rule pack as dev-only tooling that does not ship to `main`. Removes
the dead `styles/brand/README.md` /
  `styles/brand/*.yml` / `styles/config/vocabularies/cli/` links.
- `AGENTS.md`: rewrites the "Voice and prose rules" section to drop the
`scripts/prose-check.sh` invocation example
and the rule-pack vendoring prose; mirrors the spec's AGENTS.md
voice-contract paragraph.
- `scripts/SYNCS.md`: drops the `sync-prose-tooling.sh` row from the
upstream sync table, the matching mermaid arrow,
  and the Reference section entry.
- `RELEASES.md`: prose-scrubbing intro no longer promises a future
vendoring; explicitly names the spec checkout as
  the Vale config source.
- `CLAUDE.md`: § "Scorecard v0.5 Fields" renamed to § "Scorecard JSON
fields"; the cross-link in
  `RELEASES-PREFLIGHT.md` updates to match.

### Added

- `RELEASES.md` gains a `### Dev-direct exception` subsection under
Daily development, mirroring the spec's same
insertion point and content. Names the two path categories (engineering
docs and prose-check stack) that may be
  committed directly to `dev` without a feature branch.
- `RELEASES-PREFLIGHT.md` gains a "Release mechanics sanity" item that
runs the same guarded-path leak check
`RELEASES.md` step 4 runs, so operators catch leaks before the release
PR opens. Points at the new
`RELEASES.md` § Cherry-pick conflicts on guarded paths subsection for
resolution.

## Type of Change

- [x] `ci`: CI/CD configuration changes

## Related Issues/Stories

- Story: n/a
- Issue: n/a
- Architecture: Mirrors `agentnative-spec` PR #45 (ed066b6)
"feat(prose-check): move stack to dev-only". The spec's
follow-up release PR (#46, 20b9deb) performed the corresponding file
deletions on `main`; this repo's equivalent
  deletions happen on `release/v0.5.0` after this PR merges.
- Related PRs: agentnative-spec#45, agentnative-spec#46

## Testing

- [x] All tests passing

**Test Summary:**

- `cargo test`: 793 passed, 2 ignored.
- `cargo build`: clean.
- `bash scripts/prose-check.sh --vale-only` on dev: stack still present,
runs as expected.

## Files Modified

**Modified:**

- `.github/workflows/guard-main-docs.yml`
- `AGENTS.md`, `BRAND.md`, `CLAUDE.md`, `PRODUCT.md`, `RELEASES.md`,
`RELEASES-PREFLIGHT.md`, `scripts/SYNCS.md`

**Created:**

- None.

**Renamed:**

- None.

**Deleted:**

- None on this branch. The actual prose-check stack deletions
(`.vale.ini`, `styles/`, `scripts/prose-check.sh`, plus
the orphaned helpers `scripts/sync-prose-tooling.sh`,
`scripts/test-prose-check.mjs`,
  `scripts/generate-pack-readme.mjs`) ship on the release branch.

## Breaking Changes

- [x] No breaking changes

## Deployment Notes

- [x] No special deployment steps required
brettdavies added a commit that referenced this pull request May 31, 2026
Performs the release-branch deletions that pair with the
`feat/remove-vale-and-prose-tooling` dev PR (#69). Once this release
lands on `main`, the `guard-main-docs` workflow added in #69 keeps
these paths from being reintroduced.

Removes:

- `.vale.ini` (the Vale config root, in extra_paths)
- `styles/` (rule packs + vocab; the brand pack came in via the
  spec-vendored bundle, in extra_paths)
- `scripts/prose-check.sh` (consumer-owned orchestrator, in
  extra_paths)
- `scripts/sync-prose-tooling.sh` (orphaned without the rule pack
  to vendor)
- `scripts/test-prose-check.mjs` (orphaned without prose-check.sh)
- `scripts/generate-pack-readme.mjs` (orphaned without styles/brand/)

Dev still has the stack for contributors who want a local prose-check
pipeline; the spec repo remains the canonical source for the rule
packs.
This was referenced May 31, 2026
brettdavies added a commit that referenced this pull request Jun 1, 2026
The original v0.5.0 CHANGELOG section was generated before the
hierarchical noun-verb consistent-naming fix (PR #73) was cherry-picked
onto the release branch. Regenerated to include the new bullet plus a
couple of others (#68, #69, #71 cherry-picks) that landed between the
first generation and now.

Side-effect: the section header date moves 2026-05-31 -> 2026-06-01
since git-cliff uses the regeneration date. The tag will publish today;
the new date matches the actual release date.
brettdavies added a commit that referenced this pull request Jun 1, 2026
## Summary

`v0.5.0` of `anc`. Vendored `agentnative-spec` advances `0.4.0` →
`0.5.0`. Scorecard JSON schema advances `0.5` → `0.7` in two steps
(7-status taxonomy at `0.6`; `check_id` → `audit_id` rename at `0.7`).
Coverage matrix JSON `schema_version` rebases from `"1.0"` to `"0.1"` so
it matches the project's pre-release `0.x` convention. Two new universal
P3 requirements (`p3-must-version`, `p3-should-version-short`) plus 22
additional behavioral checks across P1-P8 close the remaining behavioral
orphan coverage. CLI subcommand surface renames `check` → `audit` and
`generate` → `emit` (breaking). Badge eligibility floor lowers from 80%
to 70%, and the leaderboard score becomes credit-weighted on
shipped-binary behavior only. The Vale prose-check stack (`styles/`,
`.vale.ini`, `scripts/prose-check.sh`) moves to dev-only contributor
tooling; the workflow guard keeps it out of `main` going forward.

## Changelog

### Added

- 22 new behavioral checks across P1-P8 close the remaining behavioral
orphan coverage (verbose, color, raw, examples, defaults-in-help,
rich-tui, about/long-about, stdin-input, consistent-naming,
timeout-behavioral, structured exit codes, JSON error envelopes,
actionable errors, force/yes, read/write distinction, TTY-aware
verbosity, and more).
- Two universal P3 requirements (`p3-must-version`,
`p3-should-version-short`) verify that every CLI ships a `--version`
flag plus a short alias from the `-V` / `-v` / `-version` family.
- New `opt_out` and `n_a` scorecard statuses surface explicit
non-adoption and unmet-antecedent rows; each `results[]` entry now
carries `tier` plus `audit_id`. Pre-`0.6` consumers feature-detect.
- Top-level `--verbose` / `-v` (env `AGENTNATIVE_VERBOSE`),
`--examples`, `--color`, and `--raw` flags surface diagnostic detail,
curated invocation blocks, ANSI styling control, and pipe-friendly
`id<TAB>status` rows.
- `anc skill install --all` and `anc skill update [host|--all]` iterate
every known host in one invocation.

### Changed

- **BREAKING**: `anc check` renamed to `anc audit`; `anc generate`
renamed to `anc emit`; `anc schema` folded under `anc emit schema`. The
implicit-default-subcommand injection now writes `audit`. Update scripts
and CI invocations.
- **BREAKING**: scorecard `schema_version` advances `"0.5"` → `"0.7"`
(two-step), the `check_id` field renames to `audit_id`, and `results[]`
switches to one entry per requirement-row rather than per probe.
Consumers pinning the prior shape must feature-detect or update.
- Leaderboard `score_pct` is now credit-weighted on shipped-binary
behavior only: `warn` earns half credit, `opt_out` counts against,
source/project audits no longer affect the score. Badge eligibility
floor lowers from 80% to 70%.
- Vendored `agentnative-spec` advances `0.4.0` → `0.5.0`; scorecard
`spec_version` reports `"0.5.0"`.
- `coverage/matrix.json` `schema_version` bumps `"1.0"` → `"0.1"` so the
matrix follows the project's pre-release `0.x` convention used by the
CLI crate, scorecard schema, and vendored spec. The lone consumer
(`agentnative-site/src/build/coverage.mjs`) validates the field's
existence but does not pin a specific value, so this is safe.
- Vale prose-check stack (`styles/`, `.vale.ini`,
`scripts/prose-check.sh`) repositions as dev-only contributor tooling.
`guard-main-docs.yml` blocks those paths from `main` going forward.

### Fixed

- Error output under `--output json` / `--json` now emits a JSON
envelope with `error`, `kind`, `message` instead of clap's plain-text
rendering, so agents pinned to JSON can parse failures with one shape.
- Text mode now renders `[N/A]` (with antecedent evidence) for
conditional requirements whose prerequisite was opted out, instead of a
misleading `[FAIL]` on the probe id. Text row count and badge score
match `--output json`.
- The spec parser rejects three malformed conditional-applicability
inputs that previously fell through silently (whitespace-only
`antecedent.audit_id`, mixed legacy `if:` + new `kind:`, unknown keys
inside `antecedent`).

### Documentation

- `RELEASES-PREFLIGHT.md` lands as the operational pre-flight checklist
gating each release cut. `RELEASES.md` gains a `### Cherry-pick
conflicts on guarded paths` subsection and a `### Dev-direct exception`
subsection covering engineering-docs paths and the prose-check stack.
- Repo-wide prose pass: every tracked markdown doc plus the historical
sections of `CHANGELOG.md` carry the same per-occurrence punctuation
tightening applied to all 64 PR bodies in the v0.4.0 → v0.5.0 window.

## Type of Change

- [x] `BREAKING CHANGE`: Breaking API change (requires major version
bump)

## Related Issues/Stories

- Story: n/a
- Issue: n/a
- Architecture: `agentnative-spec` `v0.5.0` (vendored at upstream commit
`d5d4086`). Consumer-facing JSON shape moves to schema `0.7` with the
`audit_id` rename.
- Related PRs: cherry-picks of #55, #56, #57, #58, #59, #60, #61, #62,
#63, #64, #65, #66, #68, #69 from `dev`.

## Testing

- [x] All tests passing

**Test Summary:**

- `cargo test`: 793 passed, 2 ignored.
- `anc emit coverage-matrix --check`: exit 0.
- `cargo deny check advisories`: ok.
- Release-mechanics preflight per `RELEASES-PREFLIGHT.md`: green except
the cross-repo `agentnative-site` schema gap (tracked separately).

## Files Modified

**Modified:**

- Source: `src/audits/`, `src/scorecard/`, `src/principles/`,
`src/main.rs`, `src/cli.rs`, `src/audit.rs`, `src/types.rs`,
`src/runner/`, `src/source.rs`, `src/skill_install.rs`, and supporting
modules.
- Schema: `schema/scorecard.schema.json` regenerated to the `0.7`
contract.
- Vendored spec: `src/principles/spec/*` advances to `v0.5.0`.
- Coverage artifacts: `docs/coverage-matrix.md`, `coverage/matrix.json`
reflect 59 requirement rows.
- Workflows: `.github/workflows/guard-main-docs.yml` (extra_paths).
- Tracked docs: `README.md`, `AGENTS.md`, `CLAUDE.md`, `PRODUCT.md`,
`BRAND.md`, `RELEASES.md`, `RELEASES-RATIONALE.md`, `scripts/SYNCS.md`,
`.github/pull_request_template.md`, `CHANGELOG.md`.
- Scripts: `scripts/generate-changelog.sh` (duplicate-section guard),
`scripts/sync-spec.sh` (`--ref` flag and `gh api` transport),
`scripts/hooks/pre-push` (shellcheck step).
- Build identity: `Cargo.toml`, `Cargo.lock` (`0.5.0`).

**Created:**

- `RELEASES-PREFLIGHT.md` (operational pre-flight checklist).

**Renamed:**

- `anc check` → `anc audit` (subcommand surface).
- `anc generate` → `anc emit` (subcommand surface).
- Scorecard `check_id` → `audit_id` (JSON field).

**Deleted:**

- `.vale.ini`, `styles/`, `scripts/prose-check.sh`, plus the orphaned
helpers `scripts/sync-prose-tooling.sh`, `scripts/test-prose-check.mjs`,
`scripts/generate-pack-readme.mjs`. Replaced by the
`guard-main-docs.yml` `extra_paths` guard that keeps the stack off
`main` going forward.

## Breaking Changes

- [x] Breaking changes described below:

1. **Scorecard JSON shape**: `schema_version` `"0.5"` → `"0.7"`.
`check_id` renamed to `audit_id` (per-row and in
`coverage/matrix.json`). `results[]` switches to one entry per
requirement-row instead of per probe; each entry carries new `tier` and
`audit_id` fields. Status enum expands from 3 to 7 values (`pass`,
`warn`, `fail`, `opt_out`, `n_a`, `skip`, `error`). Consumers pinned to
`0.5` or the prior `check_id` field must update.
2. **Subcommand surface**: `anc check` renamed to `anc audit`; `anc
generate` renamed to `anc emit`; `anc schema` folded under `anc emit
schema`. Scripts and CI invocations pinned to the old names must update.

## Deployment Notes

- `agentnative-site` must add `'0.7'` to its `SUPPORTED_SCHEMA_VERSIONS`
allowlist before this release is tagged. Without that, the site's regen
pipeline rejects every `v0.5.0` scorecard upload.
- After tag publish: run `./scripts/sync-dev-after-release.sh v0.5.0 &&
git push origin dev` per `RELEASES.md` § After publish to backport
`Cargo.toml`, `Cargo.lock`, and `CHANGELOG.md` to `dev`.
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