A clean UTF-8 copy cannot protect an EPUB build that never uses it. To generate an EPUB without carrying encoding errors forward, verify the relationship between the reopened copy and the exact chapter files selected for export. If that relationship cannot be shown, a structurally valid package must still be stopped before distribution.
The retained STUDIO-383 run fails this identity gate. Its 44-character Japanese copy reopens as UTF-8/LF. The three selected chapters, however, contain different English fixture text. The exported EPUB reports valid=true, but that result cannot prove that the accepted copy reached the book. For anyone searching “generate EPUB without encoding errors,” this is a reproducible rejection case, not a closed success chain.
A Clean Copy Cannot Guard an Unrelated Build
Encoding inspection and source selection answer different questions. The first asks whether a stored file can be decoded as intended. The second asks which files actually enter the generator. A passing answer to the first does not fill in the second.
The retained commands identify UTF-8 and Shift_JIS sources as LF with 44 characters, and the UTF-16LE source as LF with 45 characters. The named UTF-8 copy also reopens with 44 characters. Those values are valid for the small text fixture.
Add a relationship field to the preflight record: accepted copy → selected chapter. It must contain a recorded derivation or direct content checkpoints. Leaving it untested is a failure state, not an administrative blank. Otherwise an editor can inspect one file and accidentally generate another.
Read the Retained Text Before Trusting Counts
Both approved-utf8-content.txt and STUDIO-383-converted-copy.txt have SHA-256 fc70e9d5760d2252f7378372e49983270531119db30cc303c7c68a0d33dab465. The text begins with STUDIO-383 章頭 漢字 カタカナ ABC 123 and ends with STUDIO-383 章尾.
The saved command log records a rune file write dry run, the subsequent write to the named copy, and a later rune inspect text --file. That inspection returned UTF-8, LF, and 44 characters. Decoded equality with the approval file is true within this pair of short text files.
Keep the literal checkpoints as well as the count. Another piece of prose could also contain 44 characters. Beginning, middle, and ending strings make it possible to test whether the next file is actually derived from the accepted text rather than merely similar in size.
Follow the Selected Files Into XHTML
The export commands selected chapter-01.md, chapter-02.md, and chapter-03.md. These files contain English markers such as CASE-START-1 STUDIO-383 dedicated sample. and a matching end marker for each chapter. They do not contain the accepted Japanese sentence.
The retained rune epub select response lists those three paths. The rune epub plan response reports fileCount 3, chapterCount 3, every chapter included in the table of contents, and valid=true. These are sound observations about selection and planning, but they do not establish a relationship to the reopened copy.
After export, p001.xhtml, p002.xhtml, and p003.xhtml contain the same dedicated samples found in the selected Markdown. This proves the observed path from selected chapter to generated XHTML. It also confirms the gap: the accepted Japanese fixture appears in neither layer. Representative-text equality between the accepted copy and the EPUB is false, so it must not be claimed.
Interpret Valid as Structure, Not Provenance
The retained EPUB has SHA-256 bdae6fd52e9a27e594a570a2d2a079f98f71cfb593df9165283dff0469c1521b. It contains 11 ZIP entries, three navigation links, three NCX points, six spine items, no image resources, no image references, and no missing resource. The stored package inspection returned valid=true.
That result supports a bounded structural claim. The three chapters are packaged with corresponding navigation, and the inspected resource layer is complete. It does not establish that the prose was approved, that the saved UTF-8 copy supplied the chapters, or that an encoding defect was prevented.
Valid Unicode can hold the wrong sentence. A conforming package can hold the wrong revision. Source identity therefore requires content evidence in addition to structural validation.
Record This Run as a Rejected Handoff
Do not delete the result simply because it is not releasable. Retain the accepted-copy digest, all three chapter digests, and the EPUB digest. Mark the relationship field “different text.” Keep the structural counts as valid observations while rejecting the combined handoff.
The failure is not an unknown encoding: the named copy reopens. It is not a missing navigation item or image: the measured package structure is complete. The failure is that the inspected copy is not the selected source. This precise return point prevents an editor from disturbing unrelated settings during recovery.
An output file and an accepted output are different things. The existing EPUB is useful as a structural fixture, but it is not evidence that the approved Japanese text passed through generation.
Design the Rerun at the Selection Boundary
Preserve the current artifacts and give the recovery run a new identifier. Create a newly named chapter revision that actually uses the accepted UTF-8 text. The following steps describe the required rerun; they were not completed in the retained STUDIO-383 evidence.
First, fix the accepted copy digest and literal checkpoints. Save the new chapter file, reopen it, and verify those checkpoints. Record the exact path and digest passed to rune epub select. Inspect the plan for order and navigation. Export to a new EPUB name. Finally, reopen the generated XHTML and read the same checkpoints before accepting the structural result.
If copy and chapter differ, return to chapter creation. If chapter and XHTML differ, return to selection or generation. Do not rotate through encodings at random. Repair the earliest boundary where the recorded content changes.
What Safe Generation Means in This Case
The fixed evidence supports two separate results: a 44-character UTF-8 copy was saved and reopened, and an unrelated three-chapter EPUB passed structural inspection. Because the bridge between them is absent, the correct outcome of this run is “do not distribute.” It is not a demonstration of a clean manuscript reaching a clean EPUB.
No actual unrepresentable-character error was triggered. Graphical warning color, autosave suspension, an unsaved buffer, IME behavior, reader rendering, and KDP acceptance were not measured. Documented interface features must not be presented as observations from this command-driven run.
Generating safely means rejecting an unexplained source change before it reaches the next stage. The STUDIO-383 package should remain labelled as a structural sample until a new run proves accepted copy → selected chapter → generated XHTML with one connected set of evidence. Stopping here is the prevention control that the title promises.


