Commit Graph

86 Commits

Author SHA1 Message Date
James d30a0ec067 fix(cloudflare): version response stage wire cache intent 2026-09-02 07:47:17 +01:00
James 17cf0dbc60 fix(cloudflare): reject stale response stages before admission 2026-09-02 07:34:09 +01:00
James 23fb0883ff fix(cloudflare): retry required staged cache bypasses 2026-09-02 07:15:05 +01:00
James 0c92a2892f fix(cloudflare): reject mixed response stages 2026-09-02 07:15:05 +01:00
James 9fd3e5b628 fix(cloudflare): validate terminal probe metadata 2026-09-02 07:15:05 +01:00
James 953967dc3a fix(cloudflare): retain resolved probe pathnames 2026-09-02 07:15:05 +01:00
James d18c565fd5 fix(cloudflare): probe terminal route representations 2026-09-02 07:15:05 +01:00
James d88673e309 fix(cloudflare): encode probe route headers 2026-09-02 07:15:05 +01:00
James 9fd8af8cba fix(cloudflare): identify terminal cacheability probes 2026-09-02 07:15:05 +01:00
James e01dfb4cc8 fix(cloudflare): stabilize resolved route probes 2026-09-02 07:15:05 +01:00
James 52d812119f fix(cloudflare): probe rewrite-resolved warm routes 2026-09-02 07:15:05 +01:00
James 6b3d03e35f fix(cloudflare): strip private fallback cache tags 2026-09-02 07:15:05 +01:00
James 590d19fc5f fix(cloudflare): prewarm staged rewrite variants 2026-09-02 07:15:04 +01:00
James 04d2371589 fix(cloudflare): require response-stage readiness 2026-09-02 07:15:04 +01:00
James 347ba67d30 docs(cloudflare): describe generated cache entrypoint 2026-09-02 07:15:04 +01:00
James 3f828715c1 fix(cloudflare): isolate shared response policy 2026-09-02 07:15:04 +01:00
James d1ecfc8d43 fix(cloudflare): strip untrusted stage transport headers 2026-09-02 07:15:04 +01:00
James 1092cb5a47 fix(cloudflare): keep cache policy inside cache stage 2026-09-02 07:15:04 +01:00
James a96d5919f8 fix(cloudflare): preserve authenticated cache dispatches 2026-09-02 07:15:04 +01:00
James e3bb2fde33 docs(cloudflare): clarify Workers Cache identity 2026-09-02 07:15:04 +01:00
James 6cb3da3e40 fix(cloudflare): keep request.cf responses private 2026-09-02 07:15:04 +01:00
James 638d2fd5af fix(cloudflare): preserve logical cache methods 2026-09-02 07:15:04 +01:00
James e7f2f353da fix(cloudflare): preserve public cache variance 2026-09-02 07:15:04 +01:00
James d3e73bcf52 fix(cloudflare): harden staged cache transport 2026-09-02 07:15:04 +01:00
James 8d9091276b fix(cloudflare): preserve staged cache admission 2026-09-02 07:15:03 +01:00
James f1bf6c66fb feat(cloudflare): isolate Workers Cache responses 2026-09-02 07:15:03 +01:00
James 1321ccb63a fix(cache): preserve adapter policy probe coverage 2026-09-02 06:46:42 +01:00
James 516e812fd7 fix(cache): preserve core admission semantics 2026-09-02 03:36:05 +01:00
James Anderson 9d94dcdd5f fix(cloudflare): support explicit CDN warm targets (#3138) 2026-09-01 22:16:55 +00:00
James Anderson 6a18dbe3ff fix(cloudflare): harden post-deploy readiness checks (#3136) 2026-09-01 22:43:02 +01:00
James Anderson 04c4de7f81 fix(cloudflare): restore web CDN warmup deploy (#3135) 2026-09-01 22:00:50 +01:00
James Anderson 2a08fb7913 fix(cloudflare): classify CDN cacheability per concrete route (#3115)
* fix(cloudflare): scale cacheability probing

* fix(cloudflare): preserve cache policy probe identities

* test(cache): cover conditional response vetoes

* fix(cache): match header policy sources exactly

* perf(cache): compute probe safety per pattern

* fix(build): omit empty route ownership metadata

* fix(cloudflare): classify cacheability per concrete path

* fix(cloudflare): retain zero-path static fallbacks

* test(cloudflare): cover on-demand static fallbacks

* fix(cloudflare): admit custom vary cache variants

* fix(cloudflare): keep wildcard vary private

* fix(cloudflare): reject wildcard vary during probing

* fix(cloudflare): reject empty Cache Components params

* fix(cloudflare): scope empty params validation to pages

* fix(cloudflare): remove cacheability response size limits

* fix(cloudflare): bound completed cache admission

* fix(cloudflare): release failed admission captures

* fix(cloudflare): honor staged readiness retries

* fix(cloudflare): retain probed manifest in dist

* fix(cloudflare): probe staged readiness without rendering

* fix(cloudflare): verify staged readiness response

* fix(cloudflare): reserve staged readiness endpoint

* fix(cloudflare): relax cacheability manifest bounds

* perf(cloudflare): avoid duplicate deployment status check
2026-09-01 21:25:26 +01:00
James Anderson c8bea6bccf feat(cache): classify and warm static Route Handlers (#3113)
* feat(cache): classify and warm static Route Handlers

* fix(cache): identify Route Handler probe responses

* test(cache): assert Route Handler probe identity

* fix(cache): prove final Route Handler responses

* fix(cache): admit explicit Route Handler policies safely

* fix(cache): close Route Handler admission fallbacks

* fix(cache): honor explicit dynamic handler policies

* fix(cache): reject unsafe Route Handler probe responses

* fix(cache): preserve Route Handler CDN policy ownership
2026-09-01 21:25:26 +01:00
James Anderson 09969d951a feat(cache): probe Pages Router cacheability (#3098)
* feat(cache): probe Pages Router cacheability

* test(cache): prove Pages prewarm reuse

* fix(cache): fail closed for Pages request variants

* test(cache): assert Pages response finalization

* fix(cache): transfer hybrid Pages admission ownership

* fix(cloudflare): warm Pages Router data routes

* fix(cache): align Pages cacheability ownership

* test(cache): preserve Pages ownership order

* fix(cache): enforce Pages response admission without manifest

* fix(cache): align Pages request-time cache policy

* test(cache): expect completed Pages request-time probes

* fix(cache): preserve routing vetoes during probing

* fix(cache): preserve final routing cache policy

* fix(cache): retain middleware cache policy precedence
2026-09-01 21:25:25 +01:00
James Anderson 8956b70556 fix(cache): certify staged cache fills before promotion (#3094)
* fix(cache): certify staged cache fills before promotion

* test(cache): verify post-purge CDN admission

* test(cache): await post-purge CDN reuse

* fix(cloudflare): make cache fill certification opt-in

* fix(cloudflare): make cache certification authoritative

* style(cloudflare): format certification deploy
2026-09-01 21:25:25 +01:00
James Anderson c2377c6b23 feat(cache): deploy probed manifests in two stages (#3093)
* feat(cache): deploy probed manifests in two stages

* fix(cache): isolate App Page cacheability probes

* fix(cache): preserve hybrid route ownership in probes

* fix(cache): isolate staged probe retries

* fix(cache): fail closed for unprobed request identities

* fix(cache): bound and filter staged cacheability manifests

* fix(cloudflare): validate cacheability manifest imports

* fix(cloudflare): bound staged cacheability probes

* fix(cloudflare): isolate cacheability probe budgets

* fix(cloudflare): bound staged probe envelopes

* test(cache): import manifest limit from owner

* fix(cloudflare): fail closed during staged warming

* fix(cloudflare): guard final staged traffic

* fix(cloudflare): deploy empty cacheability manifests

* fix(cloudflare): reconcile staged deployment failures
2026-09-01 21:25:24 +01:00
James Anderson bbaed77c35 fix(cache): gate CDN admission on probed routes (#3092)
* fix(cache): gate CDN admission on probed routes

* fix(cache): admit no-manifest responses after clean EOF

* fix(cache): fail closed for contextual admission

* fix(cache): isolate conditional config headers

* test(cache): use a valid legacy revalidate fixture

* fix(cache): finalize private app page evaluations

* test(cache): cover RSC manifest admission

* fix(cache): veto late private response policy

* fix(cache): reject conditional middleware probes

* fix(cache): trust framework admission policy

* fix(cache): isolate request-conditioned CDN responses

* fix(cache): avoid cookie response variation

* fix(cache): preserve hybrid Pages admission policy

* test(cache): allow existing Pages warm fills

* fix(cache): complete cacheable route handler responses

* fix(cache): preserve final public page policy

* fix(cache): complete adapter-admitted route handlers

* fix(cache): preserve route handler opt-out headers

* fix(cache): preserve explicit route handler policy

* style(cache): format Route Handler admission
2026-09-01 21:25:23 +01:00
James Anderson 56b6be06d6 fix(cloudflare): discover prewarm paths from staged worker (#3090)
* fix(cloudflare): discover prewarm paths from staged worker

* fix(cloudflare): hide prerender capability from user code

* perf(cloudflare): skip discovery URL parsing on ordinary requests

* fix(cloudflare): bound staged discovery phases

* perf(pages): lazy-load staged discovery runtime

* fix(cloudflare): use the full staged discovery deadline

* fix(cloudflare): distinguish staged discovery failures

* test(cloudflare): preserve deadline-bounded discovery

* test(cloudflare): avoid wall-clock retry count

* test(cloudflare): stabilize discovery deadline coverage
2026-09-01 21:25:22 +01:00
James Anderson 4146d69021 fix(cloudflare): verify Worker version IDs during CDN warmup (#3072)
* fix(cloudflare): revalidate stale warmup retries

* fix(cloudflare): report CDN warmup retry progress

* test(cloudflare): retry prewarm verification on fresh Worker

* feat(cloudflare): configure CDN readiness probes

* fix(cloudflare): validate CDN warmup version overrides

* fix(cloudflare): verify CDN warmup version ids

* test(cloudflare): opt into dangerous warmup fallback

* fix(cloudflare): harden warmup version validation

* docs(cloudflare): clarify version binding environments
2026-08-24 23:03:15 +01:00
James Anderson 8759b65c86 fix(build): validate CDN warm discovery and deploy inputs (#3057)
* fix(build): validate CDN warm path params

* fix(build): exclude handlers from CDN warm paths

* fix(build): resolve all CDN warm path owners

* fix(build): preserve exact CDN warm path identity

* fix(build): preserve encoded Pages warm paths

* test(cloudflare): preserve encoded warm request URLs

* fix(build): reject unsafe Pages warm paths

* fix(router): match localized warm paths case-insensitively

* fix(cache): honor build identity adapter capability

* fix(build): reject normalized CDN warm paths

* fix(build): discover dynamic MDX warm paths

* fix(build): skip routes without static param generators

* fix(cloudflare): validate warmup promotion delay
2026-08-24 23:03:15 +01:00
James Anderson e2e2b177eb fix(cloudflare): complete warmup response and promotion contracts (#3046)
* test(cloudflare): prove deployed Pages CDN warmup

* fix(cloudflare): reject incomplete no-promote warmup

* fix(cloudflare): keep warm discovery fail-closed

* test(cloudflare): prove prewarmed App HTML reuse

* fix(cloudflare): enforce no-promote warmup contract

* fix(cloudflare): warm terminal ISR responses
2026-08-24 23:03:14 +01:00
James Anderson f1efcc1e60 fix(cloudflare): harden canonical RSC warmup end to end (#3040)
* fix(cloudflare): validate reusable warm responses

* fix(cloudflare): retry staged warmup failures safely

* fix(cloudflare): extend staged propagation retries

* fix(build): filter Pages-owned RSC warm paths

* fix(cloudflare): keep CDN warmup correct with custom adapters and i18n

* fix(cloudflare): reject unusable CDN warm responses

* fix(cloudflare): keep CDN warmup bound to the deployed build

* fix(router): reuse warmed RSC on locale-prefixed hybrid routes

* fix(cloudflare): verify exact build and variant during CDN warmup

* fix(router): keep warmed RSC ownership rewrite-safe

* test(cloudflare): prove browser reuse of warmed RSC variants

* test(cloudflare): bind RSC warm proof to each deploy attempt

* fix(rsc): keep deferred loading shells contextual

* fix(build): keep CDN warm discovery route-correct

* fix(cache): preserve valid CDN policy during RSC warmup

* fix(cloudflare): warm the deployed Worker route host

* fix(cloudflare): preserve staged warmup guarantees

* fix(build): discover localized Pages warmup paths

* fix(cloudflare): wait for staged Worker before CDN warmup

* fix(cloudflare): preserve strict warmup deploy invariants

* fix(build): fail closed during CDN warm discovery
2026-08-24 23:03:14 +01:00
James Anderson aeee350a6f feat(cloudflare): configure warmup promotion delay (#3017) 2026-08-24 23:03:13 +01:00
James Anderson 7bf69109fc feat(cloudflare): allow warmup without promotion (#3016) 2026-08-24 23:03:12 +01:00
James Anderson 843ecd1ef7 fix(cloudflare): default CDN warmup concurrency to 25 (#3015) 2026-08-24 23:03:12 +01:00
James Anderson 8bb09481d6 feat(cloudflare): prewarm canonical ISR RSC requests (#3002)
* feat(cloudflare): prewarm canonical ISR RSC requests

* fix(cloudflare): forward preview deploy options

* fix(cloudflare): harden canonical RSC prewarming

* fix(test): wait for preview alias propagation

* fix(cloudflare): guarantee exact RSC prewarm reuse

* fix(cloudflare): harden canonical RSC prewarming

* fix(cloudflare): preserve definitive RSC warm identity

* fix(cloudflare): warm immutable worker versions

* test(form): expect Next-compatible absolute navigation

* fix(cloudflare): harden RSC prewarm deployment

* test(cloudflare): stabilize deployed RSC proof

* test(cloudflare): await RSC prefetch completion

* test(cloudflare): isolate RSC readiness probes

* fix(cloudflare): warm RSC through version overrides

* fix(cloudflare): parse labeled Worker version IDs

* fix(cloudflare): warm document requests as HTML

* fix(cloudflare): retry staged version propagation

* test(cloudflare): seed prewarm proof with prior Worker

* fix(cloudflare): await version override propagation

* fix(cloudflare): serialize staged cache warming

* fix(cloudflare): verify warmed RSC build identity

* fix(cloudflare): harden staged RSC cache warming

* fix(cache): keep RSC prewarm identity build-scoped

* fix(cloudflare): gate warmup on uploaded build

* fix(cache): certify canonical RSC warmup responses

* fix(cache): harden canonical RSC warmup propagation

* fix(cache): close RSC warmup review gaps

* fix(cache): preserve explicit response cache policies

* feat(cloudflare): prewarm canonical RSC variants without prerendering

* fix(cloudflare): forward deploy config from CLI

* fix(cache): close RSC prewarm reuse gaps

* fix(cloudflare): parse labeled Worker version IDs

* fix(router): preserve canonical prefetch invalidation

* test(cloudflare): align RSC seed Worker bindings

* fix(cloudflare): scope warmup deadlines per request

* test(cloudflare): avoid caching stale warmup seed

* fix(cloudflare): fail permanent warmup errors promptly

* fix(router): keep contextual RSC requests hashed

* test(cloudflare): await promoted warmup Worker

* test(cloudflare): retry browser warmup source

* revert: restore focused warmup deadline fix

* fix(cloudflare): remove warmup propagation deadline

* fix(cloudflare): allow slower warmup responses

* fix(cloudflare): confirm warmed cache hits

* fix(cloudflare): confirm cache hits without backoff

* fix(cloudflare): avoid duplicate cache warm requests

* test(cloudflare): allow prewarm propagation

* test(cloudflare): isolate loading prewarm propagation

* test(cloudflare): await promoted prewarm worker

* fix(cloudflare): wait for warm cache propagation before promotion

* test(cloudflare): allow promoted warm cache to settle

* test(cloudflare): wait after promoted build is reachable

* test(cloudflare): poll deployed version before warm cache checks

* test(cloudflare): trace warm cache identity

* test(cloudflare): trace prewarm verification location

* test(cloudflare): compare warm cache clients

* test(cloudflare): trace bypassed response identity

* fix(cloudflare): serialize warm cache variants

* test(cloudflare): report prewarm cache miss context

* test(cloudflare): await target RSC deployment readiness

* test(cloudflare): await stable worker promotion

* test(cloudflare): isolate RSC prewarm target

* fix(cloudflare): defer CDN warmup retries

* fix(cloudflare): verify warmed RSC variants

* test(cloudflare): trace RSC warm cache paths

* fix(cloudflare): separate loading-shell warm cache key

* test(cloudflare): make RSC warm reuse proof deterministic

* test(cloudflare): tolerate stale promoted Worker routing

* fix(rsc): enforce definitive loading-shell cache key
2026-08-24 23:03:12 +01:00
James Anderson 9a876322c5 fix(web): consolidate canonical host SEO signals (#2989) 2026-08-19 00:12:05 +01:00
github-actions[bot] 365c604032 chore: version packages (beta) (#2844)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-15 09:49:29 +00:00
James Anderson c4d645b196 fix(prerender): cache use-cache metadata routes (#2848)
* fix(prerender): expose production build phase

* fix(prerender): load config in production build phase

* fix(prerender): cache use-cache metadata routes

* test(ci): serialize route collision fixture

* fix(prerender): skip uncached metadata seeds
2026-08-10 23:04:04 +01:00
James Anderson d84c4beae3 fix(cache): delegate CDN header cleanup to adapters (#2797)
* fix(cache): delegate CDN header cleanup to adapters

* fix(cache): keep provider headers in CDN adapters

* docs(cache): define adapter header ownership

* test(cache): restore adapter lifecycle coverage

* fix(cache): require Cloudflare-owned CDN adapters

* test(cache): configure adapters in Cloudflare builds

* fix(cache): use the existing Cloudflare CDN adapter

* fix(cache): keep the Cloudflare CDN adapter opt-in

* refactor(cache): keep Cloudflare header policy in CDN adapter
2026-08-10 01:03:14 +01:00