From cfbb621e6893ac4aaadca7f472d7544e982d189b Mon Sep 17 00:00:00 2001 From: CSalcedoDataBI <73630372+CSalcedoDataBI@users.noreply.github.com> Date: Tue, 6 Oct 2026 16:12:01 -0500 Subject: [PATCH 1/2] ci(release): advance a stable branch for the plugin directory on each release (#768) The directory scans every commit on the branch it tracks and each one replaces the version in review, so tracking main would restart the review on every merge. The Release workflow now fast-forwards stable to each released commit, beside the existing release channel, with the same no-force rule. CONTRIBUTING documents the cadence: batch work, test locally before a release, no release while a version is in review except security fixes. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/release.yml | 13 +++++++++++++ CONTRIBUTING.md | 19 ++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 712f000..b76b3d5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -160,3 +160,16 @@ jobs: # rewriting the channel. Pushes made with GITHUB_TOKEN do not retrigger workflows. git push origin "$SHA:refs/heads/release" echo "::notice::release channel -> $SHA" + + - name: Advance the directory channel (stable) to the released commit + if: steps.v.outputs.release == 'true' + env: + SHA: ${{ steps.v.outputs.sha }} + run: | + # The claude.ai plugin directory tracks `stable` (#768), not main: it scans every commit on + # the branch it tracks and each new one replaces the version in review, so main's daily + # commits must not reach it. `stable` moves here and only here, to each released commit - + # same rules as `release` above: created on the first release, fast-forwarded after, a + # non-fast-forward rejected loudly instead of rewriting what a reviewer already read. + git push origin "$SHA:refs/heads/stable" + echo "::notice::stable (plugin directory) -> $SHA" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bfebd93..0439061 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -182,12 +182,13 @@ exit-code clean (0 ok / 1 drift) so a CI gate can call it. ### What happens after the version-bump lands on `main` -Two channels, so users never install whatever `main` HEAD happens to be: +Three channels, so users never install whatever `main` HEAD happens to be: - **`main`** is the development channel — every merged PR lands here. - **`release`** is the branch installs actually fetch. `marketplace.json`'s plugin `source` is a `git-subdir` pinned at `ref: release` (#323), so a fresh install or `plugin update` gets the `release` commit, not `main` HEAD. +- **`stable`** is the branch the claude.ai plugin directory tracks; it moves with `release`. When a `chore(release): X.Y.Z` commit changes `plugin.json`'s version on `main`, the **Release** workflow (`.github/workflows/release.yml`, #322) fires automatically and: @@ -195,11 +196,27 @@ workflow (`.github/workflows/release.yml`, #322) fires automatically and: 1. creates the git tag `vX.Y.Z` + a GitHub Release, notes taken from that version's `CHANGELOG.md` block (`scripts/Get-ReleaseNotes.ps1`), on the exact commit that set the version, and 2. fast-forwards the `release` branch to that commit — the one push that moves pinned installs. +3. fast-forwards the `stable` branch to the same commit — the one the plugin directory tracks. So tagging and the release channel are **no longer manual**: land the version bump on `main` and CI does the rest. `plugin.json`'s `version` is still what drives `plugin update` detection for users, so it must change on every release (the bump commit is exactly that). +### Releases and the plugin directory + +The claude.ai plugin directory tracks the **`stable`** branch, not `main`. It scans every commit +that lands on the branch it tracks and puts each one in review, replacing the one before, so a +push to a tracked `main` would restart the review every day. `stable` moves only when a release is +published (the step above), so `main` can take commits every day. + +- **Batch the work.** A release is a review cycle measured in days, not a deploy. +- **Test before merging the release commit**, in Claude Code against the local plugin + (`claude --plugin-dir plugins/agentic-board`): what is on claude.ai is only ever what the + reviewer approved. +- **Do not release while a version is in review**, unless it carries a security fix: the new + version replaces the one the reviewer is reading. +- Never push to `stable` by hand outside a release, and never force it. + ## Good first issues New here? Look for the [`good first issue`](https://github.com/CSalcedoDataBI/agentic-board/labels/good%20first%20issue) From 7c4fb305655fcb915cda743ddea19b5edc93fa67 Mon Sep 17 00:00:00 2001 From: CSalcedoDataBI <73630372+CSalcedoDataBI@users.noreply.github.com> Date: Tue, 6 Oct 2026 16:12:02 -0500 Subject: [PATCH 2/2] chore(release): 0.45.0 Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 31 +++++++++++++++++++ README.md | 2 +- .../agentic-board/.claude-plugin/plugin.json | 2 +- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa30dbe..8ff8d2d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,37 @@ # Changelog +## [0.45.0] - 2026-10-06 +Ready for the Anthropic plugin directory: safe by default, portable, pinned, and measured with +Anthropic's own validators. Plus a sandboxed low-cost fleet adapter (pilot) and a declarative +adapter registry. +### Added +- **Declarative CLI adapter registry (#772).** `presets/adapters.json` with preset → user → repo + overrides; a cloned repo's file may only set `routing` and `reviewer`, never a command. +- **Normalized probe codes (#770).** Every CLI probe ends in `OK | AUTH | RATE_LIMIT | QUOTA | + CONTEXT_WINDOW | ERROR`; unknown output is `ERROR`, never a false OK. +- **Fail-closed run-ledger checkpoint and `Board-Handoff -Recover` (#771, #730).** A checkpoint is + written before each side-effecting step and the step does not run if it cannot be; `-Recover` + rebuilds a session that ended without `-Save` from its local transcript. +- **dsh as a sandboxed fleet adapter, pilot (#773).** Only in a pinned Docker container, only for + Docs/Chore issues of public repos, session-log upload off. +- **Per-user account map and `/board setup` (#762).** No author defaults ship in the plugin. +- **Secret scrub for launched sessions (#769).** +- `PRIVACY.md`, listing links, icon and command argument hints for the directory listing (#768). +### Changed +- **Permission bypass is an explicit opt-in (#761).** +- **Always-on context ~2,810 → ~760 tokens (#763).** +- **Cross-platform PowerShell 7 core (#767):** Windows, macOS and Linux; CI runs on Windows and + Ubuntu. +- **Every runtime install pinned, no `Invoke-Expression` (#765).** +- `Board-Work.ps1` split below 256 KiB (#759); README inside the plugin folder (#760). +- The test suite moved out of the shipped plugin folder to `tests/agentic-board/` (#768). +### Fixed +- The brake fails closed when an armed run has no `pwsh` (#764). +- The brake precheck no longer names a parent path (`COMMAND_PATH_ABOVE_PLUGIN`, #768). +- `abios-feedback` loads before asking for details; `/expert` opens its engine first (#764). +- Skill-reviewer and plugin-validator findings (#764). + ## [0.44.0] - 2026-09-29 `/scan` goes from untracked work to a ready board in one command, `/skills` can create and improve a skill end to end, and the whole tool now speaks English: the agent translates for the user. diff --git a/README.md b/README.md index 15fb082..03a9011 100644 --- a/README.md +++ b/README.md @@ -357,4 +357,4 @@ MIT — see [LICENSE](./LICENSE). --- -agentic-board v0.44.0 · docs generated by `plugins/agentic-board/scripts/Update-Docs.ps1` +agentic-board v0.45.0 · docs generated by `plugins/agentic-board/scripts/Update-Docs.ps1` diff --git a/plugins/agentic-board/.claude-plugin/plugin.json b/plugins/agentic-board/.claude-plugin/plugin.json index 23af1c0..1dfe013 100644 --- a/plugins/agentic-board/.claude-plugin/plugin.json +++ b/plugins/agentic-board/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "agentic-board", "displayName": "Agentic Board", - "version": "0.44.0", + "version": "0.45.0", "description": "Run coding agents off your real GitHub Projects board: a quota-aware, review-gated coordinator, not another local Kanban.", "author": { "name": "CSalcedoDataBI",