Repository navigation
chore(accounts): move off the untagged interface-cache pseudo-version onto go/cache v0.4.1 #1207
Description
module/services/accounts/code/go.mod depends on the cache library by an untagged
pseudo-version:
github.com/codefly-dev/interface-cache/go/cache v0.2.2-0.20260926205419-327a6e1d9aba
github.com/codefly-dev/service-redis/cache v0.2.0
That is a commit from 2026-09-26 on a v0.2.x line. The library is at
go/cache/v0.4.1 and the driver at cache/v0.3.0. A pseudo-version also
means nobody can tell from the file whether this is ahead of or behind a release,
and go get -u will not move it onto a tagged line on its own.
Used in pkg/infra/redis.go, pkg/membership/membership.go, and asserted on in
pkg/business/cardinality_quota_test.go and pkg/membership/membership_test.go.
What the gap contains
Between that commit and v0.4.1, the parts that change behaviour for a consumer:
Entry.Expires— an origin's own freshness bound, which narrows the stack's
retention and never widens it. Without it a read-through origin's bound was
discarded bystamp.Entry.NoStore— serve this value once, store it in no tier. The shape that
makes a value the cache must not keep (a partial or disagreeing read) safe to
return.- retention clamp, and
judgecheckingExpiresbefore the mode switch, so a
bounded entry is not served stale by a mode that would otherwise allow it. - observer-panic recovery in
report()plusWithObserverErrors— a panicking
observer no longer takes the request with it. go/cache/cachetest— the contract suite (Modes, Pitfalls, Simulation, Stack)
a driver and a consumer can both run, tightened inv0.4.1to hold them to the
Notifiercontract a real driver keeps.
This is a migration, not a bump
The API moved across v0.3.0 and v0.4.0; expect the compile to break and expect
Capabilities/Declarer and the entry format to need attention on the driver side
(service-redis's own cache/go.mod is on go/cache v0.4.0, and its entry format
went to v2). Budget for reading the two tags' diffs rather than editing the version
string and running the tests.
Target:
github.com/codefly-dev/interface-cache/go/cache v0.4.1
github.com/codefly-dev/service-redis/cache v0.3.0
Then run the contract suite from cachetest against this consumer's stack rather
than only the existing unit tests — that is what the suite is for, and it is the
cheapest proof the migration is faithful.
Rebase order
Four open PRs already touch module/services/accounts/code/go.mod for unrelated
reasons — #1125 (Core v0.19.4), #1124 (operation child), #1076 (gateway
workload identity), #1027 (telemetry service removal). None of them touches the
cache dependencies, so there is no duplicated work, but whichever lands last pays
the go.mod/go.sum conflict. Check which have merged before starting and rebase
onto main rather than fighting a stale base.
Docs
A change in behaviour updates the docs describing it in the same PR; name them in
the PR body. Mention the dependency bump in whatever the module uses to record
dependency floors.
Filed alongside #1206 (the redis agent pin, which carries a live panic exposure).
These are deliberately separate: #1206 is a one-line pin that should ship without
waiting on this migration.
Activity
antoinetoussaint-byte commentedon Oct 22, 2026
A lazybox agent is working on this.
claude(Opus 5.5) started at 2026-10-21 20:09 UTC, last renewed the claim at 2026-10-29 16:40 UTC, and the claim lapses at 2026-10-29 17:40 UTC unless it is renewed again. A claim is an assertion with an expiry, not proof that a process is alive.claim detail