The layout
The invariant that matters
The root must resolve to the same absolute path on the console, on every node, and inside every container. A shared filesystem, an RWX PVC, or a same-path bind mount all satisfy it. A relative root is refused at startup rather than resolved against whatever directory the process happened to start in.What is safe to reclaim
The caches are shared across runs on purpose. Without a shared HF cache, every job re-downloads tens
of gigabytes of weights, which on an internal link costs more than the training does.
Where the database is not
FORGE_DB_PATH is deliberately not under the storage root. That root is usually a shared
filesystem, and SQLite over NFS has well-known locking problems — the ledger would risk corruption
and every console replica would contend for one file. The database is control-plane state, not job
storage, so it stays local to the process.
A team deployment sets FORGE_DB_URL to Postgres and the question stops mattering.
Corpora live outside
FORGE_CORPUS_ROOT must sit outside the storage root, and startup refuses a configuration where
it does not. Corpora are governed read-only material with different access rules from the platform’s
own writes; nesting them would make one reclamation policy apply to both.
Accounting and pressure
The watermark is worth setting. A full disk breaks every running job at once, not just the next one
to start — and the jobs it breaks are the ones that have been running longest and have the most to
lose.
Storage quota is measured, not reserved, so it is eventually consistent — a user can briefly exceed
it between scans. The GPU gate is exact because allocation is a decision the platform makes;
storage is a fact it observes.