Skip to content

Backfill genre and language for E2E storylines (IDs 34-42) #551

@realproject7

Description

@realproject7

Summary

The 9 E2E storylines (IDs 34-42) were created via Foundry scripts, bypassing the web UI's inline indexer which sets genre and language. As a result, all stories show "Uncategorized" and the language filter doesn't work for non-English stories.

Root Cause

  • Genre and language are off-chain metadata passed via the web UI to /api/index/storyline
  • The backfill cron only indexes on-chain data — does NOT set genre/language
  • Foundry-created storylines skip the UI entirely

Genre Mapping (must match lib/genres.ts GENRES list exactly)

ID Title Genre (intended) Genre (matching list) Language
34 The Last Signal Sci-Fi Science Fiction English
35 The Holloway Manuscript Mystery Mystery English
36 The Ember Throne Fantasy Fantasy English
37 Still Life with Shadows Literary Fiction Contemporary Lit English
38 붉은 달의 아이 Horror Horror Korean
39 風鈴の夏 Slice of Life Contemporary Lit Japanese
40 碧血剑影 Wuxia Historical Fiction Chinese
41 El Jardín de las Mariposas Eternas Magical Realism Others Spanish
42 L'Heure Bleue Existential Contemporary Lit French

Fix

Create migration 00026_backfill_e2e_genre_language.sql:

UPDATE storylines SET genre = 'Science Fiction', language = 'English' WHERE storyline_id = 34 AND lower(contract_address) = lower('0x9D2AE1E99D0A6300bfcCF41A82260374e38744Cf');
UPDATE storylines SET genre = 'Mystery', language = 'English' WHERE storyline_id = 35 AND lower(contract_address) = lower('0x9D2AE1E99D0A6300bfcCF41A82260374e38744Cf');
UPDATE storylines SET genre = 'Fantasy', language = 'English' WHERE storyline_id = 36 AND lower(contract_address) = lower('0x9D2AE1E99D0A6300bfcCF41A82260374e38744Cf');
UPDATE storylines SET genre = 'Contemporary Lit', language = 'English' WHERE storyline_id = 37 AND lower(contract_address) = lower('0x9D2AE1E99D0A6300bfcCF41A82260374e38744Cf');
UPDATE storylines SET genre = 'Horror', language = 'Korean' WHERE storyline_id = 38 AND lower(contract_address) = lower('0x9D2AE1E99D0A6300bfcCF41A82260374e38744Cf');
UPDATE storylines SET genre = 'Contemporary Lit', language = 'Japanese' WHERE storyline_id = 39 AND lower(contract_address) = lower('0x9D2AE1E99D0A6300bfcCF41A82260374e38744Cf');
UPDATE storylines SET genre = 'Historical Fiction', language = 'Chinese' WHERE storyline_id = 40 AND lower(contract_address) = lower('0x9D2AE1E99D0A6300bfcCF41A82260374e38744Cf');
UPDATE storylines SET genre = 'Others', language = 'Spanish' WHERE storyline_id = 41 AND lower(contract_address) = lower('0x9D2AE1E99D0A6300bfcCF41A82260374e38744Cf');
UPDATE storylines SET genre = 'Contemporary Lit', language = 'French' WHERE storyline_id = 42 AND lower(contract_address) = lower('0x9D2AE1E99D0A6300bfcCF41A82260374e38744Cf');

Acceptance Criteria

  • All 9 storylines show correct genre on plotlink.xyz
  • Language filter works — Korean story under Korean, Japanese under Japanese, etc.
  • Genre values exactly match lib/genres.ts GENRES list
  • Language values exactly match lib/genres.ts LANGUAGES list

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent/T3Assigned to T3 builder agent

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions