diff --git a/codex/manifest/manifest.nim b/codex/manifest/manifest.nim index b9d40945..65a51cf2 100644 --- a/codex/manifest/manifest.nim +++ b/codex/manifest/manifest.nim @@ -324,6 +324,7 @@ func new*( ecM: manifest.ecM, originalTreeCid: manifest.treeCid, originalDatasetSize: manifest.originalDatasetSize, + protectedStrategy: manifest.protectedStrategy, verifiable: true, verifyRoot: verifyRoot, slotRoots: @slotRoots, diff --git a/tests/codex/testmanifest.nim b/tests/codex/testmanifest.nim index 188cc957..fc74d817 100644 --- a/tests/codex/testmanifest.nim +++ b/tests/codex/testmanifest.nim @@ -74,3 +74,28 @@ checksuite "Manifest": test "Should encode/decode to/from verifiable manifest": check: encodeDecode(verifiableManifest) == verifiableManifest + + +suite "Manifest - Attribute Inheritance": + let + base = Manifest.new( + treeCid = Cid.example, + blockSize = 1.MiBs, + datasetSize = 100.MiBs + ) + protected = Manifest.new( + manifest = base, + treeCid = Cid.example, + datasetSize = 200.MiBs, + ecK = 1, + ecM = 1, + strategy = SteppedStrategy + ) + verifiable = Manifest.new( + manifest = protected, + verifyRoot = Cid.example, + slotRoots = @[Cid.example, Cid.example] + ).tryGet() + + test "Should preserve interleaving strategy for protected manifest in verifiable manifest": + check verifiable.protectedStrategy == SteppedStrategy