chore(spec): re-vendor spec/ to v0.3.0 + RELEASES spec-revendor section#10
Merged
Conversation
12 tasks
brettdavies
added a commit
that referenced
this pull request
Apr 29, 2026
…oring (#11) ## Summary Two coordinated cleanups to `scripts/sync-spec.sh` and surrounding docs: 1. **Drop the SHA-pin model.** Eliminates all SHA-pin claims and the `SPEC_REF` override surface. After this PR merges, `rg` for any of `SHA`, `sha-pin`, `commit sha`, `source.commit`, `install.json`, `re-pin`, `SPEC_REF`, `pin`, `pinned`, `pinning` across shipping content (excluding `docs/plans/`, license boilerplate, and `CHANGELOG.md` / `spec/CHANGELOG.md`) returns **zero** matches. 2. **Remote-first vendoring with local fallback.** `sync-spec.sh` queries the upstream remote for the latest `v*` tag first; only falls back to a local `SPEC_ROOT` checkout when the remote is unreachable. Removes the manual `git fetch --tags` step from the happy path; works in fresh environments without a pre-existing local clone. ## Changelog ### Changed - `scripts/sync-spec.sh`: - **No longer accepts `SPEC_REF`.** Always vendors the latest `v*` tag. - **Resolution path:** queries `SPEC_REMOTE_URL` (default `https://github.com/brettdavies/agentnative.git`) via `git ls-remote --tags --sort=-version:refname`, picks the latest `v*`, then shallow-clones that tag into a temp directory for extraction. On any remote failure, falls back to the existing `SPEC_ROOT`-based logic (default `$HOME/dev/agentnative-spec`). - **New env var `SPEC_REMOTE_URL`** for overriding the remote. - **Temp clone is auto-cleaned** on script exit via trap. ### Removed - All SHA-pin claims from public-facing markdown (`RELEASES.md`, `AGENTS.md`, `README.md`, `spec/README.md`, `CONTRIBUTING.md`): pipeline diagram's "site re-pins to commit SHA" step, the post-merge "site re-pins via its own PR" step, the `protect-tags.json` / `install endpoints` claims that tags are pinned to install endpoints, and the spec-vendor "pinned ref" / "pinned `SPEC_REF`" / "current pin is recorded" vocabulary across all docs. ### Documentation - `AGENTS.md` `## Spec sync` section: rewritten — single-step recipe (`scripts/sync-spec.sh` then review); notes the remote-first / local-fallback behavior and the `SPEC_REMOTE_URL` / `SPEC_ROOT` overrides. Commit-message example uses `<version>` placeholder instead of a hard-coded version. - `spec/README.md` `## Resync` section: rewritten similarly; drops the manually-maintained `**Current snapshot:**` line and points readers at `spec/VERSION` (which `sync-spec.sh` writes verbatim from upstream). - `RELEASES.md` post-merge sequence ends at the GitHub Release; replaces deleted step 5 with a one-liner pointing consumers at `bin/check-update`. ## Type of Change - [x] `chore`: Maintenance tasks (dependencies, config, etc.) - [x] `docs`: Documentation update ## Related Issues/Stories - Architecture: `docs/plans/2026-04-28-001-feat-update-check-mechanism-plan.md` U6 (retroactive plan-doc + repo SHA-pin scrub) — partial. Plan files themselves are not scrubbed in this PR (they are dev-only and contain the historical record of the SHA-pin removal effort). - Related PRs: PR #10 (spec re-vendor v0.3.0) — touches different `RELEASES.md` hunks; no conflict expected at merge. - Mirror: `agentnative-cli/scripts/sync-spec.sh` is the documented mirror of this script. Lockstep update PR will land there as a separate change. ## Testing - [x] Manual testing completed - [x] All tests passing **Test Summary:** - `markdownlint-cli2` clean on all touched files (PostToolUse hook ran on each edit). - `shellcheck --severity=style scripts/sync-spec.sh`: clean. - `bash -n scripts/sync-spec.sh`: clean. - **Remote-success path** verified live: queried `https://github.com/brettdavies/agentnative.git`, resolved `v0.3.0`, shallow-cloned, vendored 7 principles + VERSION + CHANGELOG.md. Output: `vendoring v0.3.0 (5cea8bf) from remote https://github.com/brettdavies/agentnative.git`. - **Remote-fail-local-success path** verified by setting `SPEC_REMOTE_URL=https://github.com/brettdavies/does-not-exist.git`. Output: `warning: remote query failed; falling back to local /home/brett/dev/agentnative-spec` followed by successful vendor from local. - **Both-fail path** verified by setting both bogus remote and bogus `SPEC_ROOT=/tmp/no-such-dir`. Output: `error: remote unreachable and SPEC_ROOT is not a git repository: /tmp/no-such-dir` with both URL and path printed for debugging. - Final grep across shipping content for the full pin-vocabulary regex: **zero** matches. ## Follow-ups (not blocking this PR) - `agentnative-cli/scripts/sync-spec.sh` is documented as a mirror of this script (only `DEST_DIR` differs). Lockstep PR coming in that repo to apply the same modernization. - `agentnative-site` does not yet have a `sync-spec.sh` (only a plan doc). When that script lands per `docs/plans/2026-04-23-001-feat-sync-spec-plan.md`, it should adopt the same remote-first / no-SPEC_REF shape. - Plan files under `docs/plans/` retain SHA-pin language as historical record. If a future cleanup pass wants to scrub them too, that's a separate dev-only PR.
brettdavies
added a commit
that referenced
this pull request
Apr 29, 2026
…oring (#11) ## Summary Two coordinated cleanups to `scripts/sync-spec.sh` and surrounding docs: 1. **Drop the SHA-pin model.** Eliminates all SHA-pin claims and the `SPEC_REF` override surface. After this PR merges, `rg` for any of `SHA`, `sha-pin`, `commit sha`, `source.commit`, `install.json`, `re-pin`, `SPEC_REF`, `pin`, `pinned`, `pinning` across shipping content (excluding `docs/plans/`, license boilerplate, and `CHANGELOG.md` / `spec/CHANGELOG.md`) returns **zero** matches. 2. **Remote-first vendoring with local fallback.** `sync-spec.sh` queries the upstream remote for the latest `v*` tag first; only falls back to a local `SPEC_ROOT` checkout when the remote is unreachable. Removes the manual `git fetch --tags` step from the happy path; works in fresh environments without a pre-existing local clone. ## Changelog ### Changed - `scripts/sync-spec.sh`: - **No longer accepts `SPEC_REF`.** Always vendors the latest `v*` tag. - **Resolution path:** queries `SPEC_REMOTE_URL` (default `https://github.com/brettdavies/agentnative.git`) via `git ls-remote --tags --sort=-version:refname`, picks the latest `v*`, then shallow-clones that tag into a temp directory for extraction. On any remote failure, falls back to the existing `SPEC_ROOT`-based logic (default `$HOME/dev/agentnative-spec`). - **New env var `SPEC_REMOTE_URL`** for overriding the remote. - **Temp clone is auto-cleaned** on script exit via trap. ### Removed - All SHA-pin claims from public-facing markdown (`RELEASES.md`, `AGENTS.md`, `README.md`, `spec/README.md`, `CONTRIBUTING.md`): pipeline diagram's "site re-pins to commit SHA" step, the post-merge "site re-pins via its own PR" step, the `protect-tags.json` / `install endpoints` claims that tags are pinned to install endpoints, and the spec-vendor "pinned ref" / "pinned `SPEC_REF`" / "current pin is recorded" vocabulary across all docs. ### Documentation - `AGENTS.md` `## Spec sync` section: rewritten — single-step recipe (`scripts/sync-spec.sh` then review); notes the remote-first / local-fallback behavior and the `SPEC_REMOTE_URL` / `SPEC_ROOT` overrides. Commit-message example uses `<version>` placeholder instead of a hard-coded version. - `spec/README.md` `## Resync` section: rewritten similarly; drops the manually-maintained `**Current snapshot:**` line and points readers at `spec/VERSION` (which `sync-spec.sh` writes verbatim from upstream). - `RELEASES.md` post-merge sequence ends at the GitHub Release; replaces deleted step 5 with a one-liner pointing consumers at `bin/check-update`. ## Type of Change - [x] `chore`: Maintenance tasks (dependencies, config, etc.) - [x] `docs`: Documentation update ## Related Issues/Stories - Architecture: `docs/plans/2026-04-28-001-feat-update-check-mechanism-plan.md` U6 (retroactive plan-doc + repo SHA-pin scrub) — partial. Plan files themselves are not scrubbed in this PR (they are dev-only and contain the historical record of the SHA-pin removal effort). - Related PRs: PR #10 (spec re-vendor v0.3.0) — touches different `RELEASES.md` hunks; no conflict expected at merge. - Mirror: `agentnative-cli/scripts/sync-spec.sh` is the documented mirror of this script. Lockstep update PR will land there as a separate change. ## Testing - [x] Manual testing completed - [x] All tests passing **Test Summary:** - `markdownlint-cli2` clean on all touched files (PostToolUse hook ran on each edit). - `shellcheck --severity=style scripts/sync-spec.sh`: clean. - `bash -n scripts/sync-spec.sh`: clean. - **Remote-success path** verified live: queried `https://github.com/brettdavies/agentnative.git`, resolved `v0.3.0`, shallow-cloned, vendored 7 principles + VERSION + CHANGELOG.md. Output: `vendoring v0.3.0 (5cea8bf) from remote https://github.com/brettdavies/agentnative.git`. - **Remote-fail-local-success path** verified by setting `SPEC_REMOTE_URL=https://github.com/brettdavies/does-not-exist.git`. Output: `warning: remote query failed; falling back to local /home/brett/dev/agentnative-spec` followed by successful vendor from local. - **Both-fail path** verified by setting both bogus remote and bogus `SPEC_ROOT=/tmp/no-such-dir`. Output: `error: remote unreachable and SPEC_ROOT is not a git repository: /tmp/no-such-dir` with both URL and path printed for debugging. - Final grep across shipping content for the full pin-vocabulary regex: **zero** matches. ## Follow-ups (not blocking this PR) - `agentnative-cli/scripts/sync-spec.sh` is documented as a mirror of this script (only `DEST_DIR` differs). Lockstep PR coming in that repo to apply the same modernization. - `agentnative-site` does not yet have a `sync-spec.sh` (only a plan doc). When that script lands per `docs/plans/2026-04-23-001-feat-sync-spec-plan.md`, it should adopt the same remote-first / no-SPEC_REF shape. - Plan files under `docs/plans/` retain SHA-pin language as historical record. If a future cleanup pass wants to scrub them too, that's a separate dev-only PR.
…ection Two coordinated edits: 1. Re-vendor spec/ against agentnative-spec v0.3.0 via SPEC_REF=v0.3.0 scripts/sync-spec.sh. Bundle now ships principle text matching anc.dev (status: active, all v0.3.0 prose). spec/VERSION bumps 0.2.0 -> 0.3.0; spec/CHANGELOG.md and all 7 principle files updated. 2. Add 'Spec re-vendoring' section to RELEASES.md documenting how skill releases coordinate with upstream agentnative-spec — re-vendor spec/ on each release, no site-side coordination claim. Durable framing, not specific to v0.3.0. The AGENTS.md SPEC_REF v0.2.1 -> v0.3.0 bump from the original release-branch in-cherry-pick is no-op against dev (PR #9 already rebased that example to v0.3.0).
f38e67a to
0f609a1
Compare
brettdavies
added a commit
that referenced
this pull request
Apr 29, 2026
…on (#10) ## Summary Re-vendor `spec/` from `agentnative-spec` v0.2.0 → v0.3.0 (status flips draft → active across all 7 principles, prose edits from upstream G11 red-team pass) and add a `## Spec re-vendoring` section to `RELEASES.md` documenting the upstream-only coordination model. Originally landed as an in-cherry-pick on `release/v0.2.0` (commit `837ab9a` → amended `1640460`). Converting to a real PR so the v0.2.0 CHANGELOG carries a curated bullet for the spec bump — direct cherry-picks have no PR body for `scripts/generate-changelog.sh` to extract from. After PR #11 (sync-spec modernization) landed on dev, this branch was rebased and the new RELEASES.md section was rewritten to drop `SPEC_REF` references that PR #11 eliminated. ## Changelog ### Changed - Spec content vendored under `spec/` re-vendored from `agentnative-spec` v0.2.0 to v0.3.0. All 7 principles flip `status: draft` → `status: active` (P1–P7 are now the shipped baseline); prose tightened across P1 (TUI parenthetical), P2 (sysexits acknowledgment), P4 (dependency-gating cleanup), P5 (`--dry-run` write-gate + retry hedge), P6 (SIGPIPE language-neutral + global-flags behavioral lead), P7 (LLM-vs-non-LLM cost generalization). No requirement IDs added/removed/renamed; no level changes. Full upstream context: agentnative `v0.3.0` CHANGELOG. ### Documentation - `RELEASES.md` gains a `## Spec re-vendoring` section between `## Why branch from main, not dev` and `## Version bump procedure`, documenting the `scripts/sync-spec.sh` re-vendor step. The script auto-resolves the latest upstream tag from the remote, so no manual version selection is needed at re-vendor time. ## Type of Change - [x] `chore`: Maintenance tasks (dependencies, config, etc.) - [x] `docs`: Documentation update ## Related Issues/Stories - Architecture: `docs/plans/2026-04-27-001-bootstrap-agentnative-skill-plan.md` task #15 (in-cherry-pick edits subsection) - Related PRs: PR #11 (`chore(sync-spec): drop SHA-pin claims, modernize to remote-first vendoring`) — already merged; this PR was rebased onto dev after #11 landed and its added section was updated to match the post-#11 vocabulary. - Replaces: in-cherry-pick commit `1640460` on `release/v0.2.0`. After this PR squash-lands on `dev`, the release branch will be replayed to swap `1640460` for this PR's squash commit (which carries the curated CHANGELOG bullet). ## Testing - [x] Manual testing completed - [x] All tests passing **Test Summary:** - `markdownlint-cli2` clean on all touched files (PostToolUse hook ran on each edit; explicit pre-push run after the post-rebase RELEASES.md fix: 0 errors). - `shellcheck` n/a (no shell changes — this PR no longer touches `scripts/sync-spec.sh`; that surface is owned by PR #11 which is already on dev). - `spec/VERSION` confirmed at `0.3.0`. - `spec/CHANGELOG.md` carries the curated v0.3.0 entry from upstream agentnative. - Post-rebase diff against `origin/dev`: 10 files, +294/-60 — only `spec/*` (vendored content) and `RELEASES.md` (new section). No conflict against PR #11's already-landed `sync-spec.sh` modernization. - Vocabulary check: `rg` for `SPEC_REF` in this PR's diff returns zero matches (was non-zero before rebase; fixed by amending the RELEASES.md section to use the auto-resolve framing). ## Files Modified **Modified:** - `RELEASES.md` — `+8 lines`: new `## Spec re-vendoring` section between existing sections. - `spec/VERSION` — `0.2.0` → `0.3.0`. - `spec/CHANGELOG.md` — re-vendored from upstream; carries the v0.3.0 entry. - `spec/principles/p1-non-interactive-by-default.md` — re-vendored. - `spec/principles/p2-structured-parseable-output.md` — re-vendored. - `spec/principles/p3-progressive-help-discovery.md` — re-vendored. - `spec/principles/p4-fail-fast-actionable-errors.md` — re-vendored. - `spec/principles/p5-safe-retries-mutation-boundaries.md` — re-vendored. - `spec/principles/p6-composable-predictable-command-structure.md` — re-vendored. - `spec/principles/p7-bounded-high-signal-responses.md` — re-vendored. ## Breaking Changes - [x] No breaking changes The principle status flip from `draft` → `active` is a state-of-spec signal, not a contract change. Requirement IDs, levels, and applicability are unchanged. ## Deployment Notes - [x] No special deployment steps required Vendored content only; consumers pick up the new spec on their next `git pull --ff-only` (driven by `bin/check-update`). ## 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 (CI: markdownlint + shellcheck pass) - [x] No new warnings or errors introduced - [x] Changes are backward compatible
brettdavies
added a commit
that referenced
this pull request
Apr 29, 2026
…oring (#11) ## Summary Two coordinated cleanups to `scripts/sync-spec.sh` and surrounding docs: 1. **Drop the SHA-pin model.** Eliminates all SHA-pin claims and the `SPEC_REF` override surface. After this PR merges, `rg` for any of `SHA`, `sha-pin`, `commit sha`, `source.commit`, `install.json`, `re-pin`, `SPEC_REF`, `pin`, `pinned`, `pinning` across shipping content (excluding `docs/plans/`, license boilerplate, and `CHANGELOG.md` / `spec/CHANGELOG.md`) returns **zero** matches. 2. **Remote-first vendoring with local fallback.** `sync-spec.sh` queries the upstream remote for the latest `v*` tag first; only falls back to a local `SPEC_ROOT` checkout when the remote is unreachable. Removes the manual `git fetch --tags` step from the happy path; works in fresh environments without a pre-existing local clone. ## Changelog ### Changed - `scripts/sync-spec.sh`: - **No longer accepts `SPEC_REF`.** Always vendors the latest `v*` tag. - **Resolution path:** queries `SPEC_REMOTE_URL` (default `https://github.com/brettdavies/agentnative.git`) via `git ls-remote --tags --sort=-version:refname`, picks the latest `v*`, then shallow-clones that tag into a temp directory for extraction. On any remote failure, falls back to the existing `SPEC_ROOT`-based logic (default `$HOME/dev/agentnative-spec`). - **New env var `SPEC_REMOTE_URL`** for overriding the remote. - **Temp clone is auto-cleaned** on script exit via trap. ### Removed - All SHA-pin claims from public-facing markdown (`RELEASES.md`, `AGENTS.md`, `README.md`, `spec/README.md`, `CONTRIBUTING.md`): pipeline diagram's "site re-pins to commit SHA" step, the post-merge "site re-pins via its own PR" step, the `protect-tags.json` / `install endpoints` claims that tags are pinned to install endpoints, and the spec-vendor "pinned ref" / "pinned `SPEC_REF`" / "current pin is recorded" vocabulary across all docs. ### Documentation - `AGENTS.md` `## Spec sync` section: rewritten — single-step recipe (`scripts/sync-spec.sh` then review); notes the remote-first / local-fallback behavior and the `SPEC_REMOTE_URL` / `SPEC_ROOT` overrides. Commit-message example uses `<version>` placeholder instead of a hard-coded version. - `spec/README.md` `## Resync` section: rewritten similarly; drops the manually-maintained `**Current snapshot:**` line and points readers at `spec/VERSION` (which `sync-spec.sh` writes verbatim from upstream). - `RELEASES.md` post-merge sequence ends at the GitHub Release; replaces deleted step 5 with a one-liner pointing consumers at `bin/check-update`. ## Type of Change - [x] `chore`: Maintenance tasks (dependencies, config, etc.) - [x] `docs`: Documentation update ## Related Issues/Stories - Architecture: `docs/plans/2026-04-28-001-feat-update-check-mechanism-plan.md` U6 (retroactive plan-doc + repo SHA-pin scrub) — partial. Plan files themselves are not scrubbed in this PR (they are dev-only and contain the historical record of the SHA-pin removal effort). - Related PRs: PR #10 (spec re-vendor v0.3.0) — touches different `RELEASES.md` hunks; no conflict expected at merge. - Mirror: `agentnative-cli/scripts/sync-spec.sh` is the documented mirror of this script. Lockstep update PR will land there as a separate change. ## Testing - [x] Manual testing completed - [x] All tests passing **Test Summary:** - `markdownlint-cli2` clean on all touched files (PostToolUse hook ran on each edit). - `shellcheck --severity=style scripts/sync-spec.sh`: clean. - `bash -n scripts/sync-spec.sh`: clean. - **Remote-success path** verified live: queried `https://github.com/brettdavies/agentnative.git`, resolved `v0.3.0`, shallow-cloned, vendored 7 principles + VERSION + CHANGELOG.md. Output: `vendoring v0.3.0 (5cea8bf) from remote https://github.com/brettdavies/agentnative.git`. - **Remote-fail-local-success path** verified by setting `SPEC_REMOTE_URL=https://github.com/brettdavies/does-not-exist.git`. Output: `warning: remote query failed; falling back to local /home/brett/dev/agentnative-spec` followed by successful vendor from local. - **Both-fail path** verified by setting both bogus remote and bogus `SPEC_ROOT=/tmp/no-such-dir`. Output: `error: remote unreachable and SPEC_ROOT is not a git repository: /tmp/no-such-dir` with both URL and path printed for debugging. - Final grep across shipping content for the full pin-vocabulary regex: **zero** matches. ## Follow-ups (not blocking this PR) - `agentnative-cli/scripts/sync-spec.sh` is documented as a mirror of this script (only `DEST_DIR` differs). Lockstep PR coming in that repo to apply the same modernization. - `agentnative-site` does not yet have a `sync-spec.sh` (only a plan doc). When that script lands per `docs/plans/2026-04-23-001-feat-sync-spec-plan.md`, it should adopt the same remote-first / no-SPEC_REF shape. - Plan files under `docs/plans/` retain SHA-pin language as historical record. If a future cleanup pass wants to scrub them too, that's a separate dev-only PR.
brettdavies
added a commit
that referenced
this pull request
Apr 29, 2026
Bump VERSION to 0.2.0 and regenerate CHANGELOG via scripts/generate-changelog.sh against the cherry-picked PRs (#1, #2, #3, #4, #6, #7, #8, #9, #10, #11). PR bodies were audited by parallel subagents against .github/pull_request_template.md before this regen — empty stubs removed, missing template sections added, internal-detail bullets moved out of ## Changelog, PR #11's nested sub-bullets flattened so the generator preserves them. Squash-merge of release/v0.2.0 onto main becomes the v0.2.0 anchor.
12 tasks
brettdavies
added a commit
that referenced
this pull request
Apr 29, 2026
…on (#10) ## Summary Re-vendor `spec/` from `agentnative-spec` v0.2.0 → v0.3.0 (status flips draft → active across all 7 principles, prose edits from upstream G11 red-team pass) and add a `## Spec re-vendoring` section to `RELEASES.md` documenting the upstream-only coordination model. Originally landed as an in-cherry-pick on `release/v0.2.0` (commit `837ab9a` → amended `1640460`). Converting to a real PR so the v0.2.0 CHANGELOG carries a curated bullet for the spec bump — direct cherry-picks have no PR body for `scripts/generate-changelog.sh` to extract from. After PR #11 (sync-spec modernization) landed on dev, this branch was rebased and the new RELEASES.md section was rewritten to drop `SPEC_REF` references that PR #11 eliminated. ## Changelog ### Changed - Spec content vendored under `spec/` re-vendored from `agentnative-spec` v0.2.0 to v0.3.0. All 7 principles flip `status: draft` → `status: active` (P1–P7 are now the shipped baseline); prose tightened across P1 (TUI parenthetical), P2 (sysexits acknowledgment), P4 (dependency-gating cleanup), P5 (`--dry-run` write-gate + retry hedge), P6 (SIGPIPE language-neutral + global-flags behavioral lead), P7 (LLM-vs-non-LLM cost generalization). No requirement IDs added/removed/renamed; no level changes. Full upstream context: agentnative `v0.3.0` CHANGELOG. ### Documentation - `RELEASES.md` gains a `## Spec re-vendoring` section between `## Why branch from main, not dev` and `## Version bump procedure`, documenting the `scripts/sync-spec.sh` re-vendor step. The script auto-resolves the latest upstream tag from the remote, so no manual version selection is needed at re-vendor time. ## Type of Change - [x] `chore`: Maintenance tasks (dependencies, config, etc.) - [x] `docs`: Documentation update ## Related Issues/Stories - Architecture: `docs/plans/2026-04-27-001-bootstrap-agentnative-skill-plan.md` task #15 (in-cherry-pick edits subsection) - Related PRs: PR #11 (`chore(sync-spec): drop SHA-pin claims, modernize to remote-first vendoring`) — already merged; this PR was rebased onto dev after #11 landed and its added section was updated to match the post-#11 vocabulary. - Replaces: in-cherry-pick commit `1640460` on `release/v0.2.0`. After this PR squash-lands on `dev`, the release branch will be replayed to swap `1640460` for this PR's squash commit (which carries the curated CHANGELOG bullet). ## Testing - [x] Manual testing completed - [x] All tests passing **Test Summary:** - `markdownlint-cli2` clean on all touched files (PostToolUse hook ran on each edit; explicit pre-push run after the post-rebase RELEASES.md fix: 0 errors). - `shellcheck` n/a (no shell changes — this PR no longer touches `scripts/sync-spec.sh`; that surface is owned by PR #11 which is already on dev). - `spec/VERSION` confirmed at `0.3.0`. - `spec/CHANGELOG.md` carries the curated v0.3.0 entry from upstream agentnative. - Post-rebase diff against `origin/dev`: 10 files, +294/-60 — only `spec/*` (vendored content) and `RELEASES.md` (new section). No conflict against PR #11's already-landed `sync-spec.sh` modernization. - Vocabulary check: `rg` for `SPEC_REF` in this PR's diff returns zero matches (was non-zero before rebase; fixed by amending the RELEASES.md section to use the auto-resolve framing). ## Files Modified **Modified:** - `RELEASES.md` — `+8 lines`: new `## Spec re-vendoring` section between existing sections. - `spec/VERSION` — `0.2.0` → `0.3.0`. - `spec/CHANGELOG.md` — re-vendored from upstream; carries the v0.3.0 entry. - `spec/principles/p1-non-interactive-by-default.md` — re-vendored. - `spec/principles/p2-structured-parseable-output.md` — re-vendored. - `spec/principles/p3-progressive-help-discovery.md` — re-vendored. - `spec/principles/p4-fail-fast-actionable-errors.md` — re-vendored. - `spec/principles/p5-safe-retries-mutation-boundaries.md` — re-vendored. - `spec/principles/p6-composable-predictable-command-structure.md` — re-vendored. - `spec/principles/p7-bounded-high-signal-responses.md` — re-vendored. ## Breaking Changes - [x] No breaking changes The principle status flip from `draft` → `active` is a state-of-spec signal, not a contract change. Requirement IDs, levels, and applicability are unchanged. ## Deployment Notes - [x] No special deployment steps required Vendored content only; consumers pick up the new spec on their next `git pull --ff-only` (driven by `bin/check-update`). ## 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 (CI: markdownlint + shellcheck pass) - [x] No new warnings or errors introduced - [x] Changes are backward compatible
brettdavies
added a commit
that referenced
this pull request
Apr 29, 2026
…oring (#11) ## Summary Two coordinated cleanups to `scripts/sync-spec.sh` and surrounding docs: 1. **Drop the SHA-pin model.** Eliminates all SHA-pin claims and the `SPEC_REF` override surface. After this PR merges, `rg` for any of `SHA`, `sha-pin`, `commit sha`, `source.commit`, `install.json`, `re-pin`, `SPEC_REF`, `pin`, `pinned`, `pinning` across shipping content (excluding `docs/plans/`, license boilerplate, and `CHANGELOG.md` / `spec/CHANGELOG.md`) returns **zero** matches. 2. **Remote-first vendoring with local fallback.** `sync-spec.sh` queries the upstream remote for the latest `v*` tag first; only falls back to a local `SPEC_ROOT` checkout when the remote is unreachable. Removes the manual `git fetch --tags` step from the happy path; works in fresh environments without a pre-existing local clone. ## Changelog ### Changed - `scripts/sync-spec.sh`: - **No longer accepts `SPEC_REF`.** Always vendors the latest `v*` tag. - **Resolution path:** queries `SPEC_REMOTE_URL` (default `https://github.com/brettdavies/agentnative.git`) via `git ls-remote --tags --sort=-version:refname`, picks the latest `v*`, then shallow-clones that tag into a temp directory for extraction. On any remote failure, falls back to the existing `SPEC_ROOT`-based logic (default `$HOME/dev/agentnative-spec`). - **New env var `SPEC_REMOTE_URL`** for overriding the remote. - **Temp clone is auto-cleaned** on script exit via trap. ### Removed - All SHA-pin claims from public-facing markdown (`RELEASES.md`, `AGENTS.md`, `README.md`, `spec/README.md`, `CONTRIBUTING.md`): pipeline diagram's "site re-pins to commit SHA" step, the post-merge "site re-pins via its own PR" step, the `protect-tags.json` / `install endpoints` claims that tags are pinned to install endpoints, and the spec-vendor "pinned ref" / "pinned `SPEC_REF`" / "current pin is recorded" vocabulary across all docs. ### Documentation - `AGENTS.md` `## Spec sync` section: rewritten — single-step recipe (`scripts/sync-spec.sh` then review); notes the remote-first / local-fallback behavior and the `SPEC_REMOTE_URL` / `SPEC_ROOT` overrides. Commit-message example uses `<version>` placeholder instead of a hard-coded version. - `spec/README.md` `## Resync` section: rewritten similarly; drops the manually-maintained `**Current snapshot:**` line and points readers at `spec/VERSION` (which `sync-spec.sh` writes verbatim from upstream). - `RELEASES.md` post-merge sequence ends at the GitHub Release; replaces deleted step 5 with a one-liner pointing consumers at `bin/check-update`. ## Type of Change - [x] `chore`: Maintenance tasks (dependencies, config, etc.) - [x] `docs`: Documentation update ## Related Issues/Stories - Architecture: `docs/plans/2026-04-28-001-feat-update-check-mechanism-plan.md` U6 (retroactive plan-doc + repo SHA-pin scrub) — partial. Plan files themselves are not scrubbed in this PR (they are dev-only and contain the historical record of the SHA-pin removal effort). - Related PRs: PR #10 (spec re-vendor v0.3.0) — touches different `RELEASES.md` hunks; no conflict expected at merge. - Mirror: `agentnative-cli/scripts/sync-spec.sh` is the documented mirror of this script. Lockstep update PR will land there as a separate change. ## Testing - [x] Manual testing completed - [x] All tests passing **Test Summary:** - `markdownlint-cli2` clean on all touched files (PostToolUse hook ran on each edit). - `shellcheck --severity=style scripts/sync-spec.sh`: clean. - `bash -n scripts/sync-spec.sh`: clean. - **Remote-success path** verified live: queried `https://github.com/brettdavies/agentnative.git`, resolved `v0.3.0`, shallow-cloned, vendored 7 principles + VERSION + CHANGELOG.md. Output: `vendoring v0.3.0 (5cea8bf) from remote https://github.com/brettdavies/agentnative.git`. - **Remote-fail-local-success path** verified by setting `SPEC_REMOTE_URL=https://github.com/brettdavies/does-not-exist.git`. Output: `warning: remote query failed; falling back to local /home/brett/dev/agentnative-spec` followed by successful vendor from local. - **Both-fail path** verified by setting both bogus remote and bogus `SPEC_ROOT=/tmp/no-such-dir`. Output: `error: remote unreachable and SPEC_ROOT is not a git repository: /tmp/no-such-dir` with both URL and path printed for debugging. - Final grep across shipping content for the full pin-vocabulary regex: **zero** matches. ## Follow-ups (not blocking this PR) - `agentnative-cli/scripts/sync-spec.sh` is documented as a mirror of this script (only `DEST_DIR` differs). Lockstep PR coming in that repo to apply the same modernization. - `agentnative-site` does not yet have a `sync-spec.sh` (only a plan doc). When that script lands per `docs/plans/2026-04-23-001-feat-sync-spec-plan.md`, it should adopt the same remote-first / no-SPEC_REF shape. - Plan files under `docs/plans/` retain SHA-pin language as historical record. If a future cleanup pass wants to scrub them too, that's a separate dev-only PR.
brettdavies
added a commit
that referenced
this pull request
Apr 29, 2026
Bump VERSION to 0.2.0 and regenerate CHANGELOG via scripts/generate-changelog.sh against the cherry-picked PRs (#1, #2, #3, #4, #6, #7, #8, #9, #10, #11, #13). PR bodies were audited by parallel subagents against .github/pull_request_template.md before this regen. PR #13 added CHANGELOG.md to .markdownlint-cli2.yaml ignores so the generated long-line bullets no longer trip MD013 on the release CI run. Squash-merge of release/v0.2.0 onto main becomes the v0.2.0 anchor.
brettdavies
added a commit
that referenced
this pull request
Apr 29, 2026
## Summary First public release of the `agent-native-cli` skill bundle (`agentnative-skill` repo). Establishes the canonical brettdavies cherry-pick release pattern (`feature → dev → release/* → main`), ships the flat install layout consumers will pull via plain `git clone`, and lands the consumer-side update-check mechanism that replaces the deprecated `install.json` SHA-pin advisory. Cherry-picks 10 dev PRs (#1–#4, #6–#11, #13) onto `origin/main` plus three direct-to-release-branch fixup commits (`9f6e276`, `23e1a76` from the bootstrap window) and the curated `chore(release): v0.2.0` commit. PR #5 (docs-only public-flip follow-up) stayed on `dev` per the cherry-pick rule. The original in-cherry-pick spec re-vendor (`837ab9a` → `1640460`) was converted to a real PR (#10) so the v0.2.0 CHANGELOG carries a curated bullet for the spec v0.2.0 → v0.3.0 bump. PR-body template alignment was audited by parallel subagents before this regeneration — empty stubs removed, missing template sections added, internal-detail bullets moved out of `## Changelog`, PR #11's nested sub-bullets flattened. ## Changelog ### Added - Version-controlled GitHub repository rulesets for `main`, `dev`, and release tags (`v*`). Apply procedure documented in `.github/rulesets/README.md`. by @brettdavies in #1 - `AGENTS.md` (root) describing the bundle layout, lint commands, branch model, and hard rules for agents. by @brettdavies in #2 - `RELEASES.md` (root) documenting a release procedure for this repo (later rewritten in #3 to the canonical full `release/*` pattern). - `.github/pull_request_template.md` (canonical PR template). - `.github/workflows/guard-main-docs.yml` caller for the `brettdavies/.github` reusable workflow that blocks `docs/plans/`, `docs/solutions/`, `docs/brainstorms/`, `docs/reviews/` from PRs targeting `main`. - `cliff.toml` — git-cliff configuration mirroring sibling repos. by @brettdavies in #3 - `scripts/generate-changelog.sh` — release-time CHANGELOG generator. Reads PR-body `## Changelog` sections and prepends a curated, attributed `[X.Y.Z]` section. Authoritative; never hand-edit `CHANGELOG.md`. - `CONTRIBUTING.md` — how to propose changes, link to release procedure. - `.github/ISSUE_TEMPLATE/bug_report.md` + `bundle_proposal.md` (replaces `principle_proposal.md` with corrected routing). - Vendored `spec/` tree from `agentnative-spec` — `VERSION`, `CHANGELOG.md`, `README.md`, and seven `principles/p*.md` files with machine-readable `requirements[]` frontmatter. The skill points at this canonical text instead of paraphrasing. by @brettdavies in #4 - `getting-started.md` covering three working agent loops (existing CLI / new Rust / other language), canonical `anc check --output json` invocations, and a "where things live" map. - `scripts/sync-spec.sh` for re-vendoring `agentnative-spec` on demand. - `LICENSE-APACHE` — dual-license under MIT or Apache-2.0 (consumer's choice). by @brettdavies in #6 - `bin/check-update` — gstack-style consumer-side update-check. Compares the installed `VERSION` against the producer repo's `main`, emits `UPGRADE_AVAILABLE <local> <remote>`, with cache TTL (60 min UP_TO_DATE / 720 min UPGRADE_AVAILABLE) and 3-level snooze (24h / 48h / 7d). State directory: `$HOME/.cache/agent-native-cli/`. by @brettdavies in #8 - `SKILL.md` `## Update check` section documenting the script's invocation and the `AskUserQuestion`-driven upgrade flow. ### Changed - **BREAKING (install layout):** Skill content lives at the repo root (`SKILL.md`, `bin/`, `spec/`, `references/`, `templates/`, `VERSION`). Plain `git clone --depth 1` and `git pull --ff-only` are the load-bearing install + update commands; no sparse-checkout magic, no post-install scripts. by @brettdavies in #9 (final flat shape; intermediate `bundle/` indirection from #3 reverted before launch). - License changed from MIT-only to dual MIT or Apache-2.0 (no MIT compatibility regression). by @brettdavies in #6 - Documentation now points at `https://anc.dev/skill` instead of `https://anc.dev/install`. by @brettdavies in #7 - Spec content vendored under `spec/` re-vendored from `agentnative-spec` v0.2.0 to v0.3.0. All 7 principles flip `status: draft` → `status: active`; prose tightened across P1–P7 from upstream's G11 red-team pass. No requirement IDs added/removed/renamed; no level changes. by @brettdavies in #10 - `scripts/sync-spec.sh` no longer accepts `SPEC_REF`. The script always vendors the latest `v*` tag, queried from `SPEC_REMOTE_URL` (default `https://github.com/brettdavies/agentnative.git`) via `git ls-remote --tags --sort=-version:refname` and shallow-cloned for extraction. On any remote failure, falls back to the existing `SPEC_ROOT`-based logic (default `$HOME/dev/agentnative-spec`). New env var `SPEC_REMOTE_URL` overrides the remote; the temp clone is auto-cleaned on script exit via trap. by @brettdavies in #11 ### Fixed - Harden `bin/check-update` against malformed local `VERSION` (apply SemVer regex; malformed → silent exit) and against curl failure being cached as UP_TO_DATE (skip cache write on network failure so the next invocation retries). by @brettdavies in #8 - Align table pipes in `SKILL.md` and `getting-started.md` (markdownlint MD060). by @brettdavies in #9 ### Documentation - `README.md` — License section rewritten to reflect dual licensing and link both LICENSE files; tree row updated. by @brettdavies in #6 - `CONTRIBUTING.md` — License section rewritten: contributions are dual-licensed at the consumer's option, no CLA, with an explicit pointer to the Apache §3 patent grant. - - `.markdownlint-cli2.yaml` excludes `CHANGELOG.md` from linting (matches the existing exclusion for `spec/CHANGELOG.md`). Aligns lint behavior with the `scripts/generate-changelog.sh` regen flow. by @brettdavies in #13 - All public-facing markdown (`RELEASES.md`, `AGENTS.md`, `README.md`, `spec/README.md`, `CONTRIBUTING.md`) scrubbed of SHA-pin model vocabulary: pipeline diagram's "site re-pins to commit SHA" step, the post-merge "site re-pins via its own PR" step, the `protect-tags.json` / `install endpoints` claims that tags are pinned to install endpoints, and the spec-vendor "pinned ref" / "pinned `SPEC_REF`" / "current pin is recorded" vocabulary across all docs. The new model is plain `git clone` + `bin/check-update` for staleness; nothing pins to anything cross-repo. by @brettdavies in #11 ### Removed - `bundle/scripts/check-compliance.sh` and 24 `bundle/scripts/checks/check-*.sh` files (plus `_helpers.sh`). `anc check --output json` is the canonical replacement. by @brettdavies in #4 - `bundle/references/principles-deep-dive.md` (419-line hand-typed paraphrase of the spec; canonical text now lives at `spec/principles/`). - `.github/ISSUE_TEMPLATE/principle_proposal.md` (replaced by `bundle_proposal.md` with corrected routing). - `.shellcheckrc` (its three disables targeted the deleted bundle scripts; producer scripts pass shellcheck unmodified). ## Type of Change - [x] `chore`: Maintenance tasks (release engineering) - [x] `BREAKING CHANGE`: Install layout changes (no v0.1.0 consumers exist; see Breaking Changes section) ## Related Issues/Stories - Architecture: `docs/plans/2026-04-27-001-bootstrap-agentnative-skill-plan.md` — bootstrap plan (task #15: launch-eve cherry-pick + admin-bypass decision recorded `2026-04-28`). - Architecture: `docs/plans/2026-04-28-001-feat-update-check-mechanism-plan.md` — update-check mechanism plan (drove PR #8 + the SHA-pin removal across PR #11 / repo docs). - Cross-repo: `agentnative-cli` — `scripts/sync-spec.sh` is the documented mirror; lockstep modernization is being driven in a parallel session. - Cross-repo: `agentnative-site` — installs this skill via `https://anc.dev/skill`; the `install.json` SHA-pin advisory is being removed in that repo (separate PR there) per the update-check plan's downstream coordination. ## Testing - [x] Manual testing completed - [x] All tests passing (CI: markdownlint + shellcheck on every cherry-picked commit) **Test Summary:** - `markdownlint-cli2` clean across the cherry-pick chain (PostToolUse hook ran on every edit; CI re-verified each PR). - `shellcheck --severity=style scripts/sync-spec.sh bin/check-update`: clean. - `bash -n scripts/sync-spec.sh bin/check-update`: clean. - `bin/check-update` 40-test battery (PR #8): 40 pass / 0 fail (unit + integration + e2e + red-team). - `scripts/sync-spec.sh` remote-success path verified live: queried `https://github.com/brettdavies/agentnative.git`, resolved `v0.3.0`, shallow-cloned, vendored 7 principles + VERSION + CHANGELOG. Remote-fail-local-success path verified by setting bogus `SPEC_REMOTE_URL` (warning + fallback to `$HOME/dev/agentnative-spec`). Both-fail path verified with bogus URL + bogus `SPEC_ROOT` (hard error with both printed). - Vocabulary check: `rg` for `SHA-pin` / `commit SHA` / `source.commit` / `install.json` / `re-pin` / `SPEC_REF` / `pin` / `pinned` / `pinning` across shipping content (excluding `docs/plans/`, license boilerplate, changelogs, vendored `spec/principles/`): **zero** matches. - PR-body template alignment: parallel audit subagents reported `verified=true` for PRs #1–#11. ## Files Modified **Cherry-picked from dev (squash commits):** - `8be19e6` — feat(bundle): consumer-side update-check mechanism (U1+U2) [#8] - `34b1da3` — refactor!: flatten bundle/* to repo root for plain git-clone install [#9] - `4461806` — chore(spec): re-vendor spec/ to v0.3.0 + RELEASES spec-revendor section [#10] - `fb50d18` — chore(sync-spec): drop SHA-pin claims, modernize to remote-first vendoring [#11] - `e67523e` — chore(lint): exclude CHANGELOG.md from markdownlint [#13] (added during release prep to unblock MD013 on the rich generated CHANGELOG) **Direct-to-release-branch fixup commits (bootstrap window):** - `9f6e276` — chore(rulesets): drop `.github/rulesets/README.md` - `23e1a76` — docs(bundle): trim trailing platform comment on `cargo install` line **Curated release commit:** - `d66d5bd` — chore(release): v0.2.0 (VERSION bump + regenerated CHANGELOG.md) **Plus PRs #1–#7 cherry-picked earlier in the bootstrap window:** rulesets (#1), AGENTS/PR-template/RELEASES scaffold (#2), bundle restructure + cliff.toml (#3), spec vendoring + skill pivot (#4), dual licensing (#6), `/skill` endpoint rename (#7). ## Breaking Changes - [x] Breaking changes described below **Install layout (PR #4 + PR #9):** the skill bundle's directory shape went from a paraphrased pre-anc layout (v0.1.0) → `bundle/` subdirectory (PR #3) → flat root (PR #9). The flat root is the load-bearing final shape: `git clone --depth 1` lands `SKILL.md` at the install root where Claude Code, Codex, Cursor, and OpenCode auto-discover it. **No real-world migration impact:** v0.1.0 has zero installed consumers (the install endpoint at `https://anc.dev/skill` is gated by this very release). The breaking-change classification is for SemVer hygiene, not user-impacting. **Bundle surface contract (PR #4):** the skill no longer ships shell-script compliance checks (`bundle/scripts/check-compliance.sh` + 24 `check-*.sh` files). `anc check --output json` is the canonical replacement; downstream tools that scraped the old shell scripts must migrate to `anc`. ## Deployment Notes - [x] Deployment steps documented below **Pre-merge admin-bypass (one-time):** the `protect-main` ruleset requires `markdownlint`, `shellcheck`, and `guard-docs / check-forbidden-docs` as required status checks. The third comes from `guard-main-docs.yml`, which only exists on `dev` (it's part of this very release). For the FIRST release PR, GitHub evaluates `pull_request` workflows from `main` (the base), so the guard-docs check cannot run. Resolution: admin-bypass this single PR via the existing `bypass_actors` on `protect-main` (`actor_type: RepositoryRole, actor_id: 5, bypass_mode: always`). One-off; subsequent releases run cleanly. See bootstrap plan §15 (decision recorded `2026-04-28`). **Post-merge sequence (per RELEASES.md):** 1. Tag the squash commit on `main`: ```bash git checkout main && git pull git tag -a v0.2.0 -m "v0.2.0" git push origin v0.2.0 ``` 2. Create the GitHub Release with the v0.2.0 CHANGELOG section as notes: ```bash gh release create v0.2.0 --title "v0.2.0" \ --notes "$(awk '/^## \[0\.2\.0\]/{flag=1; next} /^## \[/{flag=0} flag' CHANGELOG.md)" ``` 3. Consumers detect the new release on their next `bin/check-update` run; no site-side coordination step (the SHA-pin model is gone, per #11). ## 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 (CI green on every cherry-picked commit) - [x] No new warnings or errors introduced - [x] Changes are backward compatible (or breaking changes documented in Breaking Changes section) ## Additional Context - Full v0.2.0 entry in [`CHANGELOG.md`](./CHANGELOG.md) (this section is a copy; CHANGELOG.md is canonical). - The PR-body audit run produced template-aligned bodies for all 11 merged PRs; CHANGELOG.md was regenerated from the audited bodies before this PR opened.
brettdavies
added a commit
that referenced
this pull request
Apr 29, 2026
Bootstrap plan (2026-04-27-001): - Task #15 (v0.2.0 release) flipped to checked. Step 3a complete via PR #12 squash-merge to main 2026-04-29 ~16:38 PT (commit 2b10c84). Step 3b (tag + GitHub Release) still pending; commands documented in PR #12 body's Deployment Notes. - Added an "Executed scope (2026-04-29)" addendum capturing the three axes the launch-eve plan diverged on: (a) in-cherry-pick spec re-vendor was converted to a real PR (#10) so the v0.2.0 CHANGELOG carries a curated bullet for the spec bump; (b) two extra PRs added to launch-wave scope mid-execution — PR #11 (SHA-pin scrub + sync-spec.sh modernization) and PR #13 (CHANGELOG.md markdownlint exclusion); (c) the launch-eve admin-bypass concern was pessimistic — guard-docs check ran cleanly from PR head, no bypass needed. - Final cherry-pick chain table appended for the historical record. Update-check mechanism plan (2026-04-28-001) — first commit of this plan to dev: - U1 (bin/check-update script) flipped to done via PR #8. - U2 (SKILL.md preamble + bundle-doc pin-vocab drop) flipped to done via PR #8; broader pin-vocab scrub across RELEASES/AGENTS/README/ CONTRIBUTING/spec/README shipped via PR #11 (added mid-flight to launch-wave scope per U6). - U6 (retroactive scrub) flipped to done for skill scope: PR #11 handled the skill-side cleanup; bootstrap plan task #15 + central tracker (gstack file, separate edit) updated 2026-04-29. Site-side scrubs (U3-U5 + agentnative-site cross-repo-canonical-pointer.md) still pending in the user's parallel session. - U3-U5 remain unchecked — agentnative-site scope, parallel session. The central launch tracker (~/.gstack/projects/brettdavies-agentnative/brett-dev-design-show-hn- launch-inversion-20260427-144756.md) was updated in parallel to: - Mark step 3a done (PR #12 squash 2b10c84) and step 3b pending. - Drop SHA-pin re-pin claims from steps 4 + 5 + the launch-day timeline + the per-repo plan table + the dev-status block (per U6 scrub instructions). Replaced with references to bin/check-update (PR #8) and a note that source.commit is being removed from skill.json in agentnative-site U3 (parallel session). - Step 4 retains the install.json -> skill.json file-rename context from PR #44 since that's still in scope for the site cherry-pick. That tracker is not a git-repo file, so the edits land directly on disk; this commit only touches the two plan files in this repo.
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
Re-vendor
spec/fromagentnative-specv0.2.0 → v0.3.0 (status flips draft → active across all 7 principles, proseedits from upstream G11 red-team pass) and add a
## Spec re-vendoringsection toRELEASES.mddocumenting theupstream-only coordination model.
Originally landed as an in-cherry-pick on
release/v0.2.0(commit837ab9a→ amended1640460). Converting to a realPR so the v0.2.0 CHANGELOG carries a curated bullet for the spec bump — direct cherry-picks have no PR body for
scripts/generate-changelog.shto extract from. After PR #11 (sync-spec modernization) landed on dev, this branch wasrebased and the new RELEASES.md section was rewritten to drop
SPEC_REFreferences that PR #11 eliminated.Changelog
Changed
spec/re-vendored fromagentnative-specv0.2.0 to v0.3.0. All 7 principles flipstatus: draft→status: active(P1–P7 are now the shipped baseline); prose tightened across P1 (TUIparenthetical), P2 (sysexits acknowledgment), P4 (dependency-gating cleanup), P5 (
--dry-runwrite-gate + retryhedge), P6 (SIGPIPE language-neutral + global-flags behavioral lead), P7 (LLM-vs-non-LLM cost generalization). No
requirement IDs added/removed/renamed; no level changes. Full upstream context: agentnative
v0.3.0CHANGELOG.Documentation
RELEASES.mdgains a## Spec re-vendoringsection between## Why branch from main, not devand## Version bump procedure, documenting thescripts/sync-spec.shre-vendor step. The script auto-resolves the latest upstream tagfrom the remote, so no manual version selection is needed at re-vendor time.
Type of Change
chore: Maintenance tasks (dependencies, config, etc.)docs: Documentation updateRelated Issues/Stories
docs/plans/2026-04-27-001-bootstrap-agentnative-skill-plan.mdtask #15 (in-cherry-pick edits subsection)chore(sync-spec): drop SHA-pin claims, modernize to remote-first vendoring) — already merged; this PR was rebased onto dev after chore(sync-spec): drop SHA-pin claims, modernize to remote-first vendoring #11 landed and its added section was updated to match the post-chore(sync-spec): drop SHA-pin claims, modernize to remote-first vendoring #11 vocabulary.1640460onrelease/v0.2.0. After this PR squash-lands ondev, the release branch will be replayed to swap1640460for this PR's squash commit (which carries the curated CHANGELOG bullet).Testing
Test Summary:
markdownlint-cli2clean on all touched files (PostToolUse hook ran on each edit; explicit pre-push run after the post-rebase RELEASES.md fix: 0 errors).shellcheckn/a (no shell changes — this PR no longer touchesscripts/sync-spec.sh; that surface is owned by PR chore(sync-spec): drop SHA-pin claims, modernize to remote-first vendoring #11 which is already on dev).spec/VERSIONconfirmed at0.3.0.spec/CHANGELOG.mdcarries the curated v0.3.0 entry from upstream agentnative.origin/dev: 10 files, +294/-60 — onlyspec/*(vendored content) andRELEASES.md(new section). No conflict against PR chore(sync-spec): drop SHA-pin claims, modernize to remote-first vendoring #11's already-landedsync-spec.shmodernization.rgforSPEC_REFin this PR's diff returns zero matches (was non-zero before rebase; fixed by amending the RELEASES.md section to use the auto-resolve framing).Files Modified
Modified:
RELEASES.md—+8 lines: new## Spec re-vendoringsection between existing sections.spec/VERSION—0.2.0→0.3.0.spec/CHANGELOG.md— re-vendored from upstream; carries the v0.3.0 entry.spec/principles/p1-non-interactive-by-default.md— re-vendored.spec/principles/p2-structured-parseable-output.md— re-vendored.spec/principles/p3-progressive-help-discovery.md— re-vendored.spec/principles/p4-fail-fast-actionable-errors.md— re-vendored.spec/principles/p5-safe-retries-mutation-boundaries.md— re-vendored.spec/principles/p6-composable-predictable-command-structure.md— re-vendored.spec/principles/p7-bounded-high-signal-responses.md— re-vendored.Breaking Changes
The principle status flip from
draft→activeis a state-of-spec signal, not a contract change. Requirement IDs, levels, and applicability are unchanged.Deployment Notes
Vendored content only; consumers pick up the new spec on their next
git pull --ff-only(driven bybin/check-update).Checklist