Nativ: missing InDesign text diagnostic exercise, 5 November 2026 Download check_idml_text.py and literal-story-exercise.zip to the same folder. Requires Python 3.10+. No dependencies, network requests or archive extraction. Try: python3 check_idml_text.py literal-story-exercise.zip --contains "Keep the final sentence." Expected: 1 matching story (udemo), 1 phrase match, layoutChecked false. The phrase is split across two character-formatting runs in the XML. Then: python3 check_idml_text.py literal-story-exercise.zip --contains "This sentence is missing." Expected: 0 matching stories. No claim of deleted or failed translation follows. The ZIP is a manually authored text-parser fixture, NOT an InDesign document. It has no complete spreads, fonts or geometry. Do not open it in InDesign. It is not a generated translation, an overset-text detector or a repaired file. On a real IDML copy, replace the ZIP filename and choose an exact expected TARGET-language phrase from your approved translation. Phrase search is case-sensitive and does not normalize whitespace, punctuation or Unicode. Limits: - Only literal Content in story files referenced by designmap.xml is inspected. - No story-to-page placement, text-frame geometry or overset is calculated. - Hidden conditions, tracked changes, notes and variables are not resolved. - Text in images, outlined type, linked InCopy and XML backing stories is not comprehensively covered; this is not a text extractor or IDML validator. - Boundaries in cells/notes/anchored frames are conservatively separated. - Zero matches can mean changed wording, punctuation, encoding or unsupported content, not necessarily lost text. Use Story Editor and a human reviewer. - Reads are bounded (200 MiB ZIP, 8 MiB per XML part, 64 MiB XML total, 1000 referenced stories). Unsupported input is refused, not repaired. - The command prints counts and story identifiers, not the full document text. Keep reports containing project identifiers within your normal review team. - Read on a copy; the program does not write to its input or make translations.