Skip to content

track: core 0.2.1 nonce-fix propagation + lock_id header protocol decision #63

Description

@27Bslash6

Cross-SDK drift tracking for cachekit-ts. Surfaced during the 2026-06-06 fleet status review — both items originate outside this repo but require ts action to maintain parity.

1. core 0.2.1 nonce-seed fix → NAPI rebuild (propagation)

cachekit-core has an unreleased security fix (nonce seed) queued in cachekit-core#38 (chore(main): release cachekit-core 0.2.1). Our NAPI package @cachekit-io/cachekit-core-ts pins:

# packages/cachekit-core-ts/Cargo.toml
cachekit-core = { version = "0.2.0", features = ["encryption"] }

Unlike cachekit-py (picks up core via PyO3 dep bump automatically), ts must rebuild + republish the NAPI binary to ship the fix.

Action when core#38 merges + 0.2.1 publishes:

  • Bump cachekit-core to 0.2.1 in packages/cachekit-core-ts/Cargo.toml
  • Rebuild NAPI bindings, run protocol/wire-format tests
  • Confirm no wire-format impact (nonces travel in the envelope, so reads should stay compatible — verify, don't assume)
  • Republish @cachekit-io/cachekit-core-ts

2. lock_id query-string → header (pending protocol decision)

cachekit-py issue #131 flags lock_id leaking via URL query string (CWE-532) and proposes moving it to a request header. ts has the identical pattern:

// packages/cachekit/src/backends/cachekitio-lockable.ts:53
const url = `${this.inner['apiUrl']}/v1/cache/${encodeURIComponent(key)}/lock?lock_id=${encodeURIComponent(lockId)}`;

This is a wire-protocol change — if SaaS moves lock release to a header, all SDKs must follow in lockstep or lock interop breaks. Do not change ts unilaterally. Track py#131 + the SaaS-side decision; implement ts only once the protocol resolution lands.

  • Watch py#131 / protocol resolution
  • When decided: move lock_id to header in releaseLock (+ acquire if applicable), update protocol tests

3. (verify) bare-key lock fix parity

cachekit-py #135 fixed a double-lock 400 (key already carrying :lock). ts's acquireLock passes the key straight to the URL — confirm the SWR/stampede caller feeds it a bare key, not a pre-transformed one.

  • Audit the call path into acquireLock for double-suffix risk

No ts action is blocked today; items 1–2 are gated on upstream merges/decisions. This issue exists so they don't get lost.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions