# TRANSLATION_FIDELITY_RULES

**Type:** Doctrine (per-record tagging rules)
**Authority:** Cespedes et al. (2025) *JASIST* arXiv:2409.10633 (OpenAlex language-field noise); Jackson et al. (AHRQ; NBK121306) on machine-translation extraction; Pan-Science arXiv:2502.17882; Balk et al. on MT limits for complex interpretation.
**Invocation:** Step 6 of SKILL.md per retrieved record.

---

## OpenAlex Language-Field-As-INPUT-Only Rule (concrete check)

The `language` field on an OpenAlex record is INPUT ONLY. The Ledger tag comes from a triple-check.

**Per-record procedure:**

1. Read `openalex.language` as `lang_input`. Do NOT write it as `language_detected`.
2. **Script detection** on title + first 500 chars of abstract. Classify dominant Unicode script (Latin, Cyrillic, Arabic, CJK, Devanagari, etc.).
3. **Venue heuristic:** look up `host_venue.id` / ISSN against a venue-language registry (SciELO defaults PT/ES; AJOL defaults EN/FR/PT/AR).
4. **Abstract sampling:** 3-5 character n-grams against a language-ID model (langid.py / fastText); record top-1 and top-2 confidence.
5. Compute `language_detected`: (2)+(3)+(4) agree -> write that language. Two agree, one dissents -> write majority + `detection_conflict: true`. All disagree -> `language_detected: unknown` + `human_review_flag: true`.
6. If `lang_input != language_detected`, record both under `openalex_language_mismatch: {input, detected}` -- Cespedes-2025 signal preserved.

**Failure mode:** writing `language_detected = lang_input` is an OpenAlex-Language-Field-Trust defect and halts the record.

---

## Three Fidelity Levels

### `fidelity_high`

Native-language extraction OR English-original content. Author / reviewer is a native reader; no MT involved in the chain between source and S2 input.

### `fidelity_machine`

MT-extracted content where the material is NOT cultural, idiomatic, legal, or normative -- typically: empirical tables, methods sections, numerical results, citations. MT is acceptable per Jackson / AHRQ for these slots with elevated-but-bounded inaccuracy.

### `fidelity_review_required`

MT-extracted content that IS cultural, idiomatic, legal, or normative. Pan-Science (2502.17882) and Balk et al. explicitly caution MT for this class. These records carry `human_review_flag: true`.

---

## Decision Point F1 (explicit)

```
IF (language_detected != "en" OR MT was used in the chain)
   AND content-class in {cultural, idiomatic, legal, normative}
THEN fidelity_tag := fidelity_review_required
     human_review_flag := true
ELSE IF MT was used AND content-class NOT in the four cultural/idiomatic/legal/normative classes
THEN fidelity_tag := fidelity_machine
     human_review_flag := false
ELSE
     fidelity_tag := fidelity_high
     human_review_flag := false
```

Content-class inference: run a simple classifier or keyword heuristic against the sub-claim's `claim_type`:
- `normative` -> ALWAYS flag cultural/legal/normative.
- `interpretive` -> ALWAYS flag cultural/idiomatic.
- `descriptive / causal / predictive` -> flag as normative/legal only if the source text includes regulatory, policy, or values-debate language.

## Anti-Patterns

- Writing `language_detected = "en"` from `openalex.language` without the triple-check (Cespedes 2025 defect).
- Setting `fidelity_machine` on a normative excerpt because "the MT looked clean" -- Balk / Pan-Science contraindication.
- Silent drop of a record where the triple-check disagrees -- must instead record `detection_conflict: true` and route to review.
- Using average MT BLEU as the fidelity criterion -- fidelity is about content-class fit, not translation quality score.
