# V2 Asset Version Control Artist Workflow

This guide covers `TODOS.phase-72.72.20.1.14`: the end-to-end artist workflow
for V2 binary asset version control.

## Source Of Truth

- Manifest:
  `V2/ue/Build/AssetPipeline/v2-asset-version-control-artist-workflow.json`
- Validator: `V2/ue/Tools/check-v2-asset-version-control-artist-workflow.py`
- Related guides: `artist-shallow-clone.md`, `large-repo-performance.md`,
  `binary-diff-visualization.md`, `asset-change-notification.md`,
  `asset-backup-disaster-recovery.md`, and `perforce-integration-guide.md`

## Artist Onboarding

Generate the large-repository performance profile first:

```bash
python3 V2/ue/Tools/v2_large_repo_performance.py profile \
  --profile artist \
  --repo-url <repo-url> \
  --workspace <workspace>
```

Then generate the shallow clone plan:

```bash
python3 V2/ue/Tools/v2_artist_shallow_clone.py plan \
  --repo-url <repo-url> \
  --workspace <workspace>
```

The approved onboarding path uses `GIT_LFS_SKIP_SMUDGE=1`, `--filter=blob:none`,
cone-mode sparse checkout, `git lfs fetch --recent`, and
`git lfs checkout V2/ue`. Do not use `git lfs fetch --all` for onboarding.

## Daily Sync And Performance

Keep sparse checkout enabled for `V2/ue`, `V2/docs/asset-pipeline`, and
`TODOS/phase-72.md`. Add narrow paths with `git sparse-checkout add <path>` when
needed. Keep LFS batch mode, TUS transfers, eight concurrent transfers,
60-second activity and keep-alive timeouts, and recent-ref fetches from the
large-repo performance profile.

## Lock Edit Submit

Lock binary assets before opening them in Unreal, Blender, Maya, Photoshop, or
an audio tool:

```bash
python3 V2/ue/Tools/v2_asset_locking_workflow.py lock --path <asset>
```

The pre-commit hook rejects staged binary assets that are not locked by the
current user. The post-commit hook releases current-user locks after the commit.
If a file is already locked by someone else, coordinate before editing instead
of replacing the asset locally.

## New Asset Intake

New binary assets must match `V2/ue/.gitattributes` and
`v2-binary-asset-attributes.json`. Textures, HDR images, source images, meshes,
audio, video, fonts, Unreal packages, and compressed textures are stored in Git
LFS. Respect the size budget: 100 MiB warns and 500 MiB fails.

Run:

```bash
python3 V2/ue/Tools/check-v2-asset-size-budget.py
python3 V2/ue/Tools/check-v2-asset-deduplication.py
python3 V2/ue/Tools/check-v2-asset-pruning.py
```

## Binary Diff Review

Before review, generate visual diffs for supported texture and mesh changes:

```bash
python3 V2/ue/Tools/v2_binary_diff_visualization.py compare \
  --kind image \
  --left <old.png> \
  --right <new.png> \
  --out-dir <report-dir>

python3 V2/ue/Tools/v2_binary_diff_visualization.py compare \
  --kind mesh \
  --left <old.obj> \
  --right <new.obj> \
  --out-dir <report-dir>
```

Attach `report.html`, `diff.png`, or `wireframe-overlay.svg` to the review when
the asset type supports it.

## Change Notification

Use the asset change notification planner to route affected owners and dependent
content teams:

```bash
python3 V2/ue/Tools/v2_asset_change_notification.py plan \
  --changed-list <changed-assets.txt> \
  --json-report <report.json>
```

The report includes direct owner routing, dependency evidence, Slack, Microsoft
Teams, email, and generic webhook payloads. CI keeps this in dry-run mode;
studio automation sends payloads using secrets outside source control.

## Cleanup And Recovery

Unused assets are reported, not deleted, by the pruning tool. Duplicate assets
are grouped by `sha256:` content address by the deduplication tool. LFS storage
is backed up by six-hour snapshots with `us-west-2` and `eu-central-1`
replication, six-hour RPO, four-hour RTO, and monthly restore drills.

## Perforce Studio Option

Studios using Perforce follow `perforce-integration-guide.md` for stream depot
layout, typemap, exclusive checkout, workspace setup, and P4 Git Connector
operation. The Git LFS mirror remains the OSS-style branch and CI validation
surface.

## Validation And Troubleshooting

Run the focused workflow validator before handing a workspace to an artist:

```bash
python3 V2/ue/Tools/check-v2-asset-version-control-artist-workflow.py
python3 V2/ue/Tools/check-v2-artist-shallow-clone.py
python3 V2/ue/Tools/check-v2-large-repo-performance.py
python3 V2/ue/Tools/check-v2-asset-locking-workflow.py
python3 V2/ue/Tools/check-v2-binary-diff-visualization.py
python3 V2/ue/Tools/check-v2-ci-workflow.py
```

If checkout is slow, verify `--filter=blob:none`, sparse checkout roots, LFS
batch settings, and recent-ref windows. If commit is blocked, check the Git LFS
lock owner and staged binary asset list. If review is unclear, regenerate the
binary diff report from known old and new files.
