Repository navigation
Restore legacy project archives and redirect recovered public URLs - #82
Merged
Merged
Conversation
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.
Legacy projects left in the original storage account cannot be recovered by the current same-bucket, first-login import. Add a private administrative receiver that validates a reviewed archive, restores its files through the existing owner and migration coordinators, and records a retryable completion receipt. Existing destination files are preserved and private projects remain private.
Recovered published addresses under
/sites/:legacyOwner/:slugredirect to the current/u/:handle/:slugaddress only through an explicit completed recovery record. Redirects follow project renames, stop after unpublishing, and never serve arbitrary legacy namespaces. A forward-only recovery handle leaves the user's primary public username available to claim.The caller is
AdmissionAgentAdmin.restoreSiteStudioLegacyProjectsin Admission PR 240. Release this receiver first, then Admission, then Doorway's administrative adapter and public redirect routing. Original archives remain outside the destination bucket; rolling back code does not reverse a completed data restore.Validation:
bun run check: app 759 tests, chat and preview boundary checks, frontend 225 tests, type checks and production build.Implemented by Codex GPT-5.6 Sol, coordinated and reviewed by GPT-6 Astra. Local checks use synthetic accounts and do not claim a real CUNY login or production restoration.
Receiver release verified: main
f9ae41e0f547dd1a59c27718ffbb0964118c762a, CI run 35761722514, serving version8af40205-c1b1-4263-9ab3-638956853e7dat 100%. A temporary local caller reached the production private entrypoint and both malformed-input readiness calls returned the expectedinvalidreceipt before data access. The helper was removed. This proves receiver availability; the dependent Admission/Doorway release and actual user restore remain pending.Production verification completed September 22, 2026: the supported Admission admin action returned
restoredfor the seven-project archive (47 stored objects). The old published address returns 302 withCache-Control: no-store; its canonical destination returns 200 with the expected document and opaque-origin sandbox. All six private legacy routes and protected metadata return 404. The original archive remains preserved. Ian's own dashboard/login confirmation is still a human follow-up.Deployed commits: Admission/Doorway
7afbbcad7e4c6175896c5d73fb4885e2a5ca1a59; Site Studio6916dc5060e43e85dc2ae872e7c78da0ad56efdd. Each was read back at one version serving 100%. Site release 35767394009 passed. The retry used the original saved idempotency request after the focused fix in Site Studio #83.