Repository navigation
Conversation
bokelley
force-pushed
the
conductor/reject-prerelease-artifact-fallback
branch
2 times, most recently
from
September 15, 2026 05:07
8686c63 to
7d494c9
Compare
Contributor
Author
|
Refreshed the unchanged four-file containment patch onto current main at |
bokelley
force-pushed
the
conductor/reject-prerelease-artifact-fallback
branch
from
September 24, 2026 13:49
7d494c9 to
044a288
Compare
This branch has not been deployed
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.
An absent explicit prerelease such as
/schemas/3.2.0-rc.4/index.jsoncan currently serve rc.3 bytes, and its directory routes can redirect to rc.3. This change makes Worker and Fly schema/compliance routing return a generic404withCache-Control: no-storebefore an absent prerelease can reach a redirect, edge cache, compatibility rewrite, or fallback origin.Exact published prefixes retain immutable caching and their complete identity, including build metadata and Fly's accepted leading
v. Missing files under exact prerelease/compliance prefixes also terminate locally, so an older origin or downstream handler cannot substitute content. Discovery still lists stored versions only. Protocol routing, parsing, tarball and sidecar cache policies are unchanged.Stable docs-gap fallback remains supported for schemas: highest selectable stable version at or below the request, preferring the same minor and then the same major.
scripts/rewrite-dist-links.shcreates these schema pins; it does not create compliance pins. Compliance version pins now require an exact version. This bounds the compatibility behavior introduced in #5690/#5691 to its demonstrated consumer contract. With version listings available, resolved stable-schema docs-gap directory redirects and cache policy agree between Worker and Fly. Stable-schema listing outages remain operationally asymmetric: the Worker fails closed, while Fly may serve an exact local file or fall through without rewriting. This PR does not claim broad response-code parity outside exact-only paths. This residual does not permit prerelease fallback or wrong-version substitution.Related to #7404; this does not close the broader hosted-grader incident.
Incident scope and sequencing
The verified 2026-09-14 candidate inventory spans 2,101 paths: 1,612 schema + 485 compliance + 4 protocol. Existing schema/compliance paths returned exact rc.3 bytes when the rc.4 prefix was absent; bare/trailing version routes redirected to rc.3. Discovery omitted rc.4, and the four candidate-only compliance paths plus protocol artifact paths already returned 404. The inventory is the observed blast radius being audited, not evidence of 2,101 incorrect stored objects. No rc.4 tag or GitHub Release existed in the supplied incident evidence.
This is routing containment, not artifact recovery. No migration, generated/released artifact, dependency, R2/CDN state, tag, release, or deployment changes are included or performed. #7510 remains the publication-fence predecessor for #7509/#7507; this PR does not satisfy or bypass that fence.
Validation
npm run test:cdn-artifacts-worker— 33 passed, including origin/edge-cache traps and stale version-listing file misses.npx vitest run --config server/vitest.config.ts server/tests/integration/schema-routing.test.ts server/tests/integration/schema-versioning.test.ts— 120 passed. Both real handlers run against shared temporary fixtures covering GET/HEAD, exact/missing prereleases, file/bare/trailing/index/nested forms, candidate-only files, discovery, headers, stable bounds, malformed versions, build metadata, listing failures, and protocol regression behavior.npm run typecheck(including fixed-trace rollout checks), Worker/test Node syntax checks,git diff --check, image hook, conventional PR title, and changeset scope checks passed. No protocol changeset is required.7d494c9977507185eb361995d9fe2024dee1df7f:.husky/pre-commitran 71 root unit files / 1,063 tests, all static guards and both typecheck stages. The full server suite ran explicitly because the staged-file selector skips a clean rebased checkout: 617 files / 9,476 passed / 31 skipped. The fix(auth): allow trailing slashes on MCP CSRF exemptions #7533 and adjacent CSRF/MCP authorization selection passed 3 files / 83 tests. Registration/scope/immutable regression checks 3/3, docs navigation 55/55, schema links, version sync, and scope/immutable/whitespace checks passed. The normal pre-push hook remained enabled.7d494c9977507185eb361995d9fe2024dee1df7f: terminal CLEAR, verified 2026-09-15 05:18 UTC — 28 successful check runs + successful IPR status (29 successful contexts), one expected Draft review skip, zero pending/fail. All seven workflows passed on attempt 1; no retry was needed for this head. Previous-head CI and superseded local composition results are not reused.8686c63bfcaa05ced45f6f2a9219ec6bd22b507c: 28 successful check runs + successful IPR status (29 successful contexts), one expected Draft review skip, zero pending/fail. The two attempts below belong only to that previous head.server/tests/integration/external-smoke-check.test.ts, which timed out at its unchanged, fixed 30,000 ms deadline (30,005 ms observed). The exact test blob, configuration, imports, and dependency graph matched base2da35544ffb7257861324786a33cae9db0457bac; all four changed routing/test files were outside that direct graph. Its next discovery call and the same test on base passed.8686c63bfcaa05ced45f6f2a9219ec6bd22b507cwith the same timeout. This was external latency resampling; no stabilization or source fix is claimed. Both attempts and the independent diagnosis remain preserved; no additional retry or source adjustment was made.Review hold and exact revision
Draft; auto-merge off; unmerged. The existing
maintainershuman-review team request was renewed after terminal exact-head green at 2026-09-15T05:18:11Z; the native renewal event was verified. Human review remains requested; no readiness or merge change was made.mainatcdcc8f996e8acd2417d5f7a547711cd21929289b(verified against GitHub).7d494c9977507185eb361995d9fe2024dee1df7f.7295192ee535743f133d1f35a0d625b50107a64e.8686c63bfcaa05ced45f6f2a9219ec6bd22b507c/ old base2da35544ffb7257861324786a33cae9db0457bac, directly onto current main. Publication uses an explicit force-with-lease requiring that exact old remote head. fix(release): fence publication and recover superseded releases #7510 terminal qualification is a release-lane ordering gate, not this PR's ancestry; this PR remains independent and main-based.e480ed82f6ed036686d9f9335493dbbef013f176, old base336546b0dc2b1af9f12b955bddcfd74e002a23f9, and old tree74d73a58cf175a3879028f426da994759dd5d9b4. The fresh isolated review covers the rebased revision above.750fd8f1153f3db15e3703502d6dc5742b43739a88b4f015a26279aa8cb90b83(git diff --binary --abbrev=10 <base> <head>), unchanged.70c12dc5cf75bdf6f5ef74d1cdaa751beab3475c5a6d2d411cae86c3d5cfc742, unchanged.073b17211ae461d72384bae84b1ae9265f315426, unchanged.Open workspace in Conductor
Draft disposition — 2026-10-09
This draft is retained for the stated workstream. Continue on this existing branch; no parallel PR is needed. This disposition does not waive CI, review, migration, or release gates.