Garbled text and missing images can appear in the same preview, but they have different causes and recovery routes. Text failures belong to decoding, saved encoding, or conversion into XHTML. Image failures belong to source references, asset locations, selection, or packaging. Give each risk its own preflight ticket and join the tickets only at the test EPUB.
The STUDIO-152 controlled workspace inspected three encoded copies of one manuscript, accepted a saved UTF-8/LF/288-character result, and exported an EPUB containing two images. Local package inspection reported six spine items and valid=true.
Split preflight into text and asset tracks
The text ticket should name the received path, detected encoding, line ending, count, and readable checkpoints near the beginning, middle, and end. The asset ticket should name the referring source, relative path, physical image, purpose, and expected packaged name.
Do not collapse both into a single “preview looks fine” checkbox. A later image repair could unnecessarily resave an accepted manuscript, while an encoding change cannot repair a stale image path. Separate records let the failed track return to its last accepted stage.
Preserve the received manuscript and original assets. Work in a numbered copy so a failed decoding or move does not destroy the recovery point.
Decode the manuscript before touching image layout
The three inputs were source-utf-8.txt, source-shift_jis.txt, and source-utf-16le.txt. Independent rune inspect text calls reported UTF-8/LF/288 characters, Shift_JIS/LF/288 characters, and UTF-16LE/LF/289 characters. The extra UTF-16LE count requires BOM and checkpoint review; it is not automatically a missing prose character.
Never take a visibly garbled candidate and save it as UTF-8. That only encodes the wrongly decoded characters in a new format. Select the source whose detected encoding and three readable checkpoints agree. If production requires UTF-8, convert a working copy and make the closed output pass a new inspection.
The diagnosis and the delivery rule are distinct. Correctly identifying Shift_JIS is useful, but it does not satisfy a UTF-8 package policy.
Reopen the persisted UTF-8 candidate
The controlled source was opened in its dedicated workspace with rune tab open. After a dry run, the tab encoding was set with rune tab set-encoding --encoding UTF-8. The workspace was then closed, and a separate text inspection targeted the saved path.
Readback returned UTF-8, LF, and 288 characters. Decoded content matched the control passage. These values, plus the checkpoints, are the text-track exit ticket.
Rune Studio’s current Mac documentation describes highlighting characters unavailable in a selected encoding and pausing automatic save while they remain. This command-line specimen did not measure warning color or pause timing. Keep documented interface behavior separate from the measured saved-file result.
Trace every image reference from its source
Counting two files in an asset directory is not enough. For each intended picture, identify the manuscript or configuration that refers to it and resolve its relative path from that source. When an asset is moved or renamed, record the old-reference count, new-reference count, and saved-source readback.
Copying a same-named image to an obsolete location can hide the break while displaying the wrong content. Acceptance requires the deliberate reference to resolve to the identified asset. Treat external URLs separately because availability and offline reading are outside the rules for packaged local images.
Before export, the asset ticket should show that every expected reference resolves and that no obsolete source path remains in the selected chapters.
Inspect the two packaged images and six spine items
Only after the text and asset tickets passed did the run produce a test package. rune inspect epub --path <epub> reported six spine entries, two images, navigation present, NCX present, and valid=true. No missing images were reported by that inspection.
These fields have narrow meanings. Six spine items describe reading-order resources, not picture count. Two packaged images do not alone prove that every XHTML page displays the intended picture. Expand the EPUB and connect each manifest image item to the XHTML reference and stored filename. Then open the cover, first content image, and final content image in the target review environment.
Keep the output path and package hash on the ticket so results cannot be attached to an older EPUB with a similar name.
Route each failure to its owner
Text that is wrong immediately after opening returns to source selection and decoding. Text that fails only after saving returns to encoding configuration and destination. A correct saved file with damaged XHTML returns to chapter selection or conversion.
A nonexistent asset returns to asset management. A stale manuscript path returns to reference rewriting. A correct reference whose file is absent from the EPUB returns to export selection or the package manifest. Do not recode accepted text to solve an asset problem or recompress accepted images to solve decoding.
When both tracks fail, restart each from its last passing measurement instead of rebuilding everything.
Use Rune Studio within its measured boundary
Rune Studio is useful when sources, chapter selection, assets, metadata, and EPUB output need to remain connected inside a workspace. Dedicated recovery software is more appropriate for reconstructing damaged bytes, OCR, or advanced image repair. Retailer approval and identical rendering in every reader are also separate exit tests.
Local valid=true is not a guarantee of store acceptance or universal display. Run the target retailer’s validation and reader checks after this local preflight. Do not broaden an unmeasured warning screen or reader behavior into a claim from the current evidence.
Close both tracks on one export card
The clean EPUB creation card for this specimen records UTF-8, LF, 288 characters, three matching checkpoints, and equal decoded text on the text side. The asset side records resolved references, two packaged images, and no missing-image report. The package side records six spine items, navigation, NCX, and valid=true.
If one value is absent, return only to the stage that owns it. When both preflight tickets pass, connect them to one named EPUB and hash. This makes garbled text and missing images measurable before delivery rather than surprises discovered after publication.


