Buckets are effectively Unversioned: an overwrite replaces in place. The versionId
machinery in §3 is not built — composite MST key escape(key)+TERM+invertedVersionId,
next_version_seq, ListObjectVersions, delete markers, Put/GetBucketVersioning
(Enabled/Suspended). The schema is designed toward it (blob_refs.version_id carries
the "null" sentinel; buckets.versioning/next_version_seq and
ObjectManifest.deleteMarker are reserved), so no manifest/MST-key migration is needed.
Also ratify the two flagged design decisions in §3 (composite key vs per-key version
index; direct-locator vs opaque versionId) and whether to raise MaxKeyBytes.
Refs: docs/architecture.md §3, §11, §12; code: bucket/manifest.go (DeleteMarker), mst/.
Part of #17
Buckets are effectively Unversioned: an overwrite replaces in place. The versionId
machinery in §3 is not built — composite MST key
escape(key)+TERM+invertedVersionId,next_version_seq,ListObjectVersions, delete markers,Put/GetBucketVersioning(Enabled/Suspended). The schema is designed toward it (
blob_refs.version_idcarriesthe
"null"sentinel;buckets.versioning/next_version_seqandObjectManifest.deleteMarkerare reserved), so no manifest/MST-key migration is needed.Also ratify the two flagged design decisions in §3 (composite key vs per-key version
index; direct-locator vs opaque
versionId) and whether to raiseMaxKeyBytes.Refs: docs/architecture.md §3, §11, §12; code:
bucket/manifest.go(DeleteMarker),mst/.Part of #17