fix(cache): reject unsafe unstable cache fills - #3099
Open
james-elicx wants to merge 8 commits into
Open
Conversation
This was referenced Aug 26, 2026
james-elicx
force-pushed
the
codex/cacheability-unstable-cache-upgrade
branch
from
August 26, 2026 18:01
42a924a to
2bfabdc
Compare
Base automatically changed from
codex/cacheability-use-cache-ownership
to
codex/cacheability-cache-certification
August 26, 2026 18:01
commit: |
james-elicx
changed the base branch from
codex/cacheability-cache-certification
to
codex/cacheability-use-cache-ownership
August 26, 2026 18:05
james-elicx
force-pushed
the
codex/cacheability-unstable-cache-upgrade
branch
from
August 26, 2026 18:31
2bfabdc to
5005ff4
Compare
james-elicx
changed the base branch from
codex/cacheability-use-cache-ownership
to
main
August 26, 2026 18:31
james-elicx
changed the base branch from
main
to
codex/cacheability-use-cache-ownership
August 26, 2026 18:32
Contributor
|
Contributor
Performance benchmarksCompared 1 improved · 0 regressed · 5 within ±1.5%
View detailed results and traces 🟢 improvement · 🔴 regression · ⚫ change below 1.5% · paired base/head |
james-elicx
force-pushed
the
codex/cacheability-unstable-cache-upgrade
branch
from
August 26, 2026 19:33
5005ff4 to
49b1839
Compare
james-elicx
force-pushed
the
codex/cacheability-unstable-cache-upgrade
branch
from
August 26, 2026 19:42
49b1839 to
8905cda
Compare
james-elicx
force-pushed
the
codex/cacheability-unstable-cache-upgrade
branch
from
August 27, 2026 02:25
8905cda to
7ab2b60
Compare
Member
Author
|
/bigbonk review for issues |
Contributor
|
@james-elicx Bonk workflow was cancelled. View workflow run · To retry, trigger Bonk again. |
james-elicx
marked this pull request as ready for review
August 27, 2026 08:09
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up stack 1/2. Exact head:
7ab2b603de888ffc1c009a10e80db8e9f9e8f34c. Base: core #3103 ate2f05581b.Chain: #3099 → #3097.
This layer prevents a caught framework-invalid Cache Components execution from being published through
unstable_cache():unstable_cache()fill and after completed HTML/RSC captureThe built-workerd regression pre-seeds the legacy payload, proves the new Worker rejects it, and verifies the safely replaced payload through the old-Worker reader shape.
Boundary
This layer preserves vinext's existing cold-miss write scheduling: the caller awaits the data-cache write. Current Next.js can attach that write to App request pending revalidations and return the callback result first. Aligning write latency/failure semantics requires broader App Page request-lifecycle ownership and is separate from this cache-publication safety fix; this PR changes only independent callback execution and safe publication.
Next.js references:
Review size
Layer-only diff against #3103: 12 files, +243/-54.
Validation
vp checkgit diff --check