# locale agent deleted reviewed translations during catalog merge and the release shipped untranslated

## TL;DR

Fixes the locale agent dropping reviewed translations when merging catalogs. Merge by key with reviewed translations winning, never by blind overwrite. Use when a release ships untranslated strings after a merge. Not for strings never translated.

## The error

```text
Release shipped with raw English strings; the reviewed de translations were deleted in the catalog merge.
```

## Fix it

### Step 1: Find the merge that dropped them

```bash
node -e "console.log('check the merge commit: reviewed keys present before, gone after')"
```

Expected: You identify the destructive merge.

### Step 2: Restore the reviewed translations

```bash
node -e "console.log('recover the reviewed strings from the TMS or the pre-merge catalog')"
```

Expected: The catalog has the reviewed translations back.

### Step 3: Fix the merge strategy

```bash
node -e "console.log('merge by key, reviewed translations win over agent output')"
```

Expected: Future merges preserve reviewed work.

## When to use this

- Reviewed translations vanished after a catalog merge
- A release shipped untranslated after automation ran

## When NOT to use this

- Strings were never translated, send them to the TMS
- The merge conflicted, resolve the git conflict

## Tool and version compatibility

- Any catalog merge automation
- JSON, PO, and XLIFF catalogs

## Variant phrasings

### agent overwrote instead of deleted

Same fix: reviewed translations must win the merge.

### merge drops only one locale

That locale's file was not in the merge input set. Check the glob.

## Why it happens

A merge that replaces the whole catalog with the agent's output treats reviewed translations as stale data. Merging key by key with a priority rule keeps human-reviewed work safe.

## Edge cases

- Deleted source keys should retire their translations, not keep them forever
- The TMS is the source of truth; the catalog is a build artifact
- Audit the merge output before every release, not after

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_CAd5YdAnOB4rCSovQ_kELw
