Repository navigation
release: v0.6.0 publishes the p3 unprefixed command-list SHOULD and the release tooling - #56
Merged
Merged
Conversation
…he release tooling Publishes `p3-should-unprefixed-command-list`, the SHOULD that command-list entries name the command directly rather than repeating the binary name as a prefix. The requirement already ships in the published `anc` v0.6.0, which emits a scorecard row for it, so until this lands the auditor grades a requirement the published spec does not define. Also carries the governance and release tooling that accumulated on dev since v0.5.0: CODEOWNERS, Dependabot, the re-vendored release scripts and consolidated `generate-changelog.py`, updated guards and rulesets, and the consumer-facing docs that describe them. The prose-check stack stays dev-only, as release #46 established. VERSION moves to 0.6.0 because a new normative SHOULD is an additive spec change, and because `publish.yml` reads VERSION to find its CHANGELOG section; leaving it at 0.5.0 would point the release cut at the section v0.5.0 already published.
11 of 13 tasks
This was referenced Oct 5, 2026
brettdavies
added a commit
to brettdavies/agentnative-cli
that referenced
this pull request
Oct 5, 2026
## Summary Vendors `agentnative-spec` v0.6.0, so `spec_version` in every scorecard reports 0.6.0 instead of 0.5.0. This closes a coherence gap rather than adopting new requirements. The registry already carried `p3-should-unprefixed-command-list` and `anc` already graded it, because the principle text was vendored from the spec's `dev` branch while the requirement was in flight. The vendored `VERSION` stayed at 0.5.0, so published scorecards declared conformance to a standard that did not define a requirement they carried a row for. Spec v0.6.0 publishes that SHOULD. Only `VERSION` and the vendored `CHANGELOG.md` change. The principle text is byte-identical to what was already vendored, so the generated requirement set, the registry counts, and `docs/coverage-matrix.md` are all untouched. `src/principles/spec/CHANGELOG.md` also joins the markdownlint ignore list, next to the root changelog that is already there for the same reason. The vendored file carries upstream's one-logical-line-per-bullet shape, which trips MD013 at 189 to 379 characters on the new 0.6.0 bullets. Wrapping it would make the vendored copy differ from upstream, which is the one property `scripts/sync-spec.sh` exists to preserve. ## Changelog ### Changed - Report `spec_version: "0.6.0"` in scorecards, matching the published spec that now defines `p3-should-unprefixed-command-list`. ## Type of Change - [x] `fix`: Bug fix (non-breaking change which fixes an issue) ## Related Issues/Stories - Story: n/a - Issue: n/a - Architecture: `scripts/SYNCS.md` (`sync-spec.sh` row) - Related PRs: brettdavies/agentnative#56 (the spec v0.6.0 release), #95 (the audit that verifies the requirement) ## Files Modified **Modified:** - `src/principles/spec/VERSION`: 0.5.0 to 0.6.0. - `src/principles/spec/CHANGELOG.md`: vendored, gains the upstream 0.6.0 section. - `.markdownlint-cli2.yaml`: ignore the vendored spec changelog. **Created:** - None. **Renamed:** - None. **Deleted:** - None. ## Testing - [ ] Unit tests added/updated - [ ] Integration tests added/updated - [x] Manual testing completed - [x] All tests passing **Test Summary:** - Unit tests: 1106 passing, 3 ignored - Integration tests: covered by the above - Coverage: not measured in this repo No new tests: the change is a vendored version string, and nothing in `tests/` asserts a `spec_version` literal, which is what lets the bump pass without edits. Verified in emitted output rather than inferred from the file: `anc audit --command jq --audit-profile posix-utility --output json` reports `spec_version=0.6.0`, and the `p3-should-unprefixed-command-list` row is still present and resolves to `n_a` for `jq`, which is correct for a requirement gated on the CLI having subcommands. Confirmed the new markdownlint ignore takes effect (`Linting: 0 files` for the vendored changelog) while other markdown still lints. ## Breaking Changes - [x] No breaking changes Consumers that pin on `spec_version` see it move from `0.5.0` to `0.6.0`. The site accepts the scorecard on `schema_version`, not `spec_version`, so nothing downstream gates on this. ## Deployment Notes - [x] No special deployment steps required Published `anc` v0.6.0 keeps reporting `spec_version: "0.5.0"`; this reaches users with the next `anc` release. ## Checklist - [x] Code follows project conventions and style guidelines - [x] Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/) - [x] Self-review of code completed - [x] Tests added/updated and passing - [x] No new warnings or errors introduced - [x] Changes are backward compatible (or breaking changes documented) ## Additional Context The spec's `publish.yml` dispatches a `spec-release` event to this repo and to `agentnative-site` on every tagged release, with its loop commented "Non-fatal: downstream consumers opt in when they wire handlers." Neither repo has a handler, so no workflow fires and the dispatch is silently a no-op. That is why this sync is a hand-run script and a PR rather than something that happened on its own, and wiring a handler here would be a reasonable follow-up.
brettdavies
added a commit
to brettdavies/agentnative-site
that referenced
this pull request
Oct 5, 2026
## Summary Vendors `agentnative-spec` v0.6.0 into `src/data/spec/`, which publishes `p3-should-unprefixed-command-list`: command-list entries SHOULD name the command directly (`status`, `server stop`) rather than repeat the binary name on every line, with the bare invocation line as the one entry that legitimately carries the binary name alone. `SPEC_VERSION` moves to 0.6.0. Vendored through `scripts/sync-spec.sh`, resolved at 5077a5d. `SITE_SPEC_VERSION` deliberately stays at 0.5.0. Per `src/data/spec/README.md`, the vendored copy is a reference snapshot with no user-visible surface, while the footer renders `SITE_SPEC_VERSION` from `content/principles/VERSION` and moves only once a contributor reconciles the site's own principle prose. The footer therefore keeps making an honest claim about what the rendered pages describe, which is the state that README calls out explicitly. Reconciling `content/principles/p3-progressive-help-discovery.md` and bumping that marker is the editorial follow-up, and it is not in this PR. `tests/build-mcp-catalog.test.ts` asserted the catalog's `spec_version` against a literal `'0.5.0'` while already importing `SPEC_VERSION` and passing it in as the input, so it pinned a value guaranteed to go stale on the next spec sync. It now asserts the pass-through against the constant. ## Changelog ### Changed - Vendor spec v0.6.0, which adds the `p3-should-unprefixed-command-list` SHOULD to the reference snapshot the web audit and discovery documents read. ## Type of Change - [x] `fix`: Bug fix (non-breaking change which fixes an issue) ## Related Issues/Stories - Story: n/a - Issue: n/a - Architecture: `src/data/spec/README.md` (the three version markers and which surface each drives); `scripts/SYNCS.md` (`sync-spec.sh` row) - Related PRs: brettdavies/agentnative#56 (the spec v0.6.0 release), brettdavies/agentnative-cli#136 (the same sync on the CLI side), #426 (the `ANC_VERSION` sync) ## Files Modified **Modified:** - `src/data/spec/VERSION`: 0.5.0 to 0.6.0. - `src/data/spec/CHANGELOG.md`: vendored, gains the upstream 0.6.0 section. - `src/data/spec/principles/p3-progressive-help-discovery.md`: vendored, gains the new SHOULD and its requirement block. - `src/worker/spec-version.gen.ts`: regenerated, `SPEC_VERSION` only. - `tests/build-mcp-catalog.test.ts`: assert `spec_version` against `SPEC_VERSION` instead of a literal. **Created:** - None. **Renamed:** - None. **Deleted:** - None. ## Testing - [ ] Unit tests added/updated - [x] Integration tests added/updated - [x] Manual testing completed - [x] All tests passing **Test Summary:** `bun test` reports 2774 pass / 111 fail, which is identical to the count on a clean `origin/dev` checkout. The 111 are pre-existing and environment-dependent: they are the `(built dist/)` suites that need a prior `bun run build`, plus the R2-backed paths that have no local binding. That baseline was measured rather than assumed. Running the suite before the change gave 111 failures and after gave 112, and diffing the normalized failure names isolated the single regression to `buildMcpCatalog: shape invariants > top-level fields present`, the hardcoded `'0.5.0'` assertion. With that assertion fixed the totals match the baseline exactly, so this change introduces no net regression. ## Breaking Changes - [x] No breaking changes ## Deployment Notes - [ ] No special deployment steps required - [x] Deployment steps documented below: `SPEC_VERSION` is part of the web-audit cache key (`audits/web/<url-hash>/<SPEC_VERSION>.json`) and of the domain-budget hold key, so this bump **rotates every web-audit cache entry**. Expect cached web audits to miss and re-audit after deploy, and the web leaderboard to repopulate as they do. `src/worker/audit-web/leaderboard-render.ts` already carries a comment describing this behaviour from a previous `SPEC_VERSION` bump, so it is expected rather than new. Merge-order note: this PR and #426 both regenerate `src/worker/spec-version.gen.ts` on adjacent lines (`SPEC_VERSION` here, `ANC_VERSION` there). Whichever merges second should regenerate the file with `bun src/build/00-spec-version-gen.mjs` rather than hand-resolving a conflict. ## Checklist - [x] Code follows project conventions and style guidelines - [x] Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/) - [x] Self-review of code completed - [x] Tests added/updated and passing - [x] No new warnings or errors introduced - [x] Changes are backward compatible (or breaking changes documented) ## Additional Context Two things found while doing this that are not fixed here: - The spec's `publish.yml` dispatches a `spec-release` event to this repo and to `agentnative-cli` on every tagged release, with the loop commented "Non-fatal: downstream consumers opt in when they wire handlers." Neither repo has a handler, so the dispatch is a silent no-op and this sync had to be run by hand. `scripts/SYNCS.md` already tracks the auto-PR handler as a follow-up. - `tests/spec-version-hardcoding.test.ts` is a red-team guard against `ANC_VERSION`-shaped literals in tests, but the literal fixed in this PR was a `SPEC_VERSION` one and slipped through. Widening that guard to cover all three markers would have caught it at authoring time.
brettdavies
added a commit
to brettdavies/agentnative-site
that referenced
this pull request
Oct 5, 2026
## Summary `src/data/anc/VERSION` tracks the currently-published `anc` release. The build emits it as `ANC_VERSION` into `src/worker/spec-version.gen.ts`, and the pages carry that value as `softwareVersion` in their JSON-LD while the discovery documents report it to agents. It still read 0.5.0 after `anc` v0.6.0 published, so each of those surfaces named a release that is no longer current. Vendored through `scripts/sync-cli-version.sh`, which resolved v0.6.0 from the cli repo at the release commit, followed by a regeneration of the emitted constant. Two files, two lines. `SPEC_VERSION` and `SITE_SPEC_VERSION` stay at 0.5.0. The spec's own 0.6.0 release is an open PR (brettdavies/agentnative#56), and the vendored spec version follows that release rather than the CLI's. Nothing here changes what the live scorer runs. `ANC_VERSION` states which `anc` release is published; the binary that executes an audit is the one baked into the sandbox container image, which this PR does not touch. See the follow-ups below. ## Changelog ### Changed - Report `anc` 0.6.0 as the published CLI release in page JSON-LD (`softwareVersion`) and in the agent-facing discovery documents. ## Type of Change - [x] `fix`: Bug fix (non-breaking change which fixes an issue) ## Related Issues/Stories - Story: n/a - Issue: n/a - Architecture: `scripts/SYNCS.md` step 4 ("CLI cuts a new tag (binary release)") - Related PRs: brettdavies/agentnative-cli#129 (the v0.6.0 release), brettdavies/agentnative#56 (the spec 0.6.0 release this deliberately does not anticipate) ## Files Modified **Modified:** - `src/data/anc/VERSION`: 0.5.0 to 0.6.0. - `src/worker/spec-version.gen.ts`: regenerated, `ANC_VERSION` only. **Created:** - None. **Renamed:** - None. **Deleted:** - None. ## Testing - [ ] Unit tests added/updated - [ ] Integration tests added/updated - [x] Manual testing completed - [x] All tests passing **Test Summary:** Two existing guards already cover this change, so no new tests: `tests/spec-version-gen.test.ts` fails when `spec-version.gen.ts` lags the vendored `VERSION`, and `tests/spec-version-hardcoding.test.ts` fails when a test carries an `ANC_VERSION`-shaped literal instead of importing the constant. Checked for values this bump would strand: every `0.5.0` literal remaining in `tests/` and `src/` is a `spec_version` / `specVersion` (unchanged by this PR) or an unrelated tool version in a fixture, and no fixture hardcodes `anc_version`. ## Breaking Changes - [x] No breaking changes ## Deployment Notes - [x] No special deployment steps required ## Checklist - [x] Code follows project conventions and style guidelines - [x] Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/) - [x] Self-review of code completed - [x] Tests added/updated and passing - [x] No new warnings or errors introduced - [x] Changes are backward compatible (or breaking changes documented) ## Additional Context Three pieces of the post-release cross-repo sync are deliberately left out of this PR, because each needs work this one does not: - **Sandbox container image.** `docker/sandbox/Dockerfile` still fetches the v0.5.0 tarball, so live scoring keeps running `anc` 0.5.0. Advancing it is the image flow in `RELEASES.md` § Sandbox image releases: rebuild, push to the CF managed registry, advance `env.staging.containers[0].image`, soak, then promote the top-level pin at release time. Until that happens prod scores with 0.5.0, which is stale but honest, since the scorecard reports the binary that ran. - **Scored corpus.** The 96 scorecards under `scorecards/` were produced by the older `anc`. Refreshing them is `bash docker/score/build.sh --run`, a separate change with its own review surface. - **`.anc.toml` fetch with `--repo`** in the sandbox install and batch scoring, the deferred follow-up from the config-follows-the-repo plan. That is a feature, not a version sync.
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.
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.mdgains the requirement block and the normative text.This closes a lockstep gap rather than adding something new. The published
ancv0.6.0 already audits this requirement and emits ap3-should-unprefixed-command-listrow in every scorecard, while declaringspec_version: 0.5.0against a published spec that does not define it. Until this merges, the auditor grades tools on a requirement a reader cannot look up.VERSIONmoves to 0.6.0. A new normative SHOULD is an additive spec change, andpublish.ymlresolves its CHANGELOG section fromVERSION, 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
devsince v0.5.0: CODEOWNERS and a Dependabot config (both inert until they reach the default branch), the re-vendoredscripts/release/helpers,scripts/sync-dev-after-release.sh, the consolidatedscripts/generate-changelog.pyreplacing the shell version, refreshed guard workflows and theprotect-mainruleset, and the consumer-facing docs describing them. The prose-check stack staysdev-only, as release #46 established.Changelog
Added
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
mainand enable Dependabot, so contributor PRs now need an owner approval before merge.scripts/generate-changelog.shwithscripts/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-listaudit that verifies this requirement. It shipped inancv0.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, generatedCHANGELOG.mdfrom the constituentdevPR bodies, and wrote this body; every shipped change to the principle text, workflows, scripts, and docs is human-authored work already reviewed and merged todevthrough its own PR.