Files
2026-05-27 23:29:53 +01:00

1.6 KiB

Tasks: storage-set-partial

1. Abstract API

  • 1.1 Add abstract setPartial(key, offset, bytes, signal?): Promise<void> to AbstractStorage.
  • 1.2 Add protected defaultSetPartial(...) helper alongside defaultGetPartial.
  • 1.3 Add required readonly capabilities property; default all flags false.

2. MemoryStorage native impl

  • 2.1 MemoryStorage.setPartial(key, offset, bytes) — resize backing Uint8Array, arr.set(bytes, offset).
  • 2.2 capabilities = { partialReads: true, partialWrites: true, nativeStreams: true, atomicWrites: true, contentAddressable: false }.
  • 2.3 NamespacedStorage.setPartial delegates with prefixed key; capabilities mirror inner.

3. storage-s3 fallback wiring

  • 3.1 S3Storage.setPartial = defaultSetPartial via thin override.
  • 3.2 capabilities = { partialReads: <native if Range>, partialWrites: false, nativeStreams: true, atomicWrites: true, contentAddressable: false }.

4. Spec

  • 4.1 Add STORAGE-PARTIAL-WRITE-01 … STORAGE-PARTIAL-WRITE-04 with **Verified by:** lines.

5. Conformance tests

  • 5.1 src/abstract/abstract.spec-conformance.test.ts — -01 (signature), -02 (sparse extension), -03 (overlap overwrite), -04 (capabilities default).
  • 5.2 src/memory/memory.spec-conformance.test.ts — native setPartial, partialWrites === true.

6. Verify

  • 6.1 bunx turbo lint typecheck test --filter=@suaveplan/storage green.
  • 6.2 bunx turbo test:coverage --filter=@suaveplan/storage 100/100/100/100.
  • 6.3 bun scripts/openspec-conformance.ts @suaveplan/storage PASS.