Repository navigation
Ask before installing newer Python support into a database that has it - #140
Merged
Merged
Conversation
Filing a Grail into a database that already has Python support makes what was committed under the old one stop behaving as its type. Measured on a database populated under 1.6.0's Grail (beef473), Brain Freeze included, then filed in with 9fb5d23: committed datetimes, dates, timedeltas, Decimals, tuples, sets, user-class instances and a stored None fail isinstance and comparisons, and Brain Freeze dies on its first request. A reinstall of the same build does the same; a fresh database passes. So an update is no longer filed in unasked, whatever gemdb.reinstallPythonOnUpdate says (kept in the manifest, deprecated). ensureRunning asks with a modal warning when a person asked for the database -- Start, a cell, the Shell, Run or Debug File, the setup commands -- and never for auto-start, the first-run pass or an MCP tool call, which start on the Grail the database has. A "keep" is recorded per bundled build beside the database, so a notebook does not ask on every cell. Reinstall the Python Execution Engine, which the status row runs, gives the same warning. A first install is unchanged. docs/automation-boundary.md records the step under Asked, with the measurement. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
For 1.7.0: an update no longer files newer Python support (Grail) into a database that already has it. It asks first, with a warning.
gemdb.reinstallPythonOnUpdateis ignored for now.Why
Filing Grail in rebuilds every Python runtime class (
install.gsremoves and recreates Grail's dictionaries), and objects already committed keep pointing at the old classes.Measured (2026-10-15):
beef473), with Brain Freeze seeded, a policy bought and a claim filed, plus synthetic data. Then9fb5d23filed in the way an update does.Noneno longer passisinstanceor compare, and arithmetic fails. Some comparisons end the script with an errorexcept BaseExceptioncan't catch. Brain Freeze dies on its first request (meta path spec for 'datetime.timedelta' has no loader).What changes
ensureRunningasks with a modal warning when a person asked for the database: Start, a notebook cell, the Shell, Run or Debug File, and the setup commands. Install files it in; Keep Current, or dismissing the modal, starts on the Python support the database already has.resumeRunningroutes throughensureRunningonly for a first install now..gemdb-grail-declined, next to the install-failure record), so a notebook doesn't ask on every cell. An update shipping a different build asks again, a fresh database starts without the record, and installing clears it.gemdb.reinstallPythonOnUpdatestays in the manifest with adeprecationMessage, so existing values aren't reported as unknown. Its reader is gone, and its README row is replaced by a paragraph on the question.docs/automation-boundary.mdrecords the step under Asked, with the measurement and the placement reasoning.Declining is safe: staging happens only on first setup and inside
fileInGrail, so the Grail on disk and the Grail in the database stay the same build. CI onmainhas been running 1.7.0's extension code againstbeef473.Tests
databaseStarted.test.tscovers:The two
resumeRunningcases that tested the setting are replaced. Unit tests: 956 passed. Integration: 142 passed, plus the existing expected-fail and todo. Lint, format and both typechecks pass.The changelog entry goes in the 1.7.0 release PR (#139), which already reorganises that section. Merge this first.
🤖 Generated with Claude Code