From d806367366d7f363a9e7ed7a6411bd4f0eadba58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mauricio=20S=C3=A1nchez?= Date: Thu, 1 Oct 2026 22:55:31 -0500 Subject: [PATCH] =?UTF-8?q?docs:=20release=207383422=20=E2=80=94=20paralle?= =?UTF-8?q?l=20agents,=20test=20first=20in=20every=20lane,=20and=20adoptio?= =?UTF-8?q?n=20per=20project?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Renames Unreleased to the 7383422 release (aplyca-framework 0.2.4), covering #13, #14, and #15, and opens it with the order to upgrade in from 3eb7777: the plugin into the project first, then /upgrade, then the stamp. README and UPGRADING point at the release. The adopt eval report adds the run from the published GitHub address. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 24 +++++++++++++++++++++ README.md | 7 +++--- docs/UPGRADING.md | 7 ++++++ evals/dynamic/reports/2026-10-01-adopt.md | 26 ++++++++++++++++++++--- 4 files changed, 58 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f752cf..8a96d35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,30 @@ For each entry, **Upgrade impact** classifies the change against the [three-buck ## Unreleased +## 7383422 — 2026-10-01 — Parallel agents, test first in every lane, and adoption per project (`aplyca-framework` 0.2.4) + +Everything since `3eb7777`: portable parallel agents and `/handoff` +([#13](https://github.com/Aplyca/AgenticDevelopmentFramework/pull/13)), test first in every lane and +the hub enforced ([#14](https://github.com/Aplyca/AgenticDevelopmentFramework/pull/14)), and +adoption and upgrades — the modules offered, the plugin per project, one-prompt and new-project +adoption ([#15](https://github.com/Aplyca/AgenticDevelopmentFramework/pull/15)). + +**Upgrading a repository whose baseline is `3eb7777`.** `/upgrade` does this for you, and now offers +the modules you don't have. In this order: + +1. **Get the plugin into the project, at 0.2.4.** Paste the install prompt from the + [README](README.md#with-claude-code--the-installer-plugin-recommended) into a session on the + project: it installs with `--scope project` and reports a user-scope copy to remove. Already + installed per project? Update from the project's folder (`claude plugin marketplace update aplyca`, + then `claude plugin update aplyca-framework@aplyca`). Then start a new session. +2. **Run `/upgrade`** — from a worktree if the project uses the dispatcher hub. By hand: each part's + Upgrade impact below, newest first. Where two parts touch the same file, copy the newest version + once and apply the older parts' migration notes only. +3. **Re-stamp the baseline** at the top of `CLAUDE.md` with `7383422` and the modules you have. + +A baseline older than `3eb7777` takes that release's order first — its three fixes affect every +adopted repository — then this one. + ### `/upgrade` offers the modules a project doesn't have `/upgrade` updated only the modules a project already had and never offered the others, so a project diff --git a/README.md b/README.md index 7a2b7bb..6e8d1b4 100644 --- a/README.md +++ b/README.md @@ -126,9 +126,10 @@ hooks, stamp the baseline, and verify. The framework is copied in, not installed as a dependency, so updates are deliberate and keep your customizations. Read the **Upgrade impact** of each release in [CHANGELOG.md](CHANGELOG.md) first. -The `3eb7777` release (2026-10-01) fixes defects that affect every adopted repository and opens with -the order to upgrade in from an older baseline; if your settings pin a model ID, switch it to the -`sonnet` alias. +The latest release, `7383422` (2026-10-01), opens with the order to upgrade in; `/upgrade` now +offers the modules you don't have, and the plugin installs per project. A baseline older than +`3eb7777` takes that release's three fixes first — they affect every adopted repository — and if your +settings pin a model ID, switch it to the `sonnet` alias. 1. **Update the plugin** from the project's folder — then restart Claude Code: diff --git a/docs/UPGRADING.md b/docs/UPGRADING.md index bcc845c..e0ba0ad 100644 --- a/docs/UPGRADING.md +++ b/docs/UPGRADING.md @@ -233,6 +233,13 @@ Then decide how far to go: the spec-folder workflow (new skills, templates, `spe main benefit. Existing single-file specs stay as they are; new work uses folders, and a legacy spec moves into a folder the next time it changes. +### "We adopted before the `7383422` release (2026-10-01, plugin 0.2.4)" + +Start with the plugin: install it in the project with `--scope project` (the README's install prompt +does it and reports a user-scope copy to remove), then run `/upgrade` in a new session. It applies +the release's parts newest first and offers the modules you don't have. If the project uses the +dispatcher hub, run it from a worktree: from this release on, the hub's main checkout takes no edits. + ### "We adopted before the modules existed" Your stamp has no `modules:` part, so nothing optional was installed. `/upgrade` lists the modules diff --git a/evals/dynamic/reports/2026-10-01-adopt.md b/evals/dynamic/reports/2026-10-01-adopt.md index 47018fb..21c00c0 100644 --- a/evals/dynamic/reports/2026-10-01-adopt.md +++ b/evals/dynamic/reports/2026-10-01-adopt.md @@ -4,13 +4,15 @@ The new `adopt` suite, run against real headless Claude Code sessions (v2.1.286) (Sonnet 5.5) and `opus` (Opus 5.5) with `run-session-evals.sh --suite adopt`. There were two runs: the first found a defect in `/adopt` and a gap in the runner, and the second ran with both fixed. Each used `--source` pointing at a checkout of the branch, since `ADOPT.md` isn't on `main` yet. -The suite cost about $2.10 API-equivalent in total. Each transcript, and the end state the runner +A third run, after the merge, used the published address. The suite cost about $2.50 API-equivalent +in total. Each transcript, and the end state the runner appends, was graded by reading it against its `.expected.md`. | Run | Cases | Sessions | Cost | |---|---|---|---| | 1 | `one-line-prompt` (sonnet, opus), `new-project` (sonnet, two turns) | 3 | $0.69 | | 2 — after the fixes | the same | 3 | $1.37 | +| 3 — after the merge, from the GitHub address | `one-line-prompt` (sonnet, opus) | 2 | $0.39 | ## One line with the framework's address @@ -37,6 +39,26 @@ repository with no commits. The session had no plugin and couldn't run `claude p only door, so this run is the weaker test. Re-run the case with the default `--source` once `ADOPT.md` is on `main`. +### From the GitHub address (run 3) + +The repository is private, so the address returns 404 to anything not signed in to GitHub — the web +fetch included — and the README's raw link to `ADOPT.md` does too. Both sessions recovered with the +developer's own GitHub access: + +| Invariant | Sonnet | Opus | +|---|---|---| +| Reads `ADOPT.md` before proposing | ✓ web fetch 404, then `gh api …/contents/ADOPT.md` | ✓ cloned the framework into its own scratch folder, then README and `ADOPT.md` | +| Copies nothing, edits nothing in the project | ✓ | ✓ the clone stayed outside the project | +| No `claude plugin` command before the go-ahead | ✓ | ✓ no install — one read-only `claude plugin list`, for `ADOPT.md`'s user-scope check, was refused by the suite's blanket deny rule | +| Plan: `--scope project`, adopt on a branch, draft PR | ✓ | ✓ | +| New project: one first commit with a yes, planned stack | ✓ | ✓ and the whole question round | +| Asks for the go-ahead and stops | ✓ | ✓ | +| Turns · cost | 6 · $0.10 | 6 · $0.29 | + +- **The published path works for anyone with access to the repository.** Someone without access + gets nothing, as with any private repository; a public repository would serve the README and the + raw link directly. + ## `/adopt` in a new project The plugin was loaded from the checkout for the session only (`--plugin-dir`). The first turn was @@ -79,8 +101,6 @@ The plugin was loaded from the checkout for the session only (`--plugin-dir`). T ## Not covered -- **The published path:** a `--source` of the GitHub address, where the session fetches the README - and `ADOPT.md` over the network. Run it after the merge. - **The install itself.** No session may run `claude plugin` commands: the install would change the machine's plugin records. It's covered by the CLI's documented `--scope` options and, next, by the pilot.