mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-08 19:56:53 +00:00
A damaged protected span is a deterministic answer for an unchanged source, so a run that asks again spends a masking pass, a request and an inference to reach the same verdict. The refusal is now recorded as a `translation-refused: <engine> damaged-span` annotation in the entry's comments, naming the engine that produced it, and `pending` skips such an entry. Gettext drops the annotation when the source changes, so the entry comes back by itself; a change to the masking or to the damage predicate does not, and `make i18n-retry` clears the marks so those entries are offered again. The mark is matched by prefix, so a refusal from another engine counts and clears too. Measured on the `core` domain over 34 languages: old code 266 requests, 0 translated, 266 discarded first pass, new 266 requests, 266 annotations written second pass, new 0 requests, nothing to translate Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>