diff --git a/docs/limitations.md b/docs/limitations.md index 5fae67a0..925c4cc8 100644 --- a/docs/limitations.md +++ b/docs/limitations.md @@ -84,10 +84,9 @@ resolved. multi-instance scenarios. The preflight check enforces a per-version hard floor: 8 GB for the - 0.6 line (0.6.3, 0.6.4, 0.6.9/`latest`, 0.6.10, 0.6.11, the V2 alpha — - and any uncurated 0.6.x tag, which inherits the strictest catalogued - floor for its major), 4 GB for 0.5.18 and only for tags whose major - has no catalogued entry. The 12 GB figure is the coded recommendation + 0.6, 0.7, and 0.8 lines (and any uncurated tag on those majors, which + inherits the strictest catalogued floor for its major), 4 GB for + 0.5.18 and only for tags whose major has no catalogued entry. The 12 GB figure is the coded recommendation threshold (`recommended_memory_bytes`) — below it preflight WARNs but does not refuse. diff --git a/internal/localnet/adapters.go b/internal/localnet/adapters.go index 0b109b80..cb250ee7 100644 --- a/internal/localnet/adapters.go +++ b/internal/localnet/adapters.go @@ -6,6 +6,8 @@ import ( "github.com/bitdynamics-ab/canton-devkit/internal/splice" v05 "github.com/bitdynamics-ab/canton-devkit/internal/splice/v05" v06 "github.com/bitdynamics-ab/canton-devkit/internal/splice/v06" + v07 "github.com/bitdynamics-ab/canton-devkit/internal/splice/v07" + v08 "github.com/bitdynamics-ab/canton-devkit/internal/splice/v08" ) // adapterFor returns the splice.Adapter implementation for a Version. @@ -21,6 +23,10 @@ func adapterFor(v splice.Version) (splice.Adapter, error) { return v05.New(), nil case "0.6": return v06.New(), nil + case "0.7": + return v07.New(), nil + case "0.8": + return v08.New(), nil default: return nil, fmt.Errorf("no adapter registered for Splice major %q (tag %s) — this is a canton-devkit bug", v.Major, v.Tag) diff --git a/internal/localnet/adapters_test.go b/internal/localnet/adapters_test.go index a37f6c1f..fa20afcb 100644 --- a/internal/localnet/adapters_test.go +++ b/internal/localnet/adapters_test.go @@ -40,4 +40,10 @@ func TestCoreServicesFor_VersionsAgree(t *testing.T) { if !reflect.DeepEqual(v05, v06) { t.Fatalf("core services drifted between majors: 0.5.18=%v 0.6.4=%v", v05, v06) } + // 0.7.x and 0.8.x reuse the 0.6.x adapter (identical compose interface), + // so their core-services list must match too. + v08 := CoreServicesFor("0.8.0") + if !reflect.DeepEqual(v06, v08) { + t.Fatalf("core services drifted between majors: 0.6.4=%v 0.8.0=%v", v06, v08) + } } diff --git a/internal/splice/v07/adapter.go b/internal/splice/v07/adapter.go new file mode 100644 index 00000000..03b03521 --- /dev/null +++ b/internal/splice/v07/adapter.go @@ -0,0 +1,23 @@ +// Package v07 implements the Adapter contract for Splice LocalNet 0.7.x. +// +// The cluster/compose/localnet/ tree is unchanged from 0.6.x upstream — +// same compose files, env-file set, profile names, service/port map, and +// the env-var contract the adapter wires (IMAGE_TAG, IMAGE_REPO, +// PARTY_HINT, ALPHA_PROTOCOL_VERSION_ENV, …). So 0.7.x embeds the 0.6.x +// adapter and only relabels its major slot. +package v07 + +import ( + "github.com/bitdynamics-ab/canton-devkit/internal/splice" + v06 "github.com/bitdynamics-ab/canton-devkit/internal/splice/v06" +) + +// Adapter is the 0.6.x adapter under the 0.7 major label. +type Adapter struct{ *v06.Adapter } + +// New returns a fresh 0.7.x adapter. Stateless — safe to reuse. +func New() *Adapter { return &Adapter{v06.New()} } + +func (*Adapter) MajorVersion() string { return "0.7" } + +var _ splice.Adapter = (*Adapter)(nil) diff --git a/internal/splice/v08/adapter.go b/internal/splice/v08/adapter.go new file mode 100644 index 00000000..b4667478 --- /dev/null +++ b/internal/splice/v08/adapter.go @@ -0,0 +1,23 @@ +// Package v08 implements the Adapter contract for Splice LocalNet 0.8.x. +// +// The cluster/compose/localnet/ tree is unchanged from 0.6.x upstream — +// same compose files, env-file set, profile names, service/port map, and +// the env-var contract the adapter wires (IMAGE_TAG, IMAGE_REPO, +// PARTY_HINT, ALPHA_PROTOCOL_VERSION_ENV, …). So 0.8.x embeds the 0.6.x +// adapter and only relabels its major slot. +package v08 + +import ( + "github.com/bitdynamics-ab/canton-devkit/internal/splice" + v06 "github.com/bitdynamics-ab/canton-devkit/internal/splice/v06" +) + +// Adapter is the 0.6.x adapter under the 0.8 major label. +type Adapter struct{ *v06.Adapter } + +// New returns a fresh 0.8.x adapter. Stateless — safe to reuse. +func New() *Adapter { return &Adapter{v06.New()} } + +func (*Adapter) MajorVersion() string { return "0.8" } + +var _ splice.Adapter = (*Adapter)(nil) diff --git a/internal/splice/versions.json b/internal/splice/versions.json index d7064e4b..3394ae45 100644 --- a/internal/splice/versions.json +++ b/internal/splice/versions.json @@ -1,7 +1,7 @@ { "$schema": "Splice version catalogue. See versions.go for field semantics.", "_comment": "Maintainer flow: scripts/add-splice-version.sh resolves the tag → commit, downloads the archive, computes ContentSHA, and appends an entry here. Reviewer checks the diff before merging.", - "latest_alias": "0.6.12", + "latest_alias": "0.8.1", "versions": [ { "tag": "0.5.18", @@ -66,6 +66,96 @@ "min_memory_bytes": 8000000000, "recommended_memory_bytes": 12000000000 }, + { + "tag": "0.6.13", + "commit": "52ccdd6841f3eda11fe86313e8cdf9540efedfb7", + "content_sha": "3fdb3d0667923febd80cf0a2ff225ba29acff14276459c195914057b6eee5528", + "size": 184831583, + "major": "0.6", + "min_memory_bytes": 8000000000, + "recommended_memory_bytes": 12000000000 + }, + { + "tag": "0.6.14", + "commit": "398919a5b13479877fd61587003ba7a4ba00091b", + "content_sha": "3fdb3d0667923febd80cf0a2ff225ba29acff14276459c195914057b6eee5528", + "size": 184835854, + "major": "0.6", + "min_memory_bytes": 8000000000, + "recommended_memory_bytes": 12000000000 + }, + { + "tag": "0.7.0", + "commit": "a9076eb91f87a9bd9315d2f9e122d6350bdc9d4c", + "content_sha": "3fdb3d0667923febd80cf0a2ff225ba29acff14276459c195914057b6eee5528", + "size": 184005518, + "major": "0.7", + "min_memory_bytes": 8000000000, + "recommended_memory_bytes": 12000000000 + }, + { + "tag": "0.7.1", + "commit": "c95e1ef5c939cef13cc344d7678f9d2ce2474c6a", + "content_sha": "7391d45fbc7134dd798639c53560282130e342a018bf55d612242b89e4971ec7", + "size": 184037338, + "major": "0.7", + "min_memory_bytes": 8000000000, + "recommended_memory_bytes": 12000000000 + }, + { + "tag": "0.7.2", + "commit": "b1c3896fb9420d8de48537211a5c7046359c6d4e", + "content_sha": "7391d45fbc7134dd798639c53560282130e342a018bf55d612242b89e4971ec7", + "size": 184045327, + "major": "0.7", + "min_memory_bytes": 8000000000, + "recommended_memory_bytes": 12000000000 + }, + { + "tag": "0.7.3", + "commit": "0dd6b9263510007e831bcc3ca3a44a41aa862a75", + "content_sha": "7391d45fbc7134dd798639c53560282130e342a018bf55d612242b89e4971ec7", + "size": 184041527, + "major": "0.7", + "min_memory_bytes": 8000000000, + "recommended_memory_bytes": 12000000000 + }, + { + "tag": "0.7.4", + "commit": "e5c3661e7257a024b9f964617fa3f02dcf56d332", + "content_sha": "1cbd1a502f362d284a689af388910ff84d0bbef349beebdd722726b4da7801f6", + "size": 184092361, + "major": "0.7", + "min_memory_bytes": 8000000000, + "recommended_memory_bytes": 12000000000 + }, + { + "tag": "0.7.5", + "commit": "858a7347aaeb958657b76b0957186102b74e3bd6", + "content_sha": "1cbd1a502f362d284a689af388910ff84d0bbef349beebdd722726b4da7801f6", + "size": 184129682, + "major": "0.7", + "min_memory_bytes": 8000000000, + "recommended_memory_bytes": 12000000000 + }, + { + "tag": "0.8.0", + "commit": "9330dba9e31b8893bec09ece2f5dbb496fcf17b5", + "content_sha": "899706c4dc722667a998329e0910717544f5c88bcba2b7aed25269275c4c4016", + "size": 199850135, + "major": "0.8", + "min_memory_bytes": 8000000000, + "recommended_memory_bytes": 12000000000 + }, + { + "tag": "0.8.1", + "commit": "fb3c8c8a9259e98cdeb1cffc0cc77eaa7cc69e52", + "content_sha": "899706c4dc722667a998329e0910717544f5c88bcba2b7aed25269275c4c4016", + "size": 199860530, + "major": "0.8", + "min_memory_bytes": 8000000000, + "recommended_memory_bytes": 12000000000 + }, { "tag": "token-standard-v2", "commit": "de911e38af78ec79b6f0e6a9515e104b1e4c3d62", diff --git a/internal/splice/versions_test.go b/internal/splice/versions_test.go index 32946487..5d1b3bf3 100644 --- a/internal/splice/versions_test.go +++ b/internal/splice/versions_test.go @@ -71,6 +71,8 @@ func TestSupportsTokenStandardV2(t *testing.T) { {"0.6.11", true}, {"0.6.12", true}, {"0.7.0", true}, + {"0.8.0", true}, + {"0.8.1", true}, {"1.0.0", true}, {"token-standard-v2", true}, {"latest", false},