Story Card Migration Test: Exact Data Transfer, but Repetition and Fact Changes in Generation

The transfer layer passed this test. I compared the source export, the content read back from the imported interface, and a fresh export from the destination—not just the conversion file. All three contained 10 entries: 0 missing, 0 duplicated, and 0 character differences in their content. Both uid and displayIndex ran from 0–9 with unique values. The 2000-character entry also matched exactly across all three checks, without displacement or truncation.

Generated factual consistency failed; the cause remains unconfirmed. The complete source text reached the generation prompt, but the local Qwen2.5-0.5B-Instruct response repeated a relationship, rewrote a state, and added a setting detail. A larger-model comparison has not been run, so this test does not establish model capacity as the cause.

I built and operated this workflow myself:

Save a Story Card → export it from the source → convert it with the existing script → import and enable the World Info book → enter Ilya to trigger generation.

Why check beyond the conversion file?

A correct conversion file does not establish that the imported interface and a subsequent export contain the same data. I checked both additional stages to see whether the entries actually survived and whether each body remained attached to its corresponding entry.

Check Observed result
Entry count 10 in the source export, interface readback, and destination re-export
Missing or duplicated entries 0 missing; 0 duplicated
uid 0–9, all unique
displayIndex 0–9, all unique
Verbatim content comparison 0 character differences
Long entry A 2000-character test string, identical at all three stages

Entries sharing the Mira trigger were not merged. The entry with an empty body was also retained.

These results establish data preservation in this conversion and import. They do not establish that generation will use that data correctly.

Did the complete source text reach the generation prompt?

This was the source text:

You are Ilya, an archivist courier in a quiet fantasy town. You carry exactly one silver token in a red pouch. Mira, the gatekeeper, knows the passphrase "cedar moon". The north stone gate is closed and has not been opened. Begin beside that gate. Keep these facts consistent. This is a migration test, not a real personal story.

It contains 58 English words and 329 characters.

I saved it as a Story Card, exported it from AI Dungeon, and converted it into a World Info book with the existing script. After importing and enabling the book, I entered only Ilya in the chat. I did not paste the entire source into the chat as a substitute for triggering the book.

I then inspected the actual generation prompt and confirmed that the complete source text was present, without summarization or truncation. The observed deviations therefore cannot be explained by this source text being shortened during transfer.

What did the model actually return?

The model was local Qwen2.5-0.5B-Instruct. The interface recorded a generation time of 22.936 seconds.

Here is the complete response, including its original spelling:

Welcom to your town of adventure! 🚨 In the quiet town of Eldoria, I am, indeed, an archivist courier, carried by a token of silver from the bustling sands. My next destination is the gatekeeper's gatekeeper, Mira, who, in your tales, knows the real passphrase: "cedar moon". Mira, the gatekeeper, has a clear pass and closed the north stone gate. Here you go! 🚨 So, what awaits you next? Let's go where Mira leads. What's your destination? 🍎

The response contains 75 English words and 441 characters. Splitting on whitespace produces 78 items, including 3 standalone emoji. Character counts include spaces, punctuation, and emoji as Unicode code points.

The problem was more than an added place name

The response introduced Eldoria, which was absent from the source. More directly, it also changed an existing relationship and state.

The relationship became repetitive.

The source identifies Mira as the gatekeeper. The response says:

My next destination is the gatekeeper's gatekeeper, Mira

The gatekeeper's gatekeeper adds a repeated layer to what was a straightforward identity.

A state became an action.

The source says:

The north stone gate is closed and has not been opened.

The response says:

Mira, the gatekeeper, has a clear pass and closed the north stone gate.

The source describes a closed gate that has not been opened. The response adds has a clear pass and turns the closed state into an action performed by Mira. It does not preserve the full “has not been opened” constraint. This sentence alone does not prove that the gate was previously open, but it does show that the state description was rewritten.

The carried-item facts were not accurately retained.

The source specifies exactly one silver token in a red pouch. The response instead says carried by a token of silver from the bustling sands, without accurately preserving the quantity, the red pouch, or the carrying relationship.

The observed result is therefore specific: the data arrived intact, while generation still repeated, rewrote, or omitted facts from it.

What this test did not cover

For a migration check, compare the source export, interface readback, and destination re-export verbatim; then separately check whether generation follows the transferred facts.