fix(cloudflare): Harden constraint cache state handling#1035
Draft
dcramer wants to merge 2 commits into
Draft
Conversation
8568274 to
014531d
Compare
Cache project verification timeouts with explicit timeout entries. Keep fail-open behavior while giving org, verified project, and timeout entries separate shapes. Co-Authored-By: GPT-5 Codex <codex@openai.com>
014531d to
5761626
Compare
Validate URL constraint slugs before they reach verification or cache key construction. Replace the hand-rolled KV shape guards with a Zod schema so cached org, verified project, and timeout entries share one runtime contract. Keep project cache keys literal instead of trimming inside the key builder, which avoids collapsing malformed project scopes into the org cache namespace. Co-Authored-By: GPT-5 Codex <noreply@openai.com>
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.
Make Cloudflare constraint caching preserve separate states for org cache hits, verified project constraints, and project verification timeouts. Project timeouts now get a short-lived cache entry so repeated MCP startup requests do not pay the same slow capability lookup, while tool filtering still fails open when capabilities are unknown.
Explicit Cache Entries
KV entries now use discriminated shapes instead of overloading
projectCapabilities: null, and reads validate those persisted shapes through a Zod schema. The cache key namespace moves fromv1tov2so deployedv1entries with the old shape are never mixed with the new entry model.Canonical Constraint Boundaries
The worker rejects invalid org/project URL slugs before verification or cache key construction. Cache keys now use the already-validated project slug literally instead of trimming inside the key builder, avoiding accidental project-to-org cache namespace collapse.
Background Cache Writes
Constraint cache writes are routed through a helper that requires a
waitUntilscheduler. The worker handler passesctx.waitUntil, keeping request responses from waiting on KV writes without leaving cache writes as unmanaged background promises.