Sync metadata flag conflict
Problem
Operators sometimes pass sync --metadata and sync --strip-metadata in the same invocation (copy-pasted CI flags, or “try both” locally). Without an explicit rule, it would be unclear whether structured leaves are promoted or stripped.
What we do
- Precedence:
--strip-metadatawins — leaves are written as plain strings (legacy_stringmode for that run). - Signal: emit
i18nprune.sync.metadata_flag_conflict(warning) on the CLI envelope and in human output so automation can detect ambiguous intent. - No hard failure: the run continues; fix flags or monitor the warning in CI.
Operator checklist
| Goal | Flags |
|---|---|
| Promote/repair structured leaves | sync --metadata (and configured localeLeaves.mode if needed) |
| Roll back to plain strings | sync --strip-metadata only |
| CI strictness | jq on `.issues[] |