# V2 Gendered Text

This document defines gendered text support for `TODOS.phase-72.72.11.1.7`.
Gendered text selects masculine, feminine, or neutral forms based on the active
player character or NPC context.

## Data Files

Gender selector rules live in
`V2/ue/Content/Localization/V2/Gender/GenderRules_V2.json`. Gendered string
forms live in `V2/ue/Content/Localization/V2/Gender/GenderedStrings_V2.json`.
Player character and NPC sample contexts live in
`V2/ue/Content/Localization/V2/Gender/GenderContextSamples_V2.json`.

The sample string is `loc.dialogue.partner.status_ready.body`. It uses
`{actor_name}` and the selector `actorGender`.

## Selection Rules

Supported gender forms are:

- `masculine`
- `feminine`
- `neutral`

If a runtime context provides an unsupported or missing gender, the formatter
falls back to `neutral`. The tracked sample includes `npc.mystery` with
`unspecified` gender to prove this fallback path.

## Evaluation

`V2/ue/Tools/evaluate-v2-gendered-text.py` writes the deterministic evaluation
matrix to `V2/ue/Content/Localization/V2/Gender/GenderedTextEvaluation_V2.json`.

The expected selections are:

- `npc.blacksmith`: masculine form.
- `npc.scout`: feminine form.
- `player.custom_neutral`: neutral form.
- `npc.mystery`: neutral fallback form.

## Verification

Run this gate after changing rules, forms, contexts, evaluator logic, generated
evaluation output, docs, or CI wiring:

```bash
python3 V2/ue/Tools/check-v2-gendered-text.py
```

Required release gates:

- `localization-gendered-text-contract`
- `localization-gendered-text-masculine-form`
- `localization-gendered-text-feminine-form`
- `localization-gendered-text-neutral-form`
- `localization-gendered-text-fallback`
- `localization-gendered-text-ci-wired`
