Skip to content

LAB-998: correct interop/v1 ship-status in spec, README, and feature matrix - #46

Open
27Bslash6 wants to merge 1 commit into
mainfrom
lab-998-interop-ship-status
Open

LAB-998: correct interop/v1 ship-status in spec, README, and feature matrix#46
27Bslash6 wants to merge 1 commit into
mainfrom
lab-998-interop-ship-status

Conversation

@27Bslash6

@27Bslash6 27Bslash6 commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Problem

This repo is the declared source of truth for cross-SDK interop, and it was telling readers interop/v1 is unimplemented. It has been released in all three SDKs since 2026-07-24, and the public docs site was already corrected in cachekit-io/docs#24 (LAB-996) — so the normative spec and docs.cachekit.io actively contradicted each other, with the spec carrying the false half. Under the project's documentation gate that is a trust bug, not a stale nicety.

What changed

Availability wording only, in three surfaces:

Surface Before After
spec/interop-mode.md STATUS normative, NOT yet implemented in any SDK normative and shipped opt-in in all three SDKs, with per-registry floors
README.md spec table (specified, not yet implemented in any SDK) (normative; shipped opt-in in all three SDKs — see the feature matrix for per-SDK version floors)
sdk-feature-matrix.md interop row ✅ Merged (#NNN, unreleased) ×3 ✅ Released + floor per SDK, new footnote ⁴

sdk-feature-matrix.md's Last updated: preamble gets this change's entry per the file's existing convention.

The README points at the matrix instead of repeating version numbers, so the floors live in exactly one place and there is only one thing to update next time.

Floors, not snapshots

Every availability claim is a floorPyPI 0.14.0+, crates.io 0.4.0+, npm 0.1.3+ — plus a pointer to the registry for current versions. A floor stays true as new versions publish.

This is the lesson from LAB-663, whose seven per-registry snapshots were falsified within 25 minutes of being authored: npm published 0.1.3 while that PR sat open. LAB-996 re-fixed the docs half with floor phrasing and it has held.

One trap worth flagging: Python's floor is 0.14.0, not 0.13.0

cachekit-py's changelog puts interop (#220) under the v0.13.0 tag — but neither 0.12.0 nor 0.13.0 was ever published to PyPI. Verified against the PyPI JSON API: no release keys exist for either version, so they are not merely file-less or yanked, they are absent.

So 0.14.0 (2026-07-22) is the earliest installable release containing interop mode. A floor of "0.13.0+" would have been a fresh lie wearing anti-drift clothing — pip install cachekit==0.13.0 cannot resolve. New footnote ⁴ records this explicitly so a future reader doesn't "correct" the floor back to an uninstallable version from the changelog alone.

Verification (2026-07-28, live registries + release notes)

SDK Interop PR Landed in tag First installable Registry latest
cachekit-py #220 v0.13.0 PyPI 0.14.0 0.16.0
cachekit-ts #71 cachekit-v0.1.3 npm 0.1.3 0.1.4
cachekit-rs #33, #35 cachekit-rs-v0.4.0 crates.io 0.4.0 0.5.0

Cross-checked against concepts/cross-language-interop.mdx on docs main — the floors here match the ones LAB-996 published (npm 0.1.3+, crates.io 0.4.0+), so spec and docs site now agree. No claim in this diff re-litigates that page.

Explicitly NOT touched

These say "not yet implemented" and are true — editing them would introduce a lie:

  • decisions/key-rotation.md, spec/encryption.md:346, CHANGELOG.md:19 — key rotation, genuinely unimplemented (LAB-516).
  • spec/interop-mode.md:50, spec/wire-format.md:42/:157 — "no SDK reads another's auto-mode entries". Still correct; auto-mode is SDK-internal by design.

I grepped the whole repo for not (yet )?implemented|unimplemented|unreleased rather than trusting the three line numbers in the ticket — the only in-scope hits were the three above, and the remaining hits are the true statements just listed plus the PHP column's accurate ❌ Not implemented cells.

Gates

Crypto/protocol expert-panel gate: does not apply. This diff changes availability wording only; no key format, AAD construction, encryption, or wire-format claim was touched. Same ruling the panel made for this exact class of edit on LAB-663.

Documentation gate: this diff is the docs pass. Surfaces updated: spec/interop-mode.md, README.md, sdk-feature-matrix.md (incl. footnotes and Last updated:). The sibling docs-site surface was already done in LAB-996; no further doc surface claims interop is unimplemented.

Checks. verify.yml's full suite run locally and green — all Python stdlib-only verifiers, the optional-deps --require-seal pass, and both JS cross-checks (interop-crosscheck.mjs, frame-crosscheck.mjs): 33 key + 4 value + 9 error + 1 AAD + 1 encryption interop vectors, 7 encryption vectors, 6 wire-format pairs, 7 python-frame vectors, 5 file-backend vectors. Unchanged behaviour expected — prose-only diff. (prek install is a no-op here: this repo ships no .pre-commit-config.yaml.)

Closes LAB-998

Summary by CodeRabbit

  • Documentation
    • Updated interop mode documentation to confirm it is now available as an opt-in feature across the Python, TypeScript, and Rust SDKs.
    • Added minimum released versions and links to current compliance information.
    • Corrected the SDK feature matrix to show interop mode as released, with clearer version guidance.

…e SDKs (LAB-998)

The repo that this project calls the source of truth for cross-SDK interop
still told readers interop/v1 was unimplemented. It has been released in
every SDK since 2026-07-24, and the public docs site was already corrected
(LAB-996 / cachekit-io/docs#24) — so the normative spec and the docs site
contradicted each other, with the spec carrying the false half. Under the
project's documentation gate that is a trust bug, not a stale nicety.

Three surfaces corrected:

- spec/interop-mode.md STATUS header: no longer "NOT yet implemented in any
  SDK"; states normative + shipped opt-in, with per-registry version floors.
- README.md spec table: the "(specified, not yet implemented in any SDK)"
  parenthetical now points at the feature matrix for per-SDK floors, so the
  version numbers live in exactly one place.
- sdk-feature-matrix.md interop row: "Merged (…, unreleased)" becomes
  "Released" with floors; Last updated preamble gets this change's entry.

Availability is stated as FLOORS (PyPI 0.14.0+, crates.io 0.4.0+, npm 0.1.3+)
rather than point-in-time snapshots. This is the lesson from LAB-663, whose
seven per-registry snapshots were falsified within 25 minutes of being
written when npm published 0.1.3 mid-review. A floor stays true as new
versions publish; a snapshot rots on contact.

Python's floor is 0.14.0, not the 0.13.0 its changelog implies: interop
merged under the v0.13.0 tag, but neither 0.12.0 nor 0.13.0 was ever
published to PyPI (verified against the PyPI JSON API — no release keys
exist for either), so 0.14.0 is the earliest installable release containing
it. Footnote 4 records this so a future reader does not "correct" the floor
back to an uninstallable version from the changelog alone.

Floors verified 2026-07-28 against live registries and each SDK's release
notes: cachekit-py #220 in the v0.13.0 tag (first on PyPI at 0.14.0),
cachekit-ts #71 in npm 0.1.3, cachekit-rs #33/#35 in crates.io 0.4.0.

Deliberately NOT touched — these say "not yet implemented" and are TRUE:
decisions/key-rotation.md, spec/encryption.md:346 and CHANGELOG.md:19 (key
rotation, genuinely unimplemented, LAB-516), and the auto-mode
non-readability statements in spec/interop-mode.md:50 and spec/wire-format.md
(auto-mode is SDK-internal by design). Editing those would introduce a lie.

No normative claim changed — availability wording only. No key format, AAD
construction, encryption, or wire-format change, so the crypto/protocol
expert-panel gate does not apply (same ruling the panel made for this class
of edit on LAB-663). verify.yml's full test-vector suite was run locally and
is green, as expected for a prose-only diff.

Closes LAB-998

Co-authored-by: multica-agent <github@multica.ai>
@kodus-27b

kodus-27b Bot commented Jul 28, 2026

Copy link
Copy Markdown

Kody Review Complete

Great news! 🎉
No issues were found that match your current review configurations.

Keep up the excellent work! 🚀

Kody Guide: Usage and Configuration
Interacting with Kody
  • Request a Review: Ask Kody to review your PR manually by adding a comment with the @kody start-review command at the root of your PR.

  • Validate Business Logic: Ask Kody to validate your code against business rules by adding a comment with the @kody -v business-logic command.

  • Provide Feedback: Help Kody learn and improve by reacting to its comments with a 👍 for helpful suggestions or a 👎 if improvements are needed.

Current Kody Configuration
Review Options

The following review options are enabled or disabled:

Options Enabled
Bug
Performance
Security
Business Logic

Access your configuration settings here.

@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 2eaceb5c-b802-4629-b3bc-1e1dfa49f585

📥 Commits

Reviewing files that changed from the base of the PR and between a4b392b and 49beaae.

📒 Files selected for processing (3)
  • README.md
  • sdk-feature-matrix.md
  • spec/interop-mode.md

Walkthrough

Interop/v1 documentation now describes opt-in support as shipped across Python, TypeScript, and Rust, with SDK release floors recorded in the feature matrix.

Changes

Interop v1 status alignment

Layer / File(s) Summary
Normative status references
spec/interop-mode.md, README.md
Interop/v1 is described as normative and shipped opt-in across all three SDKs, with minimum versions and registry references.
SDK compliance and version floors
sdk-feature-matrix.md
The compliance row now shows released status for each SDK and documents version numbers as minimum release floors.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Possibly related PRs

  • cachekit-io/protocol#24: Updates the SDK feature matrix with overlapping interop/v1 compliance and version-status details.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: correcting interop/v1 ship-status wording across the spec, README, and feature matrix.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch lab-998-interop-ship-status

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant