Skip to content

Upgrade story: Upgrading.md + min_supported pinning + .new recipe (#96)#122

Merged
JRS1986 merged 4 commits into
mainfrom
feat/upgrade-story-docs
May 25, 2026
Merged

Upgrade story: Upgrading.md + min_supported pinning + .new recipe (#96)#122
JRS1986 merged 4 commits into
mainfrom
feat/upgrade-story-docs

Conversation

@JRS1986
Copy link
Copy Markdown
Owner

@JRS1986 JRS1986 commented May 25, 2026

Summary

  • New wiki page `docs/docs/wiki/Upgrading.md` covering the full upgrade contract: `setup update` flow, `.new` reconciliation recipe (diff/merge/delete), rollback via git, how to read CHANGELOG Breaking notes, when `setup update` is not the right tool. Linked from `_meta.json` and the README.
  • `scaffold-version.json` now carries `min_supported_scaffold_version` (pinned to the installed version on write).
  • `coding-scaffold setup update` refuses to run when the installed scaffold is older than the project's recorded floor; the error follows the three-line shape (cause / next / see) and links to the new wiki page. New `--force` flag bypasses the gate. Legacy snapshots without the field run as before.
  • When `.new` sidecars are produced, `setup update` now prints a concrete copy-pasteable recipe (diff, merge, delete sidecar, re-run `eval`).

Closes #96.

Test plan

  • `uv run pytest -q` — 368 tests pass.
  • New `tests/test_upgrade_compatibility.py` covers: snapshot records the field, comparator semantics, gate refuses on older / passes on matching / passes on legacy, `--force` bypasses, wiki page covers required topics.
  • `python -m coding_scaffold setup update --target /tmp/older-project` prints the three-line refusal with next-step + wiki link when the snapshot pins a newer version.

JRS1986 added 4 commits May 25, 2026 20:04
… reconciliation recipe

Closes #96.

- New wiki page `docs/docs/wiki/Upgrading.md` covering the full upgrade
  contract: what `setup update` does step-by-step, the `.new` reconciliation
  workflow (diff, merge, delete), how to roll back via git, how to read the
  CHANGELOG's Breaking section, and when `setup update` is not the right tool.
  Linked from `_meta.json` and the README.
- `scaffold-version.json` now carries `min_supported_scaffold_version`, pinned
  to the installed scaffold version on every write (both `write_scaffold_version`
  and `write_scaffold_hashes`). `read_min_supported_version` exposes it.
- `setup update` refuses to run when the installed scaffold is older than the
  project's recorded floor. The error follows the standard three-line shape
  (cause / next / see) and points at the new wiki page. New `--force` flag
  bypasses the gate for the rare case where the user really does want to
  downgrade. Legacy snapshots without the field run as before.
- When `setup update` produces `.new` files, it now prints a concrete
  copy-pasteable reconciliation recipe (diff, merge, delete the sidecar,
  re-run `eval`) plus a link to the wiki page.
- New `tests/test_upgrade_compatibility.py` covers: snapshot records the
  field, comparator semantics, the gate refuses on older / passes on
  matching / passes on legacy, `--force` bypasses, the wiki page covers
  the required topics.
@JRS1986 JRS1986 merged commit 4e0aebe into main May 25, 2026
3 checks passed
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.

Document the upgrade story: .new reconciliation, rollback, breaking-change signaling

1 participant