Skip to content

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

@27Bslash6

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
    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