Repository navigation
DEN-3829: prove GitHub-only recovery when Zed control plane is down - #388
ORESoftware wants to merge 24 commits into
Conversation
|
Exact-head execution update for |
|
Continuation-batch acceptance note: preserve the outage order as GitHub Release -> GHCR/Packages -> GitHub tag archive -> optional R2, with registry first only during normal operation. The next promotion evidence should explicitly bind the exact zed-lock/source-fallback revisions and prove a clean-home install plus frozen replay while both zpkg.net and the R2 sentinel are unavailable; no successful Cloudflare request should be necessary. |
|
Exact-head recheck on |
Goal
Make
zedprovably able to resolve, reconstruct, install, and frozen-restore public packages when the entire Zed-operated network control plane is unavailable: noregistry.zpkg.net, nocdn.zpkg.net/R2, no Cloudflare edge dependency, and no Zed application/API server.Runtime behavior
The configured registry remains the normal first choice. Once that HTTP registry path fails,
zed-clinow explicitly orders source recovery as:This local ordering deliberately overrides the generic
zed-interfaces::artifact_locators()order for the outage-recovery path, because the generic locator list currently places R2 before GitHub. A focused Rust test locks the GitHub-before-R2 invariant.Current
mainalready contains the broader source-fallback implementation merged in #379: GitHub repository identity is admitted through the committed.zpkg.toml, versions come from tags/releases, GitHub-hosted artifacts are supported, and tag archives can be deterministically repacked. This PR does not replace that implementation with the stale overlapping code from #380.Ten outage gates
The exact-head workflow proves:
zed_modules;--frozenreplay succeeds from another clean store;zpkg.netor Cloudflare response.The workflow also runs the focused Rust
source_fallbacktests on the exact PR head.Recovery model
GitHub is an independent recovery/content plane: repository API + committed manifest + tags/releases/GHCR/tag archives. GitHub fallback does not become a looser authority model; identity ambiguity, manifest mismatch, unsafe archives, and provenance/integrity failures remain hard errors.
Local
file://and loopback registries remain hermetic by default. Control-plane mutations such as publish/yank/namespace claim are outside the availability guarantee.See
docs/github-control-plane-outage.mdfor the full contract.