Skip to content

CK v3 frame and Arrow envelope are off-spec — cross-SDK cannot parse Python-written SaaS entries #11

Description

@27Bslash6

Summary

The Python SDK wraps every value (all backends, incl. SaaS) in a b'CK'\x03 + JSON-header frame whose own docstring calls it "Python-SDK-internal". The wire-format spec documents only the bare ByteStorage rmp envelope ("When format is msgpack…") and never mentions the CK frame or the Arrow envelope ([8B xxh3][ARROW1…]). A TS/Rust/Go SDK reading a Python-written SaaS entry receives bytes it has no spec to parse.

Evidence

  • cachekit-py src/cachekit/serializers/wrapper.py:25 ("Python-SDK-internal"), :86-99 (frame layout); applied unconditionally at cache_handler.py:599
  • protocol/spec/wire-format.md documents only the rmp envelope; protocol/spec/interop-mode.md ("Plain MessagePack, no ByteStorage envelope") is explicitly NOT IMPLEMENTED in any SDK

Impact

Cross-SDK interop — a core product premise — is broken today for any value written by the Python SDK through the SaaS backend. Latent until a second SDK reads SaaS, but the spec and the implementation disagree now.

Fix

Either (a) document the CK v3 frame + Arrow envelope in the wire-format spec as the canonical container, or (b) define an interop mode that emits the bare documented envelope for cross-SDK keys. Decide and align all SDKs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdocumentationImprovements or additions to documentation

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions