Repository navigation
Conversation
Promotes [Unreleased] to 1.10.0 and bumps the version. A minor version: the engine moves to 4.0.0.a8 and a 1.9.0 database is upgraded in place after the user confirms, with a backup kept, so nothing a 1.9.0 user has is lost or has to be redone by hand. The section now says, for a 1.9.0 user, what the upgrade does, how long it takes, the disk it needs, and what happens on a decline or a failure, and summarizes the Python runtime from Grail c8cbc92 to 29833cd. README's "GemDB Code updates and associated data" no longer tells users to expect to lose their database on an engine change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 29, 2026
…m classes Grail main 06ccec5 is 67 PRs on from 29833cd. For the release: a rebuild keeps the class of stored float/int subclass instances and mixin enum members (Grail #1949) and of functional-API enums (#1957); module data attributes Python assigned read back, and sys.excepthook is honoured (#1934, #1958); an unchanged namespaced re-run writes nothing (#1962, #1963). CHANGELOG's "A newer Python runtime" entry says so, recounted from the 1.9.0 pin (c8cbc92): 255 commits across 201 pull requests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #184.
Promotes
[Unreleased]to 1.10.0 and bumps the version. This ships #180: engine 4.0.0.a8 and the in-place a5 → a8 upgrade. It moves Grail on from #180's29833cdto Grail main06ccec5(fa2c3f7).Stacked on #180. Merge this after #180, never before. Its base is
feat/engine-upgrade-in-place. The repository hasdelete_branch_on_mergeon, so when #180 merges GitHub deletes that branch and retargets this PR tomainby itself. Check that the base readsmainbefore merging. If it does not, retarget it by hand.Why 1.10.0
A minor version, not 1.9.1 or 2.0.0:
gemdbAPI are unchanged. Earlier releases bumped the minor version even when users had to delete their database (1.8.0's a4 → a5, 1.9.0's Rowan image), and this change is gentler than either.What changes
package.json/package-lock.json:npm version 1.10.0 --no-git-tag-version, as CONTRIBUTING.md says.CHANGELOG.md: a dated## [1.10.0] - 2026-10-28section, an empty[Unreleased], and the link definitions. The section opens with a preface that tells a 1.9.0 user not to delete~/GemDB/db. The engine entry is now written for them: what triggers the prompt, what the upgrade does (stop, copy todb/data/extent0.dbf.pre-4.0.0.a5, upgrade, reinstall Python support and the MCP server), how long it takes, the disk space it needs (about the extent's size plus 1 GB), and what happens on a decline, a failure, an unconfirmed restore, and an auto-start or agent start. It also covers who still has to recreate their database. A new "A newer Python runtime" entry summarizes Grailc8cbc92→06ccec5(255 commits, 201 PRs). Beyond29833cdit covers Grail #1949 and #1957 (stored float/int subclass instances, mixin enum members and functional-API enums keep their class across a rebuild), #1934 and #1958 (assigned module attributes read back;sys.excepthookis honoured), #1962 and #1963 (an unchanged namespaced re-run writes nothing), and #1951/#1932 (PEP 263 source encodings).README.md: "GemDB Code updates and associated data" used to say you should not expect to keep access to your data after an update that changes the engine version. It now describes the in-place upgrade. Thegemdb.engineVersionbullet is changed to match. These edits do not overlap README: split the notebook debugging bullets into a "Debug a notebook cell" section #175's README hunks onmain.npm run release:notes 1.10.0renders the section.The date: if this merges on a later day, change the heading's date to that day before merging.
Not given entries
These are on
mainsince 1.9.0, but not on #180's branch:Checks
On fa2c3f7 (Grail
06ccec5, engine 4.0.0.a8), Darwin arm64:06ccec5's CI: the merge-queueCIrun on exactly that commit passed (GemTalk/Grail run 41095217594). Grail main has no push-triggered CI. TheGrail upgradeworkflow has not run on06ccec5: its nightly last ran on93d0c30, and #1949 and #1957 passed it on their PR branches.npm test: 71 files, 1318 tests passed.lint,lint:toolchain,format:check,typecheck,typecheck:strictandnpm run bundleare clean.scripts/bundle-grail.sh,bundle:mcp,bundle:stats,test:extent, thennpm run test:integrationwithGEMDB_TEST_ENGINEset to an a8 product outside~/GemDB: 13 files passed, 1 skipped. Tests: 181 passed, 2 expected fail, 4 skipped, 1 todo.scripts/package.sh darwin-arm64packages and checks the.vsix.src/__integration__/engineUpgrade.test.tswithGEMDB_TEST_UPGRADE_EXTENT(an a5 GemDB test extent carrying Grailc8cbc92),GEMDB_TEST_UPGRADE_ENGINE(a5) andGEMDB_TEST_ENGINE(a8): 4 of 4 passed (119s).upgrade_engine.sh --in-placeupgraded the copy in 43s, andcopydbf -ireads 4.0.0.a8. An a8 stone started without-N.resources/install-grail.shexited 0 in 15s ("Recompiling 1528 Grail methods an engine upgrade removed",redeployModules: 0 rebuilt, 0 skipped, 0 failed). Python then ran a class,sum, a dict holding a tuple, None and enum keys, anint-mixin enum, a functional enum, and Unicodeupper().ci-completewas cancelled at its 1-minute limit while the GitHub API was returning 504s, and passed when re-run.ci/upgrade.shat brain-freezeb7767fd,gemdb-darwin-arm64-1.9.0.vsix→ this run'svsix-darwin-arm64): FAIL, reproduced from a fresh HOME.policies=901 events=4995 claims=2174 quotes=1 flavoured=1, sha2564e013440…e2c0baboth before and after.redeployModules.gs, runs atGEM_TEMPOBJ_CACHE_SIZE=900000(Grail's own install.sh uses the same figure). It dies withvmGc OOM … 674943/674944Koldand then error 4035 (lost connection), so it prints no summary and commits nothing. install-grail.sh reports only its generic WARNING.29833cdbuild (CI run 40618737420) as NEW: PASS.redeployModules: 296 rebuilt, 0 skipped, 0 failed, in 403836 ms, unit suite 343 OK (83 skipped), acceptance 12 features / 16 scenarios passed.redeployModules.gsby hand on the failed database at 2000000 KB finishes (190s) but reports0 rebuilt, 0 skipped, 57 failed. 56 of the 57 are the EmailMessage refusal; the other isroutes: No module named 'conflicts'. The "nothing is stored against email.message.EmailMessage, so it is rebuilt on its new bases" repair that29833cdmakes never fires. This was measured after two failed runs on that database, so it is a lead, not a clean measurement: the larger cache may only move the failure.29833cd..06ccec5, not in this branch. It needs a Grail fix and a re-pin before 1.10.0 ships.Follow-ups this PR does not make
confirmGrailInstallinsrc/lifecycle.ts, and README's "How setup runs" paragraph, still say that installing newer Python support makes committed dates, decimals, tuples and instances stop working. Grail #1791 (in this pin range) rebuilds deployed modules in place to keep them working. Grail #1867 measured therelease=c8cbc92upgrade case at 243/0. So the warning now contradicts the upgrade path, which reinstalls Python support without asking. Changing that is a code change, so it belongs in its own PR.platform.ts's download and disk figures (170 MB / 470 MB) are still a5 measurements..vsix(Upgrade an a5 database to a8 in place instead of asking to delete it #180's open item) runs in the Release workflow'sscanjob.To release, after both PRs merge
main, fix the date if needed, and merge it.mainpush CI run on the merge commit to go green. It uploadsvsix-darwin-arm64,vsix-linux-x64andvsix-linux-arm64.npm run release:fetchon that commit, then installdist/gemdb-darwin-arm64-1.10.0.vsixover a 1.9.0 setup and run the upgrade once.mainwith1.10.0, ticking dry-run first (validate → collect → scan).release-approvalgate. It tagsv1.10.0, creates the GitHub Release, publishes to the Marketplace and Open VSX, then runsverify.🤖 Generated with Claude Code