# Repository Storage Policy

Agrarian should stay on free GitHub/LFS limits as long as practical. GitHub is
the source-control system, not the long-term asset warehouse.

## GitHub Is For

- Source code.
- Config files.
- Scripts and build wrappers.
- Design docs, roadmap docs, and small metadata files.
- Curated Unreal assets needed to open and build the current project.
- Small data assets and test fixtures.
- LFS-tracked `.uasset`, `.umap`, small media, and other binary files that are
  intentionally part of the working game project.

## GitHub Is Not For

- Packaged builds.
- Raw DEM, lidar, bathymetry, satellite, or large GIS source datasets.
- Generated terrain tile packages beyond curated MVP samples.
- Derived Data Cache.
- Unreal `Intermediate/`, `Saved/`, and generated build products.
- Large marketplace/source-art libraries that are not actively used by the
  current build.
- Full-resolution marketing captures, raw videos, or archival exports.
- Long-term Earth-scale tile cache data.

## Large Data Homes

- DevBox project storage is the first local home for large working data.
- Future object storage should hold generated tile packages, source terrain
  datasets, build artifacts, and public download assets.
- Git should store manifests, checksums, provenance, import scripts, and small
  curated samples that let us reproduce large artifacts from source storage.

## Budget Targets

- Keep Git repository history small enough that clone/fetch remains practical.
- Treat Git LFS free storage and bandwidth as a scarce resource.
- Investigate before adding any single LFS object over `100 MB`.
- Avoid committing generated binary assets that change frequently.
- Never store full packaged builds in Git or Git LFS.

## Required Checks

Run this before adding large content or after any major asset import:

```bash
Scripts/audit_repo_storage.sh
```

If the audit shows large or frequently changing LFS files, decide whether they
belong in GitHub, DevBox artifact storage, or future object storage before
pushing.
