Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down
7 changes: 7 additions & 0 deletions docs/UPGRADING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
26 changes: 23 additions & 3 deletions evals/dynamic/reports/2026-10-01-adopt.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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
Expand Down Expand Up @@ -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.
Expand Down
Loading