Skip to content

Release 1.5.0: the authored layer ships - #64

Merged
mmacy merged 1 commit into
mainfrom
release-1.5.0
Aug 8, 2026
Merged

Release 1.5.0: the authored layer ships#64
mmacy merged 1 commit into
mainfrom
release-1.5.0

Conversation

@mmacy

@mmacy mmacy commented Aug 8, 2026

Copy link
Copy Markdown
Owner

Cuts 1.5.0, the release that carries the authored layer — #41's delivery-order item 1, phases 10–16 — so osr-web can build against a published version instead of a git SHA.

The diff is the three files the release runbook prescribes and nothing else: the [Unreleased] changelog section renamed to ## [1.5.0] - 2026-08-07 with its link references, the package version, and the lock. No golden moved — the comparisons normalize the engine_version stamp, so regenerating one for a version bump would be a defect by definition.

Why minor, not major

The public surface only grew: gates and the condition union, triggers and the interpreter, quests and the lifecycle commands, the journal, SessionMode.VICTORY, adventure-bundled items, Inventory.carried_item, the new events and view fields. Nothing was removed or renamed from src/ — the only deletion anywhere is examples/tui_crawler/quest.py, and examples/ is outside the uv_build src layout, so it was never in the wheel.

The Changed and Fixed entries are defect corrections rather than API removals: a party wiped by anything but a lost battle never ended the session, a referee could spawn a patrol onto corpses in game_over, a refused command wrote a door into the state overlay, a passed save-or-die save still killed. The one deliberate contract widening is CommandResult carrying the events of commands a listener issued — additive in content, and it replaces having to read session.event_log to find them.

This release also ships schema version 3, bumped by the room-trap fix in #44 and unreleased until now. Phases 10–16 added no bump of their own; every field they introduced is additive with a default, so a pre-phase save or document loads unchanged.

Verification

  • Full standing gate green on the branch point: ruff format --check, ruff check, pyright (0 errors), pytest (2240 passed, 73 skipped), mkdocs build --strict.
  • Local dry run per the runbook: uv build, then check_dist.py dist 1.5.0 ("dist holds a clean osrlib 1.5.0 wheel and sdist"), then the wheel installed into a fresh 3.14 venv and install_smoke.py 1.5.0 — import, class catalog from shipped data, the quickstart round-tripping through a save, and the OGL text with its Section 15 notice, all ok.

After merge

Tag the merge commit to publish: git tag -a v1.5.0 -m "osrlib 1.5.0" && git push origin v1.5.0. release.yml re-runs the gate, builds, audits, smoke-tests the wheel on both OSes, publishes via trusted publishing, and creates the GitHub Release from this version's changelog section.

One standing question, not a blocker

The release runbook's versioned-docs trigger — "the first post-1.0 release whose published docs must describe behavior different from main... adopts mike or equivalent in that release's own plan" — has now been passed over at 1.1.0 through 1.4.0, and this PR passes over it again to keep the release unblocked. Docs stay Pages-from-main. Worth settling deliberately rather than by default, especially now that 1.4.0 users are reading docs describing an engine two schema-visible feature waves ahead of what they installed.

https://claude.ai/code/session_01AV2LDZXDpgaM2Mmjk5Sfwv

Rename the `[Unreleased]` changelog section to 1.5.0, bump the package
version, and relock. No golden moved: the comparisons normalize the
`engine_version` stamp, so the goldens keep the stamp of the engine that
produced them.

The bump is a minor. The public surface only grew across phases 10-16 —
gates, triggers, quests, the interpreter, the journal, the lifecycle
commands, `SessionMode.VICTORY`, adventure-bundled items — and nothing
was removed or renamed from `src/`. The behavior changes under Changed
and Fixed are defect corrections (a non-battle wipe that never ended the
session, a referee spawn onto corpses, a rejection that mutated the door
overlay), not API removals. This release also carries schema version 3,
bumped by the room-trap fix in #44 and unreleased until now; its
migration is lossless in both directions of the corpus.

Claude-Session: https://claude.ai/code/session_01AV2LDZXDpgaM2Mmjk5Sfwv
@mmacy
mmacy merged commit af5efd7 into main Aug 8, 2026
5 checks passed
@mmacy
mmacy deleted the release-1.5.0 branch August 8, 2026 02:32
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