From 1f8f69e6fcf65c9236ae59a1e2eba1c9fe01c2c7 Mon Sep 17 00:00:00 2001 From: bdchatham Date: Wed, 27 May 2026 14:28:42 -0700 Subject: [PATCH] fix: default write mode to cosmos_only for stable seid v6.5.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v0.0.18 defaulted WriteMode to memiavl_only, which the stable released seid (v6.5.1) rejects with "invalid write mode: memiavl_only". Both v6.5.1 and nightly run simultaneously, so new nodes without explicit overrides broke on v6.5.1. The sei-config default tracks the stable released binary: v6.5.1 accepts cosmos_only. Nightly/main callers (SND templates) override to memiavl_only explicitly. Bump the default when 6.6.0 ships memiavl_only. This also corrects WriteMode.IsValid to accept the deprecated v1 modes (cosmos_only, dual_write, split_write): they are real values the stable binary consumes, not invalid input. The v1->v2 migration still renames them, so migrated configs converge on the v2 names. No DefaultForVersion abstraction is added — the binary-version axis is a single default value plus a caller override, which the existing override pipeline handles. Co-Authored-By: Claude Sonnet 4.6 (1M context) --- config_test.go | 4 ++-- defaults.go | 7 +++++-- migrate_test.go | 2 +- types.go | 6 +++++- version.json | 2 +- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/config_test.go b/config_test.go index 37c9120..761c269 100644 --- a/config_test.go +++ b/config_test.go @@ -742,8 +742,8 @@ func TestWriteMode_Validity(t *testing.T) { if !WriteModeMemiavlOnly.IsValid() { t.Error("memiavl_only should be valid") } - if WriteModeCosmosOnly.IsValid() { - t.Error("cosmos_only should not be valid in v2 (deprecated — use migration)") + if !WriteModeCosmosOnly.IsValid() { + t.Error("cosmos_only should be valid (deprecated, but accepted by stable seid v6.5.1)") } if WriteMode("invalid").IsValid() { t.Error("'invalid' should not be valid") diff --git a/defaults.go b/defaults.go index be98a8b..bce77e6 100644 --- a/defaults.go +++ b/defaults.go @@ -115,9 +115,12 @@ func baseDefaults() *SeiConfig { PruningInterval: "0", SnapshotKeepRecent: 2, IAVLDisableFastNode: true, + // WriteMode tracks the stable released seid (v6.5.1), which accepts + // cosmos_only and rejects memiavl_only. Nightly/main callers override + // to memiavl_only. Bump this default when 6.6.0 ships memiavl_only. StateCommit: StateCommitConfig{ Enable: true, - WriteMode: WriteModeMemiavlOnly, + WriteMode: WriteModeCosmosOnly, ReadMode: ReadModeCosmosOnly, }, StateStore: StateStoreConfig{ @@ -128,7 +131,7 @@ func baseDefaults() *SeiConfig { PruneIntervalSeconds: 600, ImportNumWorkers: 1, KeepLastVersion: true, - WriteMode: WriteModeMemiavlOnly, + WriteMode: WriteModeCosmosOnly, ReadMode: ReadModeCosmosOnly, }, ReceiptStore: ReceiptStoreConfig{ diff --git a/migrate_test.go b/migrate_test.go index f35e5e7..b785c47 100644 --- a/migrate_test.go +++ b/migrate_test.go @@ -380,7 +380,7 @@ func TestDefaultMigrations_Valid(t *testing.T) { // v1ToV2Migration returns the v1→v2 migration from DefaultMigrations for tests // that exercise the rename transform directly (bypassing post-migration -// validation, which rejects unknown/deprecated WriteMode values). +// validation, which rejects unknown WriteMode values). func v1ToV2Migration(t *testing.T) Migration { t.Helper() for _, m := range DefaultMigrations() { diff --git a/types.go b/types.go index e46d099..aa14744 100644 --- a/types.go +++ b/types.go @@ -89,7 +89,11 @@ func (m WriteMode) IsValid() bool { switch m { case WriteModeMemiavlOnly, WriteModeMigrateEVM, WriteModeEVMMigrated, WriteModeMigrateAllButBank, WriteModeAllMigratedButBank, - WriteModeMigrateBank, WriteModeFlatKVOnly, WriteModeTestOnlyDualWrite: + WriteModeMigrateBank, WriteModeFlatKVOnly, WriteModeTestOnlyDualWrite, + // Deprecated v1 modes remain valid: the stable released seid (v6.5.1) + // still accepts them and rejects the v2 names. The v1→v2 migration + // renames them; validation must not reject configs targeting v6.5.1. + WriteModeCosmosOnly, WriteModeDualWrite, WriteModeSplitWrite: return true default: return false diff --git a/version.json b/version.json index 2b10809..ae175f4 100644 --- a/version.json +++ b/version.json @@ -1,3 +1,3 @@ { - "version": "v0.0.18" + "version": "v0.0.19" }