Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,14 @@ interop test, and a working proof of CacheKit's differentiators:
stores ciphertext only.
- **≈ $0/month** — all third-party hosting stays inside free tiers (cost table below).

> Status: **Stage 3 merged (live cross-SDK integration proven), Stage 4 deploy in progress**
> (LAB-738). Architecture locked in [`docs/architecture.md`](docs/architecture.md); build stages
> are groomed from it.
> Status: **live** — dashboard + API at
> [`skyline-edge.raywalker.workers.dev`](https://skyline-edge.raywalker.workers.dev), ingester on
> Render ([`skyline-ingester.onrender.com/health`](https://skyline-ingester.onrender.com/health)),
> hot path at
> [`skyline-hotpath.raywalker.workers.dev`](https://skyline-hotpath.raywalker.workers.dev).
> Re-verify any time with
> [`stage4/verify.sh`](stage4/verify.sh) (reachability, `X-Cache: HIT` from a non-origin POP,
> payload freshness). Architecture locked in [`docs/architecture.md`](docs/architecture.md).
Comment thread
27Bslash6 marked this conversation as resolved.

## Architecture

Expand Down
5 changes: 3 additions & 2 deletions docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,9 @@ Round-trip verified end-to-end: `spike/roundtrip/roundtrip.py` (exists, runs aga
API); the reqwest-based `CachekitIO` does not implement `Backend` on that target. **LAB-1079**:
`WorkersCachekitIO` panics on every live wasm32 request (`SystemTime::now()` in its session
headers) — the hot path substitutes a direct `worker::Fetch` GET until the SDK fix is published.
- Workers builds: `--no-default-features --features workers,cachekitio,encryption,macros`
(`l1`/moka and `redis`/fred are native-only).
- Workers builds: `--no-default-features --features workers,cachekitio`
(`l1`/moka and `redis`/fred are native-only; `encryption`/`macros` were dropped in `dcb6da0` —
the hot path never used them, see `hotpath/Cargo.toml`).

## Open items (flagged, not blocking the spec)

Expand Down
12 changes: 7 additions & 5 deletions edge/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,10 @@ instance URL is a `[vars]` entry, `CACHEKIT_API_URL`). Production routing and
a custom domain are Stage 4.

Two build-time accommodations for `@cachekit-io/cachekit` 0.1.3 (both retire
with the 0.1.4 WASM core, blocked on LAB-780): the `nodejs_compat` flag
(transitive node builtins), and a wrangler `[alias]` stubbing the NAPI-native
`@cachekit-io/cachekit-core-ts` — the edge never runs that path (interop
reads only, no ByteStorage envelope), and the stub throws if that ever stops
being true.
with the 0.1.5 WASM core — see `wrangler.toml` for the bump tracking): the
`nodejs_compat` flag (transitive node builtins), and a wrangler `[alias]`
stubbing the NAPI-native `@cachekit-io/cachekit-core-ts` — the edge never
runs that path (interop reads only, no ByteStorage envelope), and the stub
throws if that ever stops being true. Any new code path that needs the
native core (ByteStorage envelopes, encryption) compiles fine and **throws
at runtime**. Do not target 0.1.4 — it is abandoned and uninstallable.
Comment thread
coderabbitai[bot] marked this conversation as resolved.
4 changes: 2 additions & 2 deletions edge/src/core-ts-stub.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
*
* The real package is a NAPI native module (.node binaries) that can never
* run on Cloudflare Workers — bundling it is what breaks `wrangler deploy`
* on @cachekit-io/cachekit 0.1.3 (0.1.4 replaces it with a WASM core, but
* that bump is blocked upstream: LAB-780). The SDK only imports `ByteStorage`
* on @cachekit-io/cachekit 0.1.3 (0.1.5 replaces it with a WASM core
* LAB-831; bump logistics live in wrangler.toml). The SDK only imports `ByteStorage`
* from it statically, and only the compression path of the Cache class ever
* constructs one. The edge never uses that path: it reads raw bytes via
* `backend.get()` and decodes interop/v1 (plain MessagePack, no ByteStorage
Expand Down
8 changes: 6 additions & 2 deletions edge/wrangler.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,12 @@ compatibility_flags = ["nodejs_compat"]

# @cachekit-io/cachekit 0.1.3 statically imports its NAPI core (.node
# binaries — unbundleable and unrunnable on Workers). The edge never executes
# that path (interop reads only); alias it to a throwing stub. 0.1.4 fixes
# this properly with a WASM core but is uninstallable today (LAB-780).
# that path (interop reads only); alias it to a throwing stub. FAILURE MODE:
# add any code path that needs the native core (ByteStorage envelopes,
# encryption) and the edge throws at RUNTIME, not build time. 0.1.5 fixes
# this properly with a WASM core (LAB-831); the bump is Renovate PR #7 —
# drop this alias and the stub when it lands. 0.1.4 is abandoned and
# uninstallable; never target it.
[alias]
"@cachekit-io/cachekit-core-ts" = "./src/core-ts-stub.ts"

Expand Down