# Backup storage policy — open-weight model reserve **Status:** facility + path pinned (workstation VAULT HD) **Related:** `INTENT.md`, `SCOPE.md`, `inventory/collection-policy.md`, `docs/decisions/2026-07-24-nas-strategic-reserve.md` **Adjacent:** `disaster-control` BackupPolicy (platform backups — different concern) --- ## Purpose Define where Freedom Intelligence stores **open-weight model blobs** (and justified companions), how much capacity we allow, and how this reserve relates to other lab backup facilities. Git never stores weight tensors. Git stores: * inventory catalog metadata (`inventory/catalog/`) * policies and schemas * research briefs --- ## Storage class | Requirement | Policy | | ----------- | ------ | | **Class** | Backup / bulk durable storage — **not** hot cluster PVCs or app disks | | **Facility** | Workstation VAULT HD (`D:`) under `D:\vault\coulomb\` (interim pin 2026-07-28) | | **Durability** | Survives WSL rebuilds; weights live on the VAULT volume, not the git/WSL root | | **Performance** | Sequential read for restore/training pull is enough; low latency not required | | **Access** | Operator and approved lab hosts only; not a public mirror | | **Separation** | Do not co-mingle with age-encrypted operational backups (Forgejo dumps, k3s state) without a clear subdirectory and different lifecycle rules | Platform backup paths such as `/opt/backup/railiance/{infra,cluster}/` and `~/.cache/railiance/backups/` are **operational recovery** lanes. Model weights belong on the **VAULT model tree**, not on railiance hot disks. --- ## Target location | Field | Value | | ----- | ----- | | **Host / facility** | Workstation-attached bulk HD **VAULT** (Windows `D:`) | | **Raw capacity** | ~1.86 TB total (~1.76 TB free as of 2026-07-28 pin) | | **Base path (Windows)** | `D:\vault\coulomb\freedom-intelligence\` | | **Base path (WSL, when D: automounted)** | `/mnt/d/vault/coulomb/freedom-intelligence/` | | **Layout under base** | See [On-disk layout](#on-disk-layout) | | **Mount on lab hosts** | Local attach on operator workstation; WSL via drvfs `D:` → `/mnt/d` when enabled | | **Credentials** | Local filesystem ACL on the workstation HD; never commit secrets | **Interim note:** Earlier policy assumed a dedicated ~1 TB NAS. Operator chose this VAULT volume under `D:\vault\coulomb\` for now. Soft quota **850 GiB** for the model tree still applies (self-imposed discipline; disk is larger). Do **not** bulk-download multi-GB models into this git workspace or into hot root filesystems (`/` on WSL, `C:`). ### Path shape (pinned) ```text D:\vault\coulomb\freedom-intelligence\ # Windows /mnt/d/vault/coulomb/freedom-intelligence/ # WSL when D: mounted ├── models/ │ └── {org}__{name}/ │ └── {revision}/ │ ├── blobs/ # weight files, shards │ └── MANIFEST.txt # optional local copy of hashes ├── companions/ # adapters, tokenizers only when separate └── staging/ # incomplete downloads; not catalog-ready ``` Map each `{org}__{name}/{revision}` to an inventory catalog entry. Directories `models/`, `staging/`, and `companions/` were created 2026-07-28. --- ## On-disk layout | Path element | Rule | | ------------ | ---- | | `org__name` | Hugging Face-style id with `/` → `__` | | `revision` | Git commit SHA, tag, or release id used at download time | | `blobs/` | Actual files; prefer original names from source | | `staging/` | Incomplete transfers; purge or resume; never mark collected until complete + verified | Optional layout tags (directory name or catalog field): | Tag | Meaning | | --- | ------- | | runnable | Fits current run envelope (R tier) | | strategic | Capability reserve; may exceed current hardware (S tier) | --- ## Capacity budget | Parameter | Policy | | --------- | ------ | | **Device** | VAULT HD (`D:`) — model tree under `D:\vault\coulomb\freedom-intelligence\` | | **Soft quota (model reserve)** | **850 GiB** (self-imposed; disk is larger) | | **Hard stop** | **920 GiB** used under the freedom-intelligence base path | | **Growth review** | When catalog total ≥ **70% soft quota (~595 GiB)** | | **Per-pull threshold** | See `inventory/collection-policy.md` | | **Eviction** | Prefer drop **W** (watch) and easily re-obtained quants; protect unique **S** SOTA bases and the **R** spine | ### Portfolio guidance on 1 TB * Always keep the **runnable spine (R / former P0)** resident. * Use remaining space for a **small number of most-capable open models (S)**, preferably well-provenance compressed weights when full precision would exhaust the disk. * Do **not** attempt to mirror entire HF orgs. * Full bf16 of multiple 600B-class models will **not** fit; prioritize top capability identities. --- ## Integrity and provenance For every completed collection: 1. Record source URL and revision in the catalog entry. 2. Store checksums (`sha256` of each blob or upstream manifest digest). 3. Record download date (UTC) and downloader identity. 4. Prefer official org releases over anonymous re-uploads. 5. Keep license text or SPDX id in catalog; refuse unclear licenses. Verification: **catalog claims must match on-disk checksums** before status `collected`. --- ## Retention | Class | Retention | | ----- | --------- | | **Strategic capability (S)** | Keep until explicit deprecation or displacement by a clearly stronger open successor | | **Runnable spine (R)** | Keep while still the lab default for local ops / FT | | **Working set** | Active experiment bases + optional one superseded revision | | **Staging** | Max 14 days incomplete, then purge | | **Deprecated / evicted** | Metadata retained in catalog; blobs may be deleted | --- ## Encryption and offsite | Topic | Policy | | ----- | ------ | | **At rest** | NAS default; extra age/GPG of multi-hundred-GB trees optional | | **In transit** | Trusted lab network / local attach | | **Offsite copy** | Optional later; coordinate with disaster-control if added so model bulk does not break ops backup SLAs | --- ## What must not live here * Closed weights or artifacts whose terms forbid offline retention * Secrets, API keys, customer data, or ungoverned training corpora with personal data * Operational backups (databases, k3s state, Forgejo dumps) as the primary home * Git LFS dumps of full model trees as a substitute for the NAS --- ## Operator checklist - [x] Choose facility: bulk durable storage for model reserve (2026-07-24 intent) - [x] Set soft quota: **850 GiB** / hard stop **920 GiB** - [x] Pin path: **`D:\vault\coulomb\freedom-intelligence\`** (2026-07-28) - [x] Create `models/`, `staging/`, `companions/` - [x] Document Windows + WSL path forms above - [x] Ensure WSL can see `D:` (`/mnt/d`) when downloads run from Linux (verified 2026-07-28) ### Pin log | Date | Operator | Change | | ---- | -------- | ------ | | 2026-07-24 | foundation | Policy created; path unpinned | | 2026-07-24 | operator direction | Facility intent = 1 TB local NAS; soft quota 850 GiB; strategic unrunnable models in scope | | 2026-07-28 | operator direction | **Interim pin:** workstation VAULT HD `D:\vault\coulomb\freedom-intelligence\`; layout created; soft quota retained | | 2026-07-28 | operator | WSL mount verified: `D:` → `/mnt/d` (1.9T, writable) |