Repository navigation
Conversation
The rewrites existed and nothing had run one. This appends the first migration, raises the schema version to 2 in the same change, and records what the step does to its own fixture, which is what freezes it. It renames the state-commit write mode cosmos_only to memiavl_only. The two names describe the same routing: releases before v6.6 used the first and this one uses the second, and the reader has translated the old name on every start since. Moving the file once is what lets a node stop depending on that translation. The reader keeps accepting the old name, and has to. Nothing migrates app.toml, so a node still reading its settings from there depends on it. This migration moves sei.toml and changes no reader. Five tests cover the chain this binary actually carries rather than one built for a test, because that is the only chain that runs on a node. A file an operator wrote is upgraded in place: the value moves, the version moves, the release that moved it is recorded, the operator's comment survives, an unrelated setting in the same section survives, and the step reports exactly one key changed. A file already holding the current spelling moves to the new version and reports nothing changed, which is most of a fleet. A file that never wrote the key gains nothing. Running the upgrade twice leaves the file byte-identical. A preview writes nothing and reports the step a real run performs. The sixth is the one the migration exists for. Every other test stops at the file. This upgrades a file, boots with it, and asks the reader that consumes the key what it got: a migration whose result does not reach the reader has moved a file and nothing else. Two mutations. Editing the shipped migration to transform differently is caught three ways, including by the recorded result, which is what stops a change that would leave two nodes agreeing on their version and disagreeing on their contents. Not raising the schema version with it is caught. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
bdchatham
force-pushed
the
plt-775-06-migration
branch
from
August 17, 2026 17:33
f5d863d to
c3e7948
Compare
bdchatham
force-pushed
the
plt-775-05-upstream
branch
from
August 17, 2026 17:33
c2f6507 to
3109251
Compare
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.
Runs the machinery end to end. The rewrites existed and nothing had run one.
This appends the first migration, raises the schema version to 2 in the same change, and records what the
step does to its own fixture, which is what freezes it.
It renames the state-commit write mode
cosmos_onlytomemiavl_only. The two names describe the samerouting: releases before v6.6 used the first and this one uses the second, and the reader has translated
the old name on every start since. Moving the file once is what lets a node stop depending on that
translation.
The reader keeps accepting the old name, and has to. Nothing migrates app.toml, so a node still reading
its settings from there depends on it. This migration moves sei.toml and changes no reader.
Five tests cover the chain this binary actually carries rather than one built for a test, because that is
the only chain that runs on a node. A file an operator wrote is upgraded in place: the value moves, the
version moves, the release that moved it is recorded, the operator's comment survives, an unrelated setting
in the same section survives, and the step reports exactly one key changed. A file already holding the
current spelling moves version and reports nothing changed, which is most of a fleet. A file that never
wrote the key gains nothing. Running the upgrade twice leaves the file byte-identical. A preview writes
nothing.
The sixth is the one the migration exists for. Every other test stops at the file. This upgrades a file,
boots with it, and asks the reader that consumes the key what it got: a migration whose result does not
reach the reader has moved a file and nothing else.