@cat-factory/caching 0.13.1 → 0.13.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ consume through the kernel `AppCaches` port, implemented on
|
|
|
14
14
|
the facade injects a `notificationPairFactory` (built from layered-loader's
|
|
15
15
|
`createGroupNotificationPair` over dedicated ioredis clients, gated on `REDIS_URL`);
|
|
16
16
|
a write on one node then broadcasts the invalidated key/group so every peer drops its
|
|
17
|
-
in-memory entry. Only keys/groups travel on the wire
|
|
17
|
+
in-memory entry. Only keys/groups travel on the wire, never values. Absent the
|
|
18
18
|
factory (single replica, local mode, tests) the loaders are bare in-memory with zero
|
|
19
19
|
extra dependency.
|
|
20
20
|
- **Invalidate after commit, at every write site.** The consuming service calls
|
|
@@ -23,7 +23,7 @@ consume through the kernel `AppCaches` port, implemented on
|
|
|
23
23
|
- **Staleness probes for git-backed caches.** A profile with `ttlLeftBeforeRefreshInMsecs`
|
|
24
24
|
turns on preemptive in-memory refresh (layered-loader ≥ 14.5.3): an entry hit inside the
|
|
25
25
|
window runs the caller's per-read `isStillCurrent` probe (a sha/hash compare, strictly
|
|
26
|
-
cheaper than the load) in the background
|
|
26
|
+
cheaper than the load) in the background: TTL bump when the source hasn't moved, full
|
|
27
27
|
background reload otherwise. DB-backed invalidation-driven caches leave the window unset:
|
|
28
28
|
a DB read as a probe saves nothing over the DB read as the load.
|
|
29
29
|
- **Deep imports keep ioredis out of every runtime but Node.** layered-loader's root
|
|
@@ -35,9 +35,9 @@ consume through the kernel `AppCaches` port, implemented on
|
|
|
35
35
|
|
|
36
36
|
A Worker isolate has no cross-isolate invalidation bus and no Redis, so a TTL'd
|
|
37
37
|
in-isolate cache over **mutable cross-instance state** would serve stale data after a
|
|
38
|
-
write processed by another isolate
|
|
38
|
+
write processed by another isolate: a correctness bug, not an optimization. The
|
|
39
39
|
Worker therefore wires the isolate-safe profile: caches of mutable state are
|
|
40
|
-
configured **pass-through** (`enabled: false
|
|
40
|
+
configured **pass-through** (`enabled: false`; every read runs its load), and only
|
|
41
41
|
caches of immutable or self-verifying entries (sha-pinned repo reads, static
|
|
42
42
|
catalogs) get real TTLs. Distributed invalidation is a
|
|
43
43
|
genuine Node-only concern, not a facade-parity gap: the Worker's cross-instance state
|
|
@@ -48,7 +48,7 @@ per-isolate staleness bug actually surfaces.
|
|
|
48
48
|
Worker: its entries are external Confluence/Notion/GitHub/… page content re-validated
|
|
49
49
|
by the source's cheap version probe (`ttlLeftBeforeRefreshInMsecs` + `isStillCurrent`),
|
|
50
50
|
so a peer isolate's cached body self-heals within the refresh window without an
|
|
51
|
-
invalidation bus
|
|
51
|
+
invalidation bus: its staleness is bounded by the probe, exactly like a sha-pinned
|
|
52
52
|
read. Only `fragmentCatalog`, which mirrors our own mutable D1 rows, passes through.
|
|
53
53
|
|
|
54
54
|
## Named caches
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/caching",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.3",
|
|
4
4
|
"description": "The app-level caching seam for the Agent Architecture Board (docs/initiatives/caching-layer.md): createAppCaches builds the named, typed in-memory read-through caches (layered-loader) the services consume via the kernel AppCaches port, with optional distributed invalidation over an injected Redis notification pair. Redis is only ever an invalidation bus, never a data tier.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"layered-loader": "^16.0.0",
|
|
28
|
-
"@cat-factory/kernel": "0.
|
|
28
|
+
"@cat-factory/kernel": "0.218.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/node": "^26.1.2",
|