PF research library · 5 min read

Existing HF installation: upgrade and recovery

r34 documentation · hugging-face-recovery.md

On this page
  1. 1. Record the current installation
  2. 2. Pause and make a verified recovery copy
  3. 3. Generate and qualify the replacement
  4. 4. Apply matching controller settings and code
  5. 5. Verify recovery and reopen access
  6. Recovery and rollback

For an already running native HF deployment, follow section 11 of the native HF guide. It supplies the complete Windows CMD and HF website sequence. This companion summarizes the preservation and acceptance requirements. New installations start at section 1 of that guide and use the full r34 release. The concise current upgrade route is R34_NATIVE_HF_RELEASE_UPGRADE.md. The consolidated release includes all approved native fixes plus shared changes; there is no historical patch installation chain.

1. Record the current installation

Where: secure operator records and the HF website. Record the controller, private code and public runtime Space names, state Bucket and prefix, immutable runtime digest, private code commit and code SHA256, controller commit, and current configuration. Use the deployment record template (source package reference: HUGGING_FACE_DEPLOYMENT_RECORD.md). Keep existing database, session, state-encryption and BYOK/BYOS keys in your private secret store. HF does not reveal secret values after they are saved.

Preserve the existing Bucket, prefix and stable secrets throughout an upgrade. Keep PF_HF_BOOTSTRAP absent for an initialized service. Preserve the approved PF_HF_MAX_STORAGE_BYTES value (16 GiB is 17179869184) and encrypted quota reservations/usage. Never lower it to a fresh-install example or reset the meter. The new code restores and migrates its existing database; creating a new prefix or keys is a different installation and does not recover the old one.

2. Pause and make a verified recovery copy

Where: PF/HF website, then Windows CMD. Close admission to new work, allow active runs to finish or cancel them, and verify their terminal provider state. Confirm that there is no other controller using the same Bucket and prefix. Pause the controller and require PAUSED before copying durable state.

Where: HF website. Create a new, empty, private backup Bucket in the source Bucket's storage region. Choose a unique name for each maintenance window. pf-simulation-state-backup-20261001 is an example name, not a required name or a Bucket to reuse. Give the local HF token read access to the source and read and write access to this destination, while retaining its deployment scopes.

Where: Windows CMD. Use the guide's HF Bucket-to-Bucket copy and verification commands. Keep the controller paused until source, destination and a second source listing agree on every file path, byte length and Xet hash, the source is nonempty, and the destination is private. Record the file and byte counts. The backup uses HF authentication and requires no additional S3 configuration. Preserve the existing runtime storage credentials.

A verified copy is a recovery checkpoint. It does not prove that a restore into a separate environment has succeeded; record any restore drill separately.

3. Generate and qualify the replacement

Where: Windows CMD with the tools environment active. Verify the full archive against its accompanying SHA256 file and extract it into a clean directory. Keep the preceding release and its upload folders available. Use the packaged deploy\saas\huggingface_native\build_space.py with a new output directory; it generates runtime, jobs and space together. Check that the private code manifest and controller base-code manifest report the same generated SHA256.

Use the packaged deploy_release.py upload-code command for the generated jobs/ contents in the existing private code Space. Record its exact returned code_revision and code_sha256; it verifies the committed remote inventory. Use those exact identities with the compatible, qualified, immutable public runtime image. Use the generated runtime context to establish the dependency contract, including FMU and QuTiP. Build and qualify a changed public runtime and record its new digest. An unchanged compatible runtime may be retained only when its context and image provenance are verified as described in section 11.4.

Preview the pinned qualification specification and then submit the reviewed self-test. --submit starts a billable HF Job. If a Job ID is returned, inspect that existing Job before considering another submission. Require completion and both confinement_probe_passed=true and scientific_runtime_probe_passed=true for the newly uploaded code. A passing self-test is one acceptance item, not a full SaaS or restore qualification.

4. Apply matching controller settings and code

Where: HF website or the explicit HF CLI commands in section 11. Windows CMD set commands only configure the local terminal. Save the new private-code repository, commit and SHA256 in the controller's HF Variables, retain its qualified runtime image, and set or retain the bounded receiver-startup setting. The default PF_HF_WAL_RECEIVER_START_TIMEOUT_SECONDS is 600 seconds; its allowed range is 30–3600. Verify the saved non-secret pins before uploading.

Keep the existing state binding and stable secrets, with PF_HF_BOOTSTRAP absent. Use the packaged deploy_release.py verify, prepare, apply, then status sequence for the matching generated bundle. Preparation verifies exact code pins; apply confirms pause before a parent-guarded commit, removes only recognized obsolete release-owned files and restarts. It refuses unexpected files or changed public Variables/revisions. Settings may themselves trigger provider restarts, so keep researcher access closed throughout maintenance. Inspect status before retrying an uncertain write; it can reconcile an exact committed bundle without repeating the mutation.

5. Verify recovery and reopen access

Require RUNNING, Application startup complete and the HTTP server startup message. Then open the actual direct .hf.space address in a normal browser tab. Sign in with the existing PF administrator account, open a previously saved project and download a known artifact. Run a small simulation through result collection, inspect its plots/report and verify a newly saved record survives a controlled restart. Test cancellation on a separate bounded run and apply the remaining authorization and operational acceptance checks in the guide.

Reopen researcher access only after the applicable checks pass. Use the guide's troubleshooting section if build or startup does not finish successfully; retain the state and configuration while identifying the failing phase.

Recovery and rollback

Retain the pre-upgrade backup and its matching code/configuration records. The consolidated shared application schema is 10, upgraded during native startup. A schema-9 or older controller cannot run against it. Reverting a controller commit alone does not reverse that migration. After startup has migrated data, use a reviewed forward repair or restore a separately verified pre-upgrade state with its complete matching old configuration/code. Account explicitly for writes after the backup; do not present code checkout as data rollback. Validate recovery in a separate isolated installation with the recorded compatible code and keys, without running a second writer against the production Bucket and prefix.

The full release includes those earlier compatibility fixes and the approved native latency, startup, response, runtime, WAL batching, ownership queue and persistence response recovery corrections. Follow the current full-release sequence rather than assembling those corrections separately.