Skip to content

Commit b6d81b6

Browse files
committed
docs(matrix): flip three TS Observability cells to shipped post-ts#75 state (LAB-1397)
cachekit-ts#75 (LAB-517) merged 2026-08-03, wiring the TS metrics option live. The Metrics cell goes dead→live prom-client, SaaS telemetry headers go user-wired→auto-wired, structured logging goes ❌→⚠️ setLogger hook (still not a structured logger). Footnote ¹ documented the silent no-op trust bug that ts#75 fixed, so it drops. Cell text mirrors the reconciliation comment on protocol#29 by the ts#75 implementer.
1 parent c8824b1 commit b6d81b6

1 file changed

Lines changed: 4 additions & 6 deletions

File tree

sdk-feature-matrix.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -156,17 +156,15 @@ The contract a storage backend must satisfy per SDK (bytes in / bytes out; seria
156156

157157
## Observability
158158

159-
Audited against code 2026-07-21 (LAB-275). "Wired" means the live cache path feeds it with zero user plumbing.
159+
Audited against code 2026-07-21 (LAB-275); TypeScript cells re-verified 2026-08-04 after [cachekit-ts#75](https://github.com/cachekit-io/cachekit-ts/pull/75) (LAB-517) merged. "Wired" means the live cache path feeds it with zero user plumbing.
160160

161161
| Feature | Python | Rust | TypeScript | PHP |
162162
| :--- | :---: | :---: | :---: | :---: |
163-
| Metrics | ✅ live `prometheus_client` counters/gauges/histograms (default registry; no HTTP exposition helper — py#146) | ⚠️ `L1Stats` SaaS header telemetry only, requires a user-supplied `MetricsProvider` nothing auto-wires (LAB-521) | Prometheus module exists but is dead `metrics` option accepted and **silently ignored** (LAB-517)¹ ||
164-
| Structured logging | ✅ JSON ring-buffer logger with sensitive-data masking | ❌ no `log`/`tracing` integration (LAB-521) | ❌ ad-hoc `console.error` only (LAB-517) ||
163+
| Metrics | ✅ live `prometheus_client` counters/gauges/histograms (default registry; no HTTP exposition helper — py#146) | ⚠️ `L1Stats` SaaS header telemetry only, requires a user-supplied `MetricsProvider` nothing auto-wires (LAB-521) | ✅ live Prometheus counters/gauges/histograms via optional `prom-client` peer dep `metrics: boolean \| MetricsConfig`, custom registry supported; warns loudly once and degrades to no-op when `prom-client` is absent (LAB-517) ||
164+
| Structured logging | ✅ JSON ring-buffer logger with sensitive-data masking | ❌ no `log`/`tracing` integration (LAB-521) | ⚠️ pluggable error-logger hook (`setLogger`), default `console.error` — still not a structured logger (LAB-517) ||
165165
| Distributed tracing (OTel) | ❌ span-shaped API is a no-op (`NoOpSpan`) ||||
166-
| SaaS telemetry headers (`X-CacheKit-L1-*`) | ✅ auto | ⚠️ reports `disabled` unless user wires a provider (LAB-521) | ⚠️ user-supplied `metricsProvider`, never auto-wired ||
166+
| SaaS telemetry headers (`X-CacheKit-L1-*`) | ✅ auto | ⚠️ reports `disabled` unless user wires a provider (LAB-521) | ✅ auto-wired from live L1/L2 hit/miss counters (explicit user `metricsProvider` still wins) ||
167167

168-
> ¹ The silent no-op is the trust bug: every intent preset accepts `metrics` (`intents.ts`), `CacheImpl` never reads it, and the Prometheus module isn't exported. LAB-517 wires it or rejects the option.
169-
>
170168
> Distributed tracing is absent in **every** SDK (a fleet-wide roadmap item, not a parity gap); Python's no-op span API should not be mistaken for tracing support.
171169
172170
---

0 commit comments

Comments
 (0)