Skip to content

docs: decision 0046 — a scripted upgrade from the new release, and a smaller approval gate - #91

Merged
mauricios merged 3 commits into
mainfrom
docs/0045-scripted-upgrade
Oct 18, 2026
Merged

mauricios merged 3 commits into
mainfrom
docs/0045-scripted-upgrade

Conversation

@mauricios

@mauricios mauricios commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Design record for #86, before implementation. Nothing is implemented here.

docs/decisions/0046-a-scripted-upgrade-from-the-new-release.md settles:

  1. The command: a thin adf-upgrade wrapper in plugins/adf/bin/ finds a framework checkout with history (ADF_FRAMEWORK, a local marketplace clone, or a bare clone cached at ~/.cache/adf/framework.git), resolves NEW, and runs scripts/upgrade.py from NEW's tree through a small, versioned protocol. The real script lives in the framework repo and runs directly for committed installs. build-plugins.sh copies the wrapper from scripts/adf-upgrade.sh as a framework command (amends 0027). The floor is v2.0.0.
  2. OLD/NEW copies: git show for skeleton/ and modules/*/files/; build-committed.py at each release for a committed install's machinery (amends 0028). A per-path table covers renames, files deleted upstream or by the project, and new files.
  3. Migrations: idempotent scripts in scripts/migrations/v<X.Y.Z>/, named by the CHANGELOG's Migration text, each with a functional test.
  4. Covered allow rules: only Bash(<prefix> *) covering Bash(<prefix> …) in the same committed allow list. ask/deny are never touched.
  5. Approval gate: amends the skill's "Plan before touching" ground rule and replaces its Step 4. Clean merges and scripted steps apply without a plan row. The developer approves module choices, conflict resolutions and permission changes. The old skill hands over to NEW's copy of itself.
  6. Report: report.md plus report.json in the git dir. Clean merges are listed with hunk counts, and a Follow-ups section (command, why, source, plugin, when) is there for /adf:upgrade records the follow-ups a release needs; /adf:wrap-up offers to start them #89 to use.

Also updates docs/decisions/README.md and the status lines of 0027 and 0028. ./evals/run-evals.sh passes.

🤖 Generated with Claude Code

mauricios and others added 2 commits October 18, 2026 10:16
…with a smaller approval gate

Records the design for #86 before implementation: a thin adf-upgrade wrapper
in plugins/adf/bin/ (copied by build-plugins.sh from scripts/adf-upgrade.sh)
that fetches a cached framework checkout and runs scripts/upgrade.py from the
new release; old/new copies per install type, renames, deleted and new files;
per-release idempotent migrations; the narrow rule for dropping covered allow
rules; the amended "Plan before touching" ground rule; and the report format
with a Follow-ups section for #89.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…grade

# Conflicts:
#	docs/decisions/README.md
@mauricios mauricios changed the title docs: decision 0045 — a scripted upgrade from the new release, and a smaller approval gate docs: decision 0046 — a scripted upgrade from the new release, and a smaller approval gate Oct 18, 2026
@mauricios
mauricios marked this pull request as ready for review October 18, 2026 22:42
@mauricios
mauricios merged commit 681f914 into main Oct 18, 2026
1 check passed
@mauricios
mauricios deleted the docs/0045-scripted-upgrade branch October 18, 2026 22:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant