{
  "$schema": "urn:puremu:fidelity:schema:v2",
  "claims": [
    {
      "assessment": "Ověřeno spustitelným nástrojem proti čerstvému výpisu z produkce. Soubor nese kontrolní součet a kontrola bez shody odmítne porovnávat, takže rozklad je doložený po bajtech, ne po velikosti. Katalog vyžaduje pro stav verified_match veřejně citovatelný dobový podklad; tady je rozhodčím klient majitele, který je pro tento realm závazný, ale citovat se nedá. Proto implemented_unverified, ne verified_match.",
      "confidence": {
        "basis": "Rozklad je doložený kontrolním součtem souboru a mapování kódů vyšlo z dat, ne z přepisu.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "ancient-sets.client-option-agreement",
      "observed": "Třicet šest sad, které nesou obě strany, se shoduje ve všech možnostech, v pořadí i ve složení. Dvacet čtyři kódů možností má napříč sadami právě jeden význam. Klient jmenuje dalších třináct sad, pro které realm skupinu nemá; jejich předměty tu buď nejsou, nebo nepatří do žádné starobylé sady.",
      "provenance": [
        {
          "anchor": "OK: every shared ancient set gives what the client says it gives, in the same order",
          "anchor_sha256": "9b39b7d63b54f10fbb9aebcf4f44029a9092fbfdd7cb9e61a0fc4b339be3a8b6",
          "line": 293,
          "role": "regression_test",
          "source_id": "gate.ancient-sets-against-client"
        }
      ],
      "reference": "Klientská Data/Local/Eng/ItemSetOption_eng.bmd a ItemSetType.bmd.",
      "status": "implemented_unverified",
      "surface": "items",
      "title": "Možnosti starobylých sad se shodují s klientem majitele"
    },
    {
      "assessment": "Čím postava začíná a co dostane za úroveň, nikdo neporovnal. Čtyři dobové sady z doby Season 5/6 nesou `Data/Character/DefaultClassInfo.txt` a tam, kde se překrývají, jsou shodné do znaku.\n\nPorovnalo se 198 hodnot u osmnácti tříd realmu — výchozí síla, obratnost, vitalita, energie, vůdcovství, život a mana; body za úroveň; a čtyři růstové poměry, které dobový server počítá v `ObjectManager.cpp`: život za úroveň, manu za úroveň, život za bod vitality a manu za bod energie. Povýšené třídy se porovnávají proti své základní, protože dobová tabulka pro Blade Knighta samostatný řádek nemá.\n\nRealm sedí na všem kromě jediné hodnoty: **Summoner dostával 1,7 many za bod energie tam, kde čtyři dobové sady říkají 1,5.**\n\nZajímavý je původ té sedmnáctky. Zpočátku to vypadalo na tenký nález ze dvou sad — jenže seznam zdrojů byl neúplný, soubor má pět sad, a při hledání se ukázalo, že varianta s 1,7 existuje taky. Pochází ale výhradně ze **Season 18**. Je to tedy tentýž tvar jako Aréna beroucí NPC z mapy verze 0.75 a Golden Archer svou dlaždici z 0.95d: hodnota z jiné edice, která se dostala dovnitř proto, že soubor, ze kterého pochází, vypadá stejně.\n\nVzorce tříd samotné brána pinuje proti úpravám a je to tak správně, takže oprava jede stejným nosičem jako všechno ostatní — jediným, který se dostane do databáze, jež už existuje.",
      "confidence": {
        "basis": "Porovnáno proti běžící produkci proti čtyřem dobovým sadám z doby Season 5/6; pozdější stromy mudevs jsou záměrně vynechané, protože právě ze Season 18 pochází ta chybná hodnota. Regresní test drží opravený poměr u všech tří summonerských tříd a obsahuje kontrolu, že se ostatní tři růstové poměry Summonera, které už byly správné, nepohnuly.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "classes.figures-against-period",
      "observed": {
        "everything_else_matched": true,
        "summoner_energy_to_mana": {
          "now": 1.5,
          "season_18_value": 1.7,
          "was": 1.7
        }
      },
      "provenance": [
        {
          "anchor": "(20, 1.5f), // Summoner",
          "anchor_sha256": "6feca31525eed04669f444e6b50a24c6e80fc6c4440c7814852b6c50217f4610",
          "line": 493,
          "role": "implementation",
          "source_id": "patch.summoner-mana-growth.puremugameplayprofile"
        },
        {
          "anchor": "must gain the period's mana per point of energy.",
          "anchor_sha256": "c351b5f5b4bded8e2e88101909f0d59ebd057babfc4376a32ded2afa3e923baf",
          "line": 3720,
          "role": "regression_test",
          "source_id": "patch.summoner-mana-growth.puremugameplayprofiletest"
        },
        {
          "anchor": "already matched the period and must stay.",
          "anchor_sha256": "bb737fe0bb9c8504902b178fbe3fa4d9c5e6e7848abaff942ef94c78ea4dacc1",
          "line": 3738,
          "role": "regression_test",
          "source_id": "patch.summoner-mana-growth.puremugameplayprofiletest"
        },
        {
          "anchor": "Later mudevs trees carry the same file",
          "anchor_sha256": "ca29f5bfc10e72479099d121a50878e2c96bf5bc933e07d6b256c4e1c91584fc",
          "line": 10,
          "role": "review_record",
          "source_id": "gate.classes-against-period"
        }
      ],
      "reference": {
        "classes": 18,
        "corrected": 3,
        "figures_compared": 198,
        "period_tables": 4
      },
      "status": "implemented_unverified",
      "surface": "classes",
      "title": "Čím postava začíná a co získává, proti dobovým tabulkám"
    },
    {
      "assessment": "Rage Fighter získává svých jedenáct dovedností třemi cestami a všechny v tomhle realmu fungují: Charge dostane při vytvoření postavy (plugin je v produkci aktivní), Killing Blow, Beast Uppercut a Phoenix Shot nese NASAZENÁ rukavice nebo hvězda, a sedm dalších (262-268) učí konzumovatelné pergameny skupiny 15, čísel 30-36. CO ty pergameny učí, je doloženo dvěma nezávislými dobovými stromy (mu-server-ex MagicInf.cpp:80-86 a kessiler MagicInf.cpp:117-144) a PureMU to má shodně. JAK se získávaly, doloženo NENÍ ani jedním směrem. V tomhle realmu mají dnes dvě cesty: obecný náhodný drop z monster úrovně 70 až 100, tedy řádově jeden kus na sto a více zabití, a od 9. 9. 2026 obchod Pasi the Mage v Lorencii (viz doplněk z 2026-09-29 na konci). Výroba, quest ani bedna je nenabízí. Jeden zdroj, který by to zdánlivě řešil (ItemDropManager.txt v mu-server-ex), byl výslovně VYŘAZEN: je to vlastní třída té distribuce, která běží před vanilní logikou a v rekonstrukci originálu neexistuje, takže o Webzenu nevypovídá. Prakticky dosažitelná je na úrovni 28-30 jedna dovednost navíc: Sacred Glove nemá požadavek na úroveň, jen sílu 85 a hbitost 35, padá kolem úrovně 52 a s 50% šancí nese vlastnost, která dovednost udílí.\n\nDOPLNĚNO 2026-08-20 po prohledání dobového korpusu jedenácti dochovaných sad: pergameny v obchodech JSOU, ale každá sada je dává jinému NPC. mudevs Season 6 prodává dva (15/32 Dragon Lore a 15/33 Dragon Slayer) plus dvě Sacred Gloves u Bola, obchodníka se zbraněmi v Karutanu; ProjectRebirth prodává všech sedm u Pasi the Wizard v Lorencii; xMuPP všech sedm u Hanza the Blacksmith. Tři sady, tři různá NPC, žádné dvě se neshodují.\n\nŽe jde o úpravy repacků, a ne o rozptyl v dobových datech, ukazuje kontrola na TÉMŽE NPC: Bolův skutečný sortiment je v louis-s6-u31 i v ProjectRebirthu shodný do položky — šest zbraní 0/16, 2/8, 2/9, 4/14, 4/16 a 5/6 — a připnuté OpenMU (CreateBoloStore) má přesně tuhle šestici. Takhle vypadá shoda, když jsou data původní. Sortiment s pergameny je proti tomu v každé sadě jiný.\n\nMezera tedy TRVÁ, ale s lepším odůvodněním: není to tím, že by v korpusu nic nebylo, ale tím, že to, co v něm je, se samo se sebou neshoduje — a u téhož NPC se přitom shoduje dokonale. Realm proto tehdy pergameny do žádného obchodu nepřidal.\n\nDOPLNĚNO 2026-08-21 po pokusu ze čtvrtého úhlu — tabulky dropů. Mezera TRVÁ, ale vyřadily se čtyři slepé cesty a jedna z nich byla past. (1) ItemDropManager.txt všech sedm pergamenů NESE a dává jim pásma úrovně netvora (30: 80-90, 31: 100-110, 32: 90-100, 33: 100-110, 34: 100-110, 35: 90-100, 36: 70-80); realmová DropLevel sedí na dolní hranici u všech sedmi a stejně tak u svitků 28 a 29, které nikdo nezkoumal a do porovnání se dostaly jen sousedstvím - devět z devíti. Je to ale TENTÝŽ soubor, který tohle tvrzení už jednou vyřadilo, a vyřazení bylo znovu ověřeno: ItemDropManager.cpp mají jen ServerSimulator a mu-server-ex a vanilní ItemDrop.cpp/DropEx.cpp nemají ani jeden, kdežto ProjectRebirth, Main5.2, zTeamS6.3 i muOnline-season6 to mají naopak. Shoda devět z devíti proto říká, že OpenMU a ta linie čerpaly ze společného původu, ne že jde o Webzenovo číslo. (2) Nejsou to tři sady, je to jeden soubor ve třech kopiích: otisky se liší jen proto, že jeden má CRLF a druhý LF; po odstranění CR je rozdíl nula. (3) Klient nosičem není - jeho pole Level (offset 32 v záznamu Item.bmd, offsety ověřeny proti známým Width 38, Height 39, Durability 47, MagicDur 48 a součtu 84 B) se od pásma liší u sedmi z devíti. Je to úroveň předmětu, ne úroveň dropu. (4) Ostatní dobové ItemDrop.txt (louis-s6-u31, xMuPP, mudevs Season 6 s 91 řádky) nemají pro sloučený index 7710-7716 řádek vůbec; jsou to doplňkové seznamy vlastních dropů, ne obecná tabulka.\n\nDOPLNĚNO 2026-09-29, rozhodnutí majitele RF-SOURCE-001 z 2026-09-09: pergameny PRODÁVÁ Pasi the Mage (NPC 254) v Lorencii, všech sedm, v jinak volných polích 23 a 104-109. Důvod není dobový, ale zásadový: třída, jejíž sedm z jedenácti dovedností visí na neznámém dropu, není vyvážená postava, a nákup za Zen není pay-to-win. Je to vlastní politika realmu, ne tvrzení o Global serveru, a proto karta zůstává mezerou: jak se pergameny sháněly v originále, dál nevíme. Dobový obchod nebo drop pro ně kartu znovu otevře.\n\nCeny jsou naopak původní, a to přesně: launch klient 1.04C má v tabulce předmětů Data/Local/Eng/item_eng.bmd (SHA-256 029955e4…, člen seznamu mu1-04c-full-eng-members.csv) v poli nákupní ceny Chain Drive 100 000, Dark Side 175 000, Dragon Roar 100 000, Dragon Slasher 265 000, Ignore Defense 175 000, Increase Health 35 000 a Increase Block 25 000 Zen. Profil realmu (ClientItemValues) je zapisuje zpět při každém startu, až po updatech, a produkce je na obou realmech drží. Vyšší ceny, na kterých se shodnou tabulky Louis a Deathway (175 000 až 345 000), jsou dvě komunitní linie a přesný klient je přebíjí: klient si cenu v obchodě počítá ze své tabulky, takže jiná serverová cena by ukázala jedno číslo a strhla jiné. Ty ceny se nikdy neúčtovaly.",
      "confidence": {
        "basis": "Cesty získání prověřeny přes osm tabulek i obecný generátor dropu; dobové zdroje potvrzují obsah pergamenů, nikoli jejich zdroj.",
        "level": "high",
        "scope": "known_gap"
      },
      "id": "classes.rage-fighter-skill-sources",
      "observed": {
        "bolo_stock_matches_pinned_openmu": true,
        "client_level_field_matches_drop_band": false,
        "corpus_sets_with_vanilla_drop_code_carrying_parchments": 0,
        "parchment_drop_level_range": [
          70,
          100
        ],
        "parchment_paths_other_than_random_drop": 1,
        "parchment_prices_match_exact_client": true,
        "period_drop_table_carriers_after_deduplication": 1,
        "period_shops_agreeing_on_the_npc": 0,
        "period_shops_selling_parchments": 3,
        "sacred_glove_level_requirement": 0,
        "skill_option_chance_percent": 50,
        "unlearnable_skills_in_realm": 0
      },
      "provenance": [
        {
          "anchor": "(13, 76), // Orb of Impale",
          "anchor_sha256": "b504798e259a8066dee10b70ccdc9de5dcaca5255455b15aefd769f9cf807ab2",
          "line": 255,
          "role": "implementation",
          "source_id": "patch.shop-slot-repair.puremugameplayprofile"
        },
        {
          "anchor": "private ItemStorage CreateBoloStore(short number)",
          "anchor_sha256": "73099c5d4418060576a18994877560b4d0eac9582a1e6381435cbab17dba76d7",
          "line": 572,
          "role": "implementation",
          "source_id": "openmu.merchant-stores"
        },
        {
          "anchor": "this.ItemHelper.CreateScroll(23, 30),   // Chain Drive Parchment",
          "anchor_sha256": "448bc01fcc8b95c974d5a1815d812413968a50f33af202576741ea94543e4b17",
          "line": 196,
          "role": "implementation",
          "source_id": "server.pasi-parchment-store"
        },
        {
          "anchor": "(15, 30, 100_000),",
          "anchor_sha256": "2c7276ba4f78f05c3ec401e35f7a609a605071d05369e4dcb0eacea925b72275",
          "line": 531,
          "role": "implementation",
          "source_id": "patch.item-price-parity"
        }
      ],
      "reference": {
        "parchment_group": 15,
        "parchment_numbers": [
          30,
          31,
          32,
          33,
          34,
          35,
          36
        ],
        "period_source_confirms_how_obtained": false,
        "period_source_confirms_what_they_teach": true,
        "realm_droplevel_matches_rejected_table_rows": 9
      },
      "status": "known_gap",
      "surface": "classes",
      "title": "Odkud Rage Fighter bere dovednosti"
    },
    {
      "assessment": "Co dovednost udělá za poškození, nikdo neporovnal — klientská kontrola hlídá jen to, co dovednost žádá. Šest dobových sad nese `Data/Skill/Skill.txt`.\n\nTOTOŽNOST SE TU NEBERE ZE JMÉNA, a je to přesně opačný důvod než u příšer. Tam se jménům věřit muselo, protože slot s jiným tvorem je jiná věc. Tady drží slot tutéž dovednost a jen se s ročníky posunul název: dobové stromy říkají dovednosti 16 „Mana Shield\", klient „Soul Barrier\"; dovednosti 13 říkají „Blast\", klient „Cometfall\". Podle jména by se zahodilo pět šestin tabulky.\n\nTotožnost proto stojí na hodnotě, kterou nesou obě strany nezávisle: dobový řádek se čte jen tehdy, když se jeho sloupec many rovná maně, kterou tomu slotu dává klientská tabulka. To přijme 383 řádků sad Season 6 — a **dva** řádky MuEmu, což samo o sobě něco říká o MuEmu.\n\nVýsledek: **138 dovedností porovnáno, nula neshod.** Z toho 43 jsou mistrovské dovednosti, kterým dobový sloupec dává nulu — to není číslo, mistrovská dovednost je pasivní účinek, který ten sloupec nepopisuje. Pod číslem 300 se neliší ani jedna.\n\nDosah se záměrně neporovnává. Dobová tabulka ho dělí na sloupec `Range` pro cílené dovednosti a `Radio` pro plošné, kdežto realm oba skládá do jediného `Range`: Evil Spirit má tady dosah 7 proti dobovému poloměru 6 a posilující kouzla tu mají nulu proti dobovému poloměru party. To jsou dva modely téže věci, ne chybující realm, a porovnání by hlásilo ten model.",
      "confidence": {
        "basis": "Porovnáno proti běžící produkci proti šesti dobovým tabulkám; hlásí se jen jednomyslná shoda aspoň čtyř z nich. Totožnost slotu rozhoduje mana z klientského skill_eng.bmd, ne jméno, protože jména se s ročníky měnila. Nula neshod je měřená, ne předpokládaná.",
        "level": "high",
        "scope": "fidelity_match"
      },
      "id": "classes.skill-damage-against-period",
      "observed": {
        "disagreements_below_master_range": 0,
        "range_deliberately_not_compared": true
      },
      "provenance": [
        {
          "anchor": "Identity is not taken from the name here, and the reason is worth stating because it",
          "anchor_sha256": "825766f7c9d24be93db688d7641f802cf7145be1cc8a2e9754a59a808ccb2207",
          "line": 8,
          "role": "review_record",
          "source_id": "gate.skill-damage-against-period"
        },
        {
          "anchor": "Only damage is compared. Reach is deliberately left out",
          "anchor_sha256": "aeba47cda112388ad5db56c0bb3599ccf76c2268239be10e3e104d173e961c10",
          "line": 20,
          "role": "review_record",
          "source_id": "gate.skill-damage-against-period"
        }
      ],
      "reference": {
        "disagreements": 0,
        "master_skills_at_zero": 43,
        "minimum_carriers": 4,
        "period_tables": 6,
        "skills_compared": 138
      },
      "status": "implemented_unverified",
      "surface": "classes",
      "title": "Poškození dovedností proti dobovým tabulkám"
    },
    {
      "assessment": "Ověřeno spustitelným nástrojem proti čerstvému výpisu z produkce. Porovnává se jen to, co obě strany uvádějí týmž způsobem: uložený strop není sazba u receptů, které si ji počítají, a uložená částka není cena u typů, kde ji server odvozuje. Katalog vyžaduje pro stav verified_match veřejně citovatelný dobový podklad; tady je rozhodčím klient majitele, který je pro tento realm závazný, ale citovat se nedá. Proto implemented_unverified, ne verified_match.",
      "confidence": {
        "basis": "Rozklad souboru je doložený dvakrát nezávisle a shoda je plošná, ne výběrová.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "craftings.client-recipe-agreement",
      "observed": "Dvacet dva receptů, u kterých klient úspěšnost přímo uvádí, sedí v sazbě, ceně i bonusu za Lucky, včetně celého žebříčku +10 až +15 se srážkami za excellent, starobylost, možnost 380 a soket. Sto šest pojmenovaných vstupů sedí v identitě i množství. Recepty, které si sazbu nebo cenu počítají z toho, co je ve stroji, se počítají a neporovnávají.",
      "provenance": [
        {
          "anchor": "OK: every mix the client states a rate for costs and succeeds as it says",
          "anchor_sha256": "c33f6e781e2733e224f11b1d5dc983cd0df2d47ebb472198b6c56362e48084a2",
          "line": 366,
          "role": "regression_test",
          "source_id": "gate.craftings-against-client"
        }
      ],
      "reference": "Klientská Data/Local/mix.bmd; rozklad ověřený proti struktuře MIX_RECIPE ve zdrojích klienta.",
      "status": "implemented_unverified",
      "surface": "systems",
      "title": "Recepty Chaos Machine se shodují s klientem majitele"
    },
    {
      "assessment": "PureMU spouští Blood Castle každé dvě hodiny v sudou celou (00:00, 02:00 … 22:00), Chaos Castle každé dvě hodiny v lichou celou (01:00, 03:00 … 23:00) a Devil Square každé dvě hodiny v půl (00:30, 02:30 … 22:30). Opravený plánovač po posledním termínu přejde do dalšího dne. Délka celého cyklu, kterou si plánovač drží, je 25, 20 a 30 minut; samotné kolo je kratší, viz events.period-phase-timings.\n\nTohle tvrzení nahrazuje starší, které uvádělo Blood Castle po 120, Devil Square po 240 a Chaos Castle po 60 minutách. Ta trojice už neplatí a nebyla jen jinými čísly: Chaos Castle po hodině od půlnoci se dvakrát denně otevíral ve stejnou minutu jako Blood Castle a jednou i s Devil Square, takže hráč viděl tři eventy naráz a pak dlouho nic. Patch 0280 dal Chaos Castle liché hodiny (Blood Castle drží sudé, takže v každé hodině je otevřený právě jeden hradní event), patch 0376 dal Devil Square dvouhodinový interval v půl.\n\nBěžícího realmu se to netýkalo automaticky: rozvrh je uložený v konfiguraci, ne v binárce. Patch 0376 proto přinesl povinný update verze 142 (MoveTheLegacyEventTimetablesOntoTheAlternatingScheduleUpdateSeason6), který uloženou legacy sekvenci přepíše na aktuální výchozí — a jen ji, jen když je zbytek konfigurace nedotčený výchozí stav. Na produkci se ten update spustil 2026-09-09 spolu se zbylými 65 čekajícími; do té doby realm běžel na staré trojici, přestože nasazená binárka měla novou.\n\nDoklad je pořád sekundární. Patch 0280 se opírá o dvě dobové sady (Main5.2 MuServer_Season_5_Update_15 a louis-s6-u31, obě Data/Event/ChaosCastle.dat), které shodně uvádějí 1, 3, 5 … 23. Interval Devil Square shodu nemá a je to majitelovo rozhodnutí z 2026-09-05 opřené o nejpoužívanějšího nosiče (louis-s6-u31), tedy grade C, ne Global důkaz. Audit NENAŠEL úplný dobový oficiální rozvrh S6E3, takže tenhle záznam dokazuje současnou implementaci, ne shodu s Webzenem.",
      "confidence": {
        "basis": "Aplikované konfigurace přímo udávají všechny tři sekvence včetně jejich fáze, migrační update má vlastní verzi i regresní testy a brána porovnává tytéž hodnoty s rozvrhem na webu; metadata auditu ale výslovně vedou přesný rozvrh S6E3 jako nedohledaný.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.bc-ds-cc-alternating-schedule",
      "observed": {
        "blood_castle_interval_minutes": 120,
        "blood_castle_offset_minutes": 0,
        "chaos_castle_interval_minutes": 120,
        "chaos_castle_offset_minutes": 60,
        "devil_square_interval_minutes": 120,
        "devil_square_offset_minutes": 30,
        "mandatory_updates_applied_to_production_utc": "2026-09-09",
        "scheduler_wraps_to_next_utc_day": true,
        "stored_timetables_migrated_by_update_version": 142,
        "task_duration_minutes": {
          "blood_castle": 25,
          "chaos_castle": 20,
          "devil_square": 30
        },
        "two_mini_games_never_open_in_the_same_minute": true
      },
      "provenance": [
        {
          "anchor": "Timetable = GenerateTimeSequence(TimeSpan.FromMinutes(120)).ToList(),",
          "anchor_sha256": "c48e0b62e1e98495cced1a0bdf5be260b30f7cf1fa51c1be31caf956a96eda1a",
          "line": 22,
          "role": "implementation",
          "source_id": "openmu.event-blood-schedule"
        },
        {
          "anchor": "GenerateTimeSequence(TimeSpan.FromMinutes(120), new TimeOnly(1, 0)).ToList()",
          "anchor_sha256": "3c179d1f1c8df50f3f7830ff65a00a589cf79ccd3c77bb5b4d5b949af86efaa7",
          "line": 29,
          "role": "implementation",
          "source_id": "patch.event-alternating-castles"
        },
        {
          "anchor": "GenerateTimeSequence(TimeSpan.FromMinutes(120), new TimeOnly(0, 30)).ToList()",
          "anchor_sha256": "186cb015a1f796402f50ef7fbd139de7d7bcf0c463ba6a72bcdb7d5b81fdd1a5",
          "line": 28,
          "role": "implementation",
          "source_id": "patch.event-timetable-migration.devilsquarestartconfiguration"
        },
        {
          "anchor": "MoveTheLegacyEventTimetablesOntoTheAlternatingSchedule = 142",
          "anchor_sha256": "38934a535a8d269d8127f41937a32d160083a102d59c985766cad73b8838598b",
          "line": 743,
          "role": "implementation",
          "source_id": "patch.event-timetable-migration.updateversion"
        },
        {
          "anchor": "var firstRunNextDay = timetable.Min().ToTimeSpan() + TimeSpan.FromDays(1);",
          "anchor_sha256": "21376790dbb6cd49d6848e588565c55f4bbd5bcae02f370ac6424e00636dff46",
          "line": 66,
          "role": "implementation",
          "source_id": "patch.event-rollover.minigamestartbaseplugin"
        },
        {
          "anchor": "public void StartWrapsToFollowingDay()",
          "anchor_sha256": "6079226b5cc2222db586a3ed23d2a74e8d3ec657fffc0ffb9d23360d7e38471a",
          "line": 36,
          "role": "regression_test",
          "source_id": "patch.event-rollover.minigamestartbaseplugintests"
        },
        {
          "anchor": "Re-implements PeriodicTaskConfiguration.GenerateTimeSequence: start inclusive, end exclusive,",
          "anchor_sha256": "feb8389db0dc1e014fdaa1a8b1594a109229c673db114edf3371ee230ab585ec",
          "line": 133,
          "role": "regression_gate",
          "source_id": "gate.event-schedule-fixture"
        },
        {
          "anchor": "WEBZEN-S6E3-EVENT-TIMETABLE-UNKNOWN",
          "anchor_sha256": "0ec4996511ed97abac7b8f2cb101f327a9e8bcfd2a4c5c934a58ec38233a1652",
          "line": 434,
          "role": "gap_record",
          "source_id": "gap.webzen-s6e3-exact-event-timetable"
        }
      ],
      "reference": {
        "chaos_castle_odd_hour_carriers": [
          "Main5.2 MuServer_Season_5_Update_15",
          "louis-s6-u31"
        ],
        "devil_square_interval_evidence_grade": "C",
        "exact_s6e3_timetable_found": false
      },
      "status": "implemented_unverified",
      "supersedes": [
        "events.bc-ds-cc-schedule"
      ],
      "surface": "events",
      "title": "Střídavý rozvrh BC, DS a CC"
    },
    {
      "assessment": "Pozdější oficiální návody potvrzují dílčí shodu základního nastavení: pásma úrovní a limit deseti hráčů pro BC1–BC7, pásma úrovní, vstupní ceny a zákaz skupin pro CC1–CC6 a limit deseti hráčů v Devil Square. Chybějí cílené regresní testy těchto definic a návody nepodporují BC8, CC7 ani DS7, proto tvrzení zůstává implementované, ale neuzavřené.",
      "confidence": {
        "basis": "Tři oficiální návody a připnuté inicializátory přímo dokazují uvedené dílčí shody, ale chybí jejich samostatná regresní ochrana a dobový důkaz přesného stavu při vydání S6E3.",
        "level": "medium",
        "scope": "fidelity_match"
      },
      "id": "events.bc-ds-cc-configured",
      "observed": {
        "blood_castle": {
          "matching_level_bands": [
            [
              15,
              80
            ],
            [
              81,
              130
            ],
            [
              131,
              180
            ],
            [
              181,
              230
            ],
            [
              231,
              280
            ],
            [
              281,
              330
            ],
            [
              331,
              400
            ]
          ],
          "matching_maximum_players": 10,
          "verified_levels": "BC1–BC7"
        },
        "chaos_castle": {
          "matching_allow_party": false,
          "matching_entrance_fees_zen": [
            25000,
            80000,
            150000,
            250000,
            400000,
            650000
          ],
          "matching_level_bands": [
            [
              15,
              49
            ],
            [
              50,
              119
            ],
            [
              120,
              179
            ],
            [
              180,
              239
            ],
            [
              240,
              299
            ],
            [
              300,
              400
            ]
          ],
          "verified_levels": "CC1–CC6"
        },
        "devil_square": {
          "matching_maximum_players": 10
        }
      },
      "provenance": [
        {
          "anchor": "WEBZEN-S6E3-BLOOD-CASTLE-RULES",
          "anchor_sha256": "0fc056de5e8817cf7d2ac48c24be5e33111ab75ccf0efa654cebe901694bbc87",
          "line": 50,
          "role": "primary_reference",
          "source_id": "webzen.event.blood-castle.guide"
        },
        {
          "anchor": "WEBZEN-S6E3-CHAOS-CASTLE-RULES",
          "anchor_sha256": "4d8a8a304c77c60cc9276e3cc206232fb3fd387435b9cf4125c1c4e439cecdf0",
          "line": 78,
          "role": "primary_reference",
          "source_id": "webzen.event.chaos-castle.guide"
        },
        {
          "anchor": "WEBZEN-S6E3-DEVIL-SQUARE-RULES",
          "anchor_sha256": "19956e2cd3bfe2e8c4c6a35f89bf1b58263b8a77916997947a27b29589229be9",
          "line": 112,
          "role": "primary_reference",
          "source_id": "webzen.event.devil-square.guide"
        },
        {
          "anchor": "bloodCastle1.MinimumCharacterLevel = 15;",
          "anchor_sha256": "f981258b50dca8de0f504f45fcadd5f38dbb7d89312052e0d1b34d5f53b6ded4",
          "line": 148,
          "role": "implementation",
          "source_id": "openmu.event-blood-definitions"
        },
        {
          "anchor": "bloodCastle7.MaximumCharacterLevel = 400;",
          "anchor_sha256": "5029379d2cba970f466dbadb355906b32415e20a84d67592c8ecd8f4358137a4",
          "line": 185,
          "role": "implementation",
          "source_id": "openmu.event-blood-definitions"
        },
        {
          "anchor": "bloodCastle.MaximumPlayerCount = 10;",
          "anchor_sha256": "2842a33704778e8404ae207659e0d7e16ec7c8752f13a0a2f6618865df881b60",
          "line": 213,
          "role": "implementation",
          "source_id": "openmu.event-blood-definitions"
        },
        {
          "anchor": "var chaosCastle1 = this.CreateChaosCastleDefinition(1, ChaosCastle1.Number, 25000);",
          "anchor_sha256": "953b35f519fca15ce814fb5588d16c2a0f82e3a4d1e2b615e9ef83ae2c0306a0",
          "line": 28,
          "role": "implementation",
          "source_id": "openmu.event-chaos-definitions"
        },
        {
          "anchor": "var chaosCastle6 = this.CreateChaosCastleDefinition(6, ChaosCastle6.Number, 650000);",
          "anchor_sha256": "b2781d20ac7dcc4cf568748d55cf7cd4ca0e766ccd0771fc4f75c4e0900013df",
          "line": 58,
          "role": "implementation",
          "source_id": "openmu.event-chaos-definitions"
        },
        {
          "anchor": "chaosCastle.AllowParty = false;",
          "anchor_sha256": "900cdebe933fdd9e99f6636b9a023dbcee293938e60e936a68dd7af868e407c5",
          "line": 99,
          "role": "implementation",
          "source_id": "openmu.event-chaos-definitions"
        },
        {
          "anchor": "devilSquare.MaximumPlayerCount = 10;",
          "anchor_sha256": "578cddf38e2fd3dd67f7aa157eac36655dfe42babd53d9cc5943a846e2535461",
          "line": 138,
          "role": "implementation",
          "source_id": "openmu.event-devil-base-definitions"
        }
      ],
      "reference": {
        "official_reference_temporality": "pozdější nebo nedatované oficiální návody",
        "unverified_extensions": [
          "BC8",
          "CC7",
          "DS7"
        ]
      },
      "status": "implemented_unverified",
      "superseded_by": "events.bc-ds-cc-definitions-held-by-tests",
      "surface": "events",
      "title": "Dílčí shoda základního nastavení BC, DS a CC"
    },
    {
      "assessment": "Základní nastavení Blood Castle, Chaos Castle a Devil Square drží regresní testy a část z něj potvrzuje pozdější oficiální návod. Tohle tvrzení nahrazuje starší, které říkalo dvě věci, jež už neplatí.\n\nPRVNÍ: „chybějí cílené regresní testy těchto definic\". Nechybějí. Patch 0161 přidal ARealmHoldsThePeriodLevelBandsAsync, který drží pásma Devil Square i Blood Castle na dobových číslech včetně sloupce pro Magic Gladiatora a Dark Lorda, a EventsNeedThePeriodMinimumOfPlayers na minimum hráčů Chaos Castle i Illusion Temple. Obojí má negativní kontrolu.\n\nDRUHÁ: pásma Devil Square se vedla jako dílčí shoda s návodem. Nejsou to jeho pásma. Stránka Devil Square nese tabulku Blood Castle bez posledního řádku — proto končí na 330 a nechává úrovně 331 až 400 bez Devil Square ve hře, jejíž strop je 400. Podrobně v events.devil-square-bands-are-the-period-table.\n\nCo platí dál: návod potvrzuje pásma úrovní a limit deseti hráčů pro BC1–BC7, pásma úrovní, vstupní ceny a zákaz skupin pro CC1–CC6 a limit deseti hráčů v Devil Square. BC8, CC7 ani DS7 návod nepodporuje a zůstávají nepodložené, proto je tvrzení implementované, ne uzavřené.",
      "confidence": {
        "basis": "Definice drží regresní testy s negativní kontrolou; oficiální návod potvrzuje část nastavení a u pásem Devil Square se prokazatelně týká jiné události.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.bc-ds-cc-definitions-held-by-tests",
      "observed": {
        "bc8_cc7_ds7_supported_by_the_guide": false,
        "devil_square_guide_table_is_blood_castles": true,
        "regression_tests_present": true
      },
      "provenance": [
        {
          "anchor": "WEBZEN-S6E3-BLOOD-CASTLE-RULES",
          "anchor_sha256": "0fc056de5e8817cf7d2ac48c24be5e33111ab75ccf0efa654cebe901694bbc87",
          "line": 50,
          "role": "primary_reference",
          "source_id": "webzen.event.blood-castle.guide"
        },
        {
          "anchor": "ARealmHoldsThePeriodLevelBandsAsync()",
          "anchor_sha256": "c93fdb7a6a1e6a3d1e081ed2e499c1dacf2aa8093a8a91494718c2229fc63779",
          "line": 66,
          "role": "regression_test",
          "source_id": "patch.period-event-figures.periodeventfigurestests"
        },
        {
          "anchor": "EventsNeedThePeriodMinimumOfPlayers(Type contextType, int expected)",
          "anchor_sha256": "46e9f55fe60fb03aa0f222b562a929b1ceaab760787b324dc7fa6eb503513ca2",
          "line": 105,
          "role": "regression_test",
          "source_id": "patch.period-event-figures.periodeventfigurestests"
        }
      ],
      "reference": {
        "guide_confirms": [
          "BC1-BC7 pásma a limit 10 hráčů",
          "CC1-CC6 pásma, ceny a zákaz skupin",
          "DS limit 10 hráčů"
        ]
      },
      "status": "implemented_unverified",
      "supersedes": [
        "events.bc-ds-cc-configured"
      ],
      "surface": "events",
      "title": "Definice BC, DS a CC drží testy"
    },
    {
      "assessment": "PureMU spouští Blood Castle po 120 minutách, Devil Square po 240 minutách a Chaos Castle po 60 minutách; opravený plánovač po posledním termínu přejde do dalšího dne. Audit nenašel úplný dobový oficiální rozvrh S6E3, takže intervaly dokazují současnou implementaci, nikoli shodu s Webzenem.",
      "confidence": {
        "basis": "Připnuté konfigurace přímo udávají všechny tři intervaly a regresní test kryje přechod dne; metadata auditu výslovně vedou přesný rozvrh S6E3 jako nedohledaný.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.bc-ds-cc-schedule",
      "observed": {
        "blood_castle_interval_minutes": 120,
        "chaos_castle_interval_minutes": 60,
        "devil_square_interval_minutes": 240,
        "scheduler_wraps_to_next_utc_day": true
      },
      "provenance": [
        {
          "anchor": "Timetable = GenerateTimeSequence(TimeSpan.FromMinutes(120)).ToList(),",
          "anchor_sha256": "c48e0b62e1e98495cced1a0bdf5be260b30f7cf1fa51c1be31caf956a96eda1a",
          "line": 22,
          "role": "implementation",
          "source_id": "openmu.event-blood-schedule"
        },
        {
          "anchor": "Timetable = PeriodicTaskConfiguration.GenerateTimeSequence(TimeSpan.FromMinutes(240)).ToList(),",
          "anchor_sha256": "325c5ea7acae3d85a0c44b5872083cb410e1176ee0d2f922b1d47af93f00e6e6",
          "line": 22,
          "role": "implementation",
          "source_id": "openmu.event-devil-schedule"
        },
        {
          "anchor": "Timetable = PeriodicTaskConfiguration.GenerateTimeSequence(TimeSpan.FromMinutes(60)).ToList(),",
          "anchor_sha256": "ea54a567489c45488a3ecf1b10147ce5099cd0ab689266b85a0beeb8edc45f09",
          "line": 22,
          "role": "implementation",
          "source_id": "openmu.event-chaos-schedule"
        },
        {
          "anchor": "var firstRunNextDay = timetable.Min().ToTimeSpan() + TimeSpan.FromDays(1);",
          "anchor_sha256": "21376790dbb6cd49d6848e588565c55f4bbd5bcae02f370ac6424e00636dff46",
          "line": 66,
          "role": "implementation",
          "source_id": "patch.event-rollover.minigamestartbaseplugin"
        },
        {
          "anchor": "public void StartWrapsToFollowingDay()",
          "anchor_sha256": "6079226b5cc2222db586a3ed23d2a74e8d3ec657fffc0ffb9d23360d7e38471a",
          "line": 36,
          "role": "regression_test",
          "source_id": "patch.event-rollover.minigamestartbaseplugintests"
        },
        {
          "anchor": "WEBZEN-S6E3-EVENT-TIMETABLE-UNKNOWN",
          "anchor_sha256": "0ec4996511ed97abac7b8f2cb101f327a9e8bcfd2a4c5c934a58ec38233a1652",
          "line": 434,
          "role": "gap_record",
          "source_id": "gap.webzen-s6e3-exact-event-timetable"
        }
      ],
      "reference": {
        "exact_s6e3_timetable_found": false
      },
      "status": "implemented_unverified",
      "superseded_by": "events.bc-ds-cc-alternating-schedule",
      "surface": "events",
      "title": "Rozvrh BC, DS a CC"
    },
    {
      "assessment": "Dvě shodné S6.3 serverové větve aplikují v aktivním Castle Siege 20 % damage mezi stejnou stranou a 40 % mezi nepřáteli, bez běžného PK/self-defense účtu. Gate 277 a Guardian Statue 283 bez Potion of Bless nebo Soul přijímají jen 5 % damage a po dobovém akumulátoru opotřebují útočící zbraň; s kterýmkoli potionem dostanou plný damage. Patch `0226-restore-castle-siege-combat.patch` tato pravidla omezuje výhradně na mapu 30 a stav START, přidává imunitu siege struktur vůči statusům/posunům a mandatory update 107 odstraní chybný globální +20% Bless bonus. Plný compile a živý combat smoke jsou podle build-last rozhodnutí odložené do společného závěrečného gate.",
      "confidence": {
        "basis": "Číselné větve 20/40/5, oba potion markery i durability práh jsou byte-for-byte shodné v připnutých zTeamS6.3 a muOnline-season6 serverových stromech; implementační patch je staticky zkontrolovaný, runtime důkaz čeká na závěrečný gate.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.castle-siege-combat",
      "observed": {
        "enemy_side_damage_percent": 40,
        "same_side_damage_percent": 20,
        "structure_damage_without_potion_percent": 5,
        "structure_full_damage_effects": [
          10,
          11
        ]
      },
      "provenance": [
        {
          "anchor": "attackerSide == defenderSide ? 20 : 40",
          "anchor_sha256": "072f501735a0715ad6e8a6dd44a98fbd088a085b10f8ba884f411159991b4de1",
          "line": 45,
          "role": "implementation",
          "source_id": "patch.castle-siege-combat"
        }
      ],
      "reference": {
        "enemy_side_damage_percent": 40,
        "same_side_damage_percent": 20,
        "structure_damage_without_potion_percent": 5,
        "weapon_durability_accumulator_threshold": 100
      },
      "status": "implemented_unverified",
      "surface": "events",
      "title": "Castle Siege combat a structure damage"
    },
    {
      "assessment": "Dvě připnuté S6 serverové větve se shodují na Life Stone itemu 13:11 +1, 100% mixu za 5 000 000 Zen, GM/attacker/position limitech, 60s stavbě po 12s stupních, 1% HP/MP/AG pulsu v dosahu 3, exact-guild respawnu a cleanupu při zničení či změně vlastníka. Patch `0228-restore-castle-siege-life-stones.patch` obnovuje celý tento runtime, viewer-specific friendly/stage bity, B9:01 animaci a mandatory update 108 pro existující konfiguraci. OpenMU nemá samostatný monster magic-defense atribut, takže dobová hodnota 20 zůstává explicitně evidovanou modelovou mezerou; compile a živý siege smoke čekají na společný závěrečný gate.",
      "confidence": {
        "basis": "Item, mix, texty, souřadnicové podmínky, build/heal/respawn větve i NPC 278 se shodují v připnutých zTeamS6.3 a muOnline-season6 lineages; implementace prošla statickým review a levným patch checkem, nikoli ještě závěrečným buildem/runtime.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.castle-siege-life-stone",
      "observed": {
        "build_duration_seconds": 60,
        "build_stage_seconds": 12,
        "heal_percent_per_second": 1,
        "heal_radius_tiles": 3,
        "item_group": 13,
        "item_level": 1,
        "item_number": 11,
        "known_model_gap": "monster_magic_defense_20_unrepresented",
        "mix_money": 5000000,
        "mix_success_percent": 100
      },
      "provenance": [
        {
          "anchor": "public sealed class CastleSiegeLifeStoneController",
          "anchor_sha256": "83940d9476b2f5e72b56016fc5ea7c57570eec95c11a1510e80a613106d2636e",
          "line": 21,
          "role": "implementation",
          "source_id": "patch.castle-siege-life-stone"
        }
      ],
      "reference": {
        "build_duration_seconds": 60,
        "build_stage_seconds": 12,
        "heal_percent_per_second": 1,
        "heal_radius_tiles": 3,
        "item_group": 13,
        "item_level": 1,
        "item_number": 11,
        "mix_money": 5000000,
        "mix_success_percent": 100,
        "monster_magic_defense": 20
      },
      "status": "implemented_unverified",
      "surface": "events",
      "title": "Castle Siege Life Stone"
    },
    {
      "assessment": "Dvě připnuté Season 6 serverové větve se shodují na ovládání strojů 221/222 přes B7:00/01/02/04, side autorizaci, sedmi target oblastech, 300/200 fixed damage, 100ms zpoždění a AoE radiusu 3 bez side filtru. Patch `0229-restore-castle-siege-machines.patch` obnovuje atomický operator lease, serverový target ticket, C2:68 preview max 100 objektů, zásah hráčů, monster, gates, statues i Life Stone a cleanup při disconnectu, despawnu či změně stavu. MuMain `0040-validate-dynamic-siege-preview-records.patch` opravuje bounds validaci dobového dynamického 35+buff-count záznamu; build a živý siege smoke čekají na společný závěrečný gate.",
      "confidence": {
        "basis": "Packet layout, target rectangles, authorization, fire/preview order, damage queue a filtry byly staticky porovnány proti připnutým zTeamS6.3 a muOnline-season6 lineages; dvě nezávislé statické kontroly opravily C2 object type a Life Stone target path.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.castle-siege-machines",
      "observed": {
        "attack_damage": 300,
        "defense_damage": 200,
        "impact_delay_milliseconds": 100,
        "impact_radius_tiles": 3,
        "preview_max_objects": 100,
        "preview_radius_tiles": 6,
        "shot_ticket_seconds": 10,
        "target_area_count": 7
      },
      "provenance": [
        {
          "anchor": "public sealed class CastleSiegeMachineController",
          "anchor_sha256": "3e2eec95eaf4efea1f25c1b6d5c3cdb28650d9af271f978ecde376b8bbae84de",
          "line": 14,
          "role": "implementation",
          "source_id": "patch.castle-siege-machines"
        },
        {
          "anchor": "constexpr std::size_t FixedPreviewRecordSize =",
          "anchor_sha256": "051e9f459b3af97a94d97ee78fc055401e2d307371234281c9d5493e0cde2309",
          "line": 12004,
          "role": "implementation",
          "source_id": "patch.mumain-castle-siege-preview"
        }
      ],
      "reference": {
        "attack_damage": 300,
        "defense_damage": 200,
        "impact_delay_milliseconds": 100,
        "impact_radius_tiles": 3,
        "preview_max_objects": 100,
        "preview_radius_tiles": 6,
        "target_area_count": 7
      },
      "status": "implemented_unverified",
      "surface": "events",
      "title": "Castle Siege attack and defense machines"
    },
    {
      "assessment": "Dobové `Data/Event/MuCastleData.dat` ze dvou nezávislých sad se shodují na všech objektech Castle Siege. Dřívější známá mezera devíti **Canon Tower** (288) a jednoho **Shield** (215) je ve zdroji opravena patchem `0225-restore-castle-siege-core.patch`: přesné souřadnice a staty, battle-only START/End lifecycle, Shield barrier do smrti všech čtyř Guardian Statues, gate 96 policy, periodní tower útok s pěti cíli a nulové ordinary monster rewardy. Mandatory update 106 idempotentně opraví existující konfiguraci. First-party Webzen guide potvrzuje čtyři statues, defense-only průchod a zmizení Shield; přesná čísla a pozice stojí na shodné periodní binary/config lineage. Plný server compile a živý whole-cycle smoke jsou podle build-last rozhodnutí odložené do společného závěrečného gate, proto `implemented_unverified`, ne `verified_match`.",
      "confidence": {
        "basis": "Porovnáno proti dvěma shodným periodním `MuCastleData.dat`, navazující serverové binary lineage a first-party Webzen pravidlu čtyř Guardian Statues a Shield. Zdrojová oprava je přesná; compile a živý whole-cycle důkaz jsou odložené do závěrečného gate.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.castle-siege-objects",
      "observed": {
        "blocked_by": null,
        "corrected": [
          "217 Crown Switch 1: 167,194 -> 167,195"
        ],
        "deferred_pending_first_guild": false,
        "guilds_in_production": 0,
        "matching": [
          "277 Castle Gate x6",
          "283 Guardian Statue x4",
          "221 Slingshot Attack x2",
          "222 Slingshot Defense x2",
          "288 Canon Tower x9",
          "215 Shield x1"
        ],
        "missing": [],
        "siege_registrations_in_production": 0
      },
      "provenance": [
        {
          "anchor": "Crown Switch 1 is the one Castle Siege object whose square this revision gets wrong",
          "anchor_sha256": "1b5f3397f40fc06475f8ffc115bf7c920c166054c02bc51f6fe6aec6cc25107b",
          "line": 1820,
          "role": "implementation",
          "source_id": "patch.archer-and-crown-switch.puremugameplayprofile"
        },
        {
          "anchor": "The map and the siege must agree on where Crown Switch 1 stands.",
          "anchor_sha256": "9a1f60fd7293635d08aa02175b261ec4abbfa4a18d7105a3f2b8d24fe48b6d67",
          "line": 3955,
          "role": "regression_test",
          "source_id": "patch.archer-and-crown-switch.puremugameplayprofiletest"
        },
        {
          "anchor": "public sealed class CastleSiegeCannonTower : CastleSiegeAttackableNpc, IAttacker",
          "anchor_sha256": "c450854409ed759f29e8dd0dfb8c96af725094333376842849fa37075362a3b0",
          "line": 15,
          "role": "implementation",
          "source_id": "patch.castle-siege-core"
        }
      ],
      "reference": {
        "missing_canon_towers": 0,
        "missing_shields": 0,
        "period_objects_matching": 24
      },
      "status": "implemented_unverified",
      "surface": "events",
      "title": "Objekty Castle Siege proti dobové tabulce obléhání"
    },
    {
      "assessment": "Dvě shodné S6 serverové větve posílají při běžné smrti v Castle Siege defendera přes gate 105 a všechny ostatní strany včetně neúčastníků přes gate 100; Life Stone má samostatnou vyšší prioritu. Patch `0227-restore-castle-siege-respawn.patch` aplikuje tuto volbu jen na mapě 30 během inicializovaného START, po dobových pěti sekundách znovu ověří mapu a stav a při stale relogu, map change, End nebo nenalezení průchozího bodu použije původní mapový fallback. Persistované attack/defense respawn areas jsou dobové hromadné reposition zóny, nikoli ordinary-death gates. Compile a živý side/death smoke zůstávají podle build-last rozhodnutí na společný závěrečný gate.",
      "confidence": {
        "basis": "Gate 100/105 větev, deset pokusů o průchozí bod a přibližně pětisekundové zpoždění se shodují v připnutých zTeamS6.3 a muOnline-season6 serverových stromech; přesné gate obdélníky potvrzuje periodní Gate.txt i stávající S6 inicializátor.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.castle-siege-respawn",
      "observed": {
        "attacker_and_other_gate": 100,
        "defender_gate": 105,
        "respawn_delay_seconds": 5,
        "walkable_selection_attempts": 10
      },
      "provenance": [
        {
          "anchor": "internal static async ValueTask<ExitGate?> TryGetDeathRespawnGateAsync",
          "anchor_sha256": "495594c090a94f4a35c406cb8995548b6e5285c3e3e597cf40ede7f11e11d8d4",
          "line": 41,
          "role": "implementation",
          "source_id": "patch.castle-siege-respawn"
        }
      ],
      "reference": {
        "attacker_and_other_gate": 100,
        "defender_gate": 105,
        "life_stone_precedes_default_gate": true,
        "respawn_delay_seconds": 5
      },
      "status": "implemented_unverified",
      "surface": "events",
      "title": "Castle Siege ordinary-death respawn"
    },
    {
      "assessment": "Patch `0230-restore-castle-siege-status.patch` obnovuje úplný klientský Castle Siege stav přes B2:00/14/15/16/17/18/19/1E/20: cyklus a zbývající čas, switch/crown lease a progress, začátek/konec bitvy, změnu vlastníka, join side i obsazení switchů. Synchronizace běží při vstupu a reconnectu i při živých přechodech. No-attacker `Start` a startup v `End` nepřehrávají ordinary-End odměny ani respawn; crown capture, fyzický recreate, side-sync a terminální End cleanup používají oddělené resumable checkpointy. Tři nezávislá statická review skončila po opravách bez blockeru; compile a živá B2 whole-cycle matice čekají podle build-last rozhodnutí na společný závěrečný gate.",
      "confidence": {
        "basis": "Packetové subkódy, enumy, transition pořadí a no-attacker/End větve byly staticky porovnány s připnutými Season 6 serverovými liniemi a chrání je cílené regrese; runtime důkaz zatím záměrně chybí.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.castle-siege-status",
      "observed": {
        "end_cleanup_is_resumable": true,
        "no_attacker_skips_battle": true,
        "packet_subcodes": [
          "B2:00",
          "B2:14",
          "B2:15",
          "B2:16",
          "B2:17",
          "B2:18",
          "B2:19",
          "B2:1E",
          "B2:20"
        ]
      },
      "provenance": [
        {
          "anchor": "public sealed class CastleSiegeStatusPlugIn : ICastleSiegeStatusPlugIn",
          "anchor_sha256": "dcbaf8357f1d006125731e91e872224077424a9580d23ea8b373ede608f16414",
          "line": 19,
          "role": "implementation",
          "source_id": "patch.castle-siege-status.castlesiegestatusplugin"
        },
        {
          "anchor": "PendingCaptureRetriesSideSynchronizationWithoutSecondRecreateAsync",
          "anchor_sha256": "04e0a85e53f253510fbb0d51a68ee106f25694bd262e6e7b0f3c151bf84e4ccb",
          "line": 425,
          "role": "regression_test",
          "source_id": "patch.castle-siege-status.castlesiegecrownmechanicstests"
        },
        {
          "anchor": "ForceStartWithoutAttackingGuildSkipsDirectlyToEndAsync",
          "anchor_sha256": "ea1fa3b8dcb76b4f4e4237e830cafdef031603cdf18c691e765bac461d3d6bfa",
          "line": 1097,
          "role": "regression_test",
          "source_id": "patch.castle-siege-status.castlesiegestatemachinetests"
        }
      ],
      "reference": {
        "no_attacker_skips_battle": true,
        "packet_subcodes": [
          "B2:00",
          "B2:14",
          "B2:15",
          "B2:16",
          "B2:17",
          "B2:18",
          "B2:19",
          "B2:1E",
          "B2:20"
        ]
      },
      "status": "implemented_unverified",
      "surface": "events",
      "title": "Castle Siege status, Crown a End lifecycle"
    },
    {
      "assessment": "Pozdější oficiální návod vyžaduje pro spuštění Chaos Castle nejméně dva hráče a popisuje fond 80 % vstupného s odstupňovanými předmětovými odměnami. Připnuté OpenMU dovoluje spuštění s jedním hráčem a používá obecnou 90% skupinu drahokamů plus šanci na předmět s ancient vlastnostmi. Jde o konkrétní odchylku vůči návodu; dobový stav přesně při S6E3 zůstává nedoložený.",
      "confidence": {
        "basis": "Oficiální návod a připnutý zdroj přímo uvádějí rozdílné minimum účastníků i odměnové modely.",
        "level": "high",
        "scope": "known_gap"
      },
      "id": "events.chaos-castle-minimum-and-rewards",
      "observed": {
        "minimum_players": 1,
        "reward_model": "90% obecná skupina drahokamů; pro CC2+ navíc šance 0,1 × úroveň na předmět s ancient vlastnostmi"
      },
      "provenance": [
        {
          "anchor": "WEBZEN-S6E3-CHAOS-CASTLE-RULES",
          "anchor_sha256": "4d8a8a304c77c60cc9276e3cc206232fb3fd387435b9cf4125c1c4e439cecdf0",
          "line": 78,
          "role": "primary_reference",
          "source_id": "webzen.event.chaos-castle.guide"
        },
        {
          "anchor": "protected override int MinimumPlayerCount => 1;",
          "anchor_sha256": "e6b22853b2deb4c1cdea44b081c1eb208e55329fc3b7e184756400a1c4c3258e",
          "line": 92,
          "role": "implementation",
          "source_id": "openmu.event-chaos-context"
        },
        {
          "anchor": "jewelDropItemGroup.Chance = 0.9;",
          "anchor_sha256": "b9d2f79cb9864c32aac6eefd463217e6d34f8dfbe89d54b3cad07ab09c438245",
          "line": 174,
          "role": "implementation",
          "source_id": "openmu.event-chaos-definitions"
        },
        {
          "anchor": "ancientDropItemGroup.Chance = 0.1 * level;",
          "anchor_sha256": "80284374f7ac06152cca772f860cc1dbd2fc400bbb5d4d916d8dd477ac83a58b",
          "line": 191,
          "role": "implementation",
          "source_id": "openmu.event-chaos-definitions"
        }
      ],
      "reference": {
        "minimum_players": 2,
        "official_reference_temporality": "pozdější nebo nedatovaný oficiální návod",
        "reward_model": "fond 80 % vstupného a odstupňované předmětové odměny"
      },
      "status": "known_gap",
      "superseded_by": "events.chaos-castle-rewards-unsourced",
      "surface": "events",
      "title": "Minimum hráčů a odměny Chaos Castle"
    },
    {
      "assessment": "Z dvojice, kterou tahle mezera vedla, je jedna půlka vyřešená a druhá ne.\n\nMINIMUM HRÁČŮ JE DOLOŽENÉ. Návod říká dva, realm má jednoho — a jedničku má i každá dochovaná sada, která to číslo vůbec uvádí: ChaosCastleMinUser = 1 v \"GameServerInfo - Event.dat\" u louis-s6-u31, Main5.2 i mudevs, a dobový zdroj to testuje jako GetUserCount(lpLevel) < m_ChaosCastleMinUser. Tytéž soubory dávají IllusionTempleMinUser = 2, což je přesně to, co má kontext chrámu. Nebylo tedy co opravovat, jen co přestat vydávat za odchylku; drží to regresní test.\n\nODMĚNY DOLOŽENÉ NEBYLY, dokud se nenašly pytle. Původní text zněl: Realm rozdá za Chaos Castle klenoty podle tabulky v ChaosCastleDropGenerator (0/2, 1/1, 1/2, 1/2, 2/1, 2/2, 2/3 Bless a Soul podle stupně) a žádný dobový soubor v tomhle korpusu takovou tabulku nenese: sekce odměn v ChaosCastle.dat je u všech sad samá nula a changelog zTeamS6.3 přiznává, že odměny do toho souboru teprve PŘIDAL. Zůstává to tedy otevřené a hledá se zdroj, ne náhradní čísla.\n\nVšech sedm říká totéž. `ItemDropRate 100` dělá zenovou větev nedosažitelnou, protože test zní `rand()%100 >= 100`; `SetItemDropRate 1000` z deseti tisíc dá jednou z deseti náhodný set item; a zbylých devět z deseti je jeden ze **čtyř** klenotů — Bless (14/13), Soul (14/14), Life (14/16) a Creation (14/22).\n\nDvě věci se tím opravily. Seznam klenotů měl pátou položku, Jewel of Chaos, kterou nemá žádný pytel. A polovina se set itemem byla škálovaná patrem — desetina krát úroveň, tedy sedmdesát procent na sedmém patře — zatímco pytle jsou napříč všemi sedmi identické a dávají plochou desetinu; první patro ji nemělo vůbec.\n\nJedno se přesně zopakovat nedá. Dobový server hodí jednou a větví; OpenMU hází každý řádek odměny zvlášť, takže devět procent výher zaplatí obojí a devět procent nic. Shodné jsou okrajové pravděpodobnosti: devět z deseti klenot, jedna z deseti set item.\n\nMinimum hráčů, druhá půlka původní mezery, bylo vyřešené už dřív a beze změny: jednička je dobová (`ChaosCastleMinUser = 1`) a realm ji měl.",
      "confidence": {
        "basis": "Minimum hráčů uvádějí shodně tři dochované sady a dobový zdroj ho tak testuje; odměnu vítěze nese pytel, který mají čtyři nezávislé sady shodný do bytu.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.chaos-castle-rewards-unsourced",
      "observed": {
        "bag_jewels": [
          [
            14,
            13
          ],
          [
            14,
            14
          ],
          [
            14,
            16
          ],
          [
            14,
            22
          ]
        ],
        "chaos_castle_minimum_players": 1,
        "chaos_castle_reward_table_sourced": true,
        "illusion_temple_minimum_players": 2,
        "jewel_chance": 0.9,
        "jewel_of_chaos_removed": true,
        "minimum_players_sourced": true,
        "period_sets_agreeing": 4,
        "previous_set_item_chance_formula": "0.1 * level",
        "set_item_chance": 0.1,
        "winner_only": true,
        "zen_branch_reachable": false
      },
      "provenance": [
        {
          "anchor": "WEBZEN-S6E3-CHAOS-CASTLE-RULES",
          "anchor_sha256": "4d8a8a304c77c60cc9276e3cc206232fb3fd387435b9cf4125c1c4e439cecdf0",
          "line": 78,
          "role": "primary_reference",
          "source_id": "webzen.event.chaos-castle.guide"
        },
        {
          "anchor": "ChaosCastleMinUser = 1 in the",
          "anchor_sha256": "ad12e735eaec96621dbe66151c1c0f08e88cac0435caf81c4cc0ba5b20e42404",
          "line": 94,
          "role": "implementation",
          "source_id": "patch.period-event-figures.periodeventfigurestests"
        },
        {
          "anchor": "EventsNeedThePeriodMinimumOfPlayers(Type contextType, int expected)",
          "anchor_sha256": "46e9f55fe60fb03aa0f222b562a929b1ceaab760787b324dc7fa6eb503513ca2",
          "line": 105,
          "role": "regression_test",
          "source_id": "patch.period-event-figures.periodeventfigurestests"
        },
        {
          "anchor": "DropItemBySpecialValue(ITEM_BAG_CHAOS_CASTLE",
          "anchor_sha256": "cf60c16037d2dd285fddfcf365b924094950240a0dd231e780aef74fbf9a4aee",
          "line": 2688,
          "role": "implementation",
          "source_id": "patch.chaos-castle-winner-bag.puremugameplayprofile"
        },
        {
          "anchor": "private static void HoldTheChaosCastleRewardToItsBag(IContext context, GameConfiguration configuration)",
          "anchor_sha256": "163ed43ca1f08de1f3d1abbc842c72b064bc1e6cef4eb98ac5b9dd377938d523",
          "line": 2709,
          "role": "implementation",
          "source_id": "patch.chaos-castle-winner-bag.puremugameplayprofile"
        },
        {
          "anchor": "TheChaosCastleWinnerIsPaidWhatTheBagDropsAsync()",
          "anchor_sha256": "10f3a600c39a73568c55e167b42f15e9d034fe6ab3a71338ad72af91d980b809",
          "line": 1571,
          "role": "regression_test",
          "source_id": "patch.chaos-castle-winner-bag.puremugameplayprofiletest"
        }
      ],
      "reference": {
        "guide_chaos_castle_minimum_players": 2
      },
      "status": "implemented_unverified",
      "supersedes": [
        "events.chaos-castle-minimum-and-rewards"
      ],
      "surface": "events",
      "title": "Minimum a odměny Chaos Castle podle dobových souborů"
    },
    {
      "assessment": "Většina cyklu miniher je doložená regresními testy v repozitáři, každý svým patchem. Doloženo: vstup (odmítnutý nestojí Zeny ani vstupenku, přijatý je vezme právě jednou); otevření pater a dokončení cyklu v logu; spuštění, kde Chaos Castle nepřejde do stavu Playing dřív, než doběhne zakládání spawnů; předání předmětové odměny u Blood Castle i Chaos Castle, kde dojde živému vítězi a živému členovi vítězné party, právě jednou a nikomu jinému, přičemž se počítá inventář i zem; zkušenostní a Zenová odměna u Devil Square; a ukončení, kde hráči odejdou z mapy eventu a seznam vstoupivších se vyprázdní. Devil Square předmětovou odměnu nemá a tři nezávislé zdroje se shodly, že ji mít nemá. Z průběhu hry je doloženo, že Chaos Castle zabije toho, komu se propadne podlaha, a nechá být toho, kdo si zem udržel — což je mechanika, na které ta hra stojí. Doloženo je i doručení relikvie v Illusion Temple: bod se připíše jen v dosahu skladu vlastního týmu a relikvie se vrací do hry, ne k doručiteli. NEDOLOŽENY zůstávají vlny spawnů v čase a celý průchod jedním zápasem naráz. Tohle tedy NERUŠÍ mezeru events.end-to-end-cycle-proof, jen přesně říká, co z ní zbývá. Zapsáno proto, aby se doložené úseky nepočítaly podruhé jako nedoložené ani nedoložené jako hotové. Nově je celý životní cyklus VŠECH TŘÍ miniher pozorovaný přímo v produkci, ne jen v testu: za tři hodiny běhu otevřely přesně tolikrát, kolikrát říká rozvrh (Chaos Castle 3×, Blood Castle 2×, Devil Square 1×) a každá dokončila přesně po své nastavené délce — Chaos Castle po 15, Blood Castle po 20 a Devil Square po 25 minutách. Zbývá tedy doložit už jen zápas, ve kterém někdo doopravdy hraje: vlny spawnů za běhu a předání odměny živému hráči.\n\nAKTUALIZACE 2026-08-20: to, co tady stálo jako zbývající, už zbývat přestalo, a věta o nezrušené mezeře je zastaralá. Mezeru events.end-to-end-cycle-proof nahradilo tvrzení events.whole-cycle-proven: patch 0160 pustí všechny tři hry celým cyklem s hráčem uvnitř a měří obojí, co tu bylo vedené jako nedoložené — VLNY SPAWNŮ ZA BĚHU (naběhly a položily na mapu příšery) i PŘEDÁNÍ ODMĚNY ŽIVÉMU HRÁČI (zkušenosti a Zeny čtené na postavě, ne na návratové hodnotě).\n\nJedna věc v odstavci výše se čte dvojznačně, tak ať je řečená: Chaos Castle po 15, Blood Castle po 20 a Devil Square po 25 minutách jsou TaskDuration periodických pluginů, ne délky kol. Ty se 2026-08-20 změnily na 10, 15 a 20 minut podle dobových souborů (viz events.period-phase-timings) a s tímhle pozorováním si neodporují.\n\nAKTUALIZACE 2026-09-10: dvě čísla z toho tříhodinového srpnového pozorování už realm nemá, takže se čtou jako historický záznam, ne jako současný stav. ZA PRVÉ TaskDuration: patch 0166 je roztáhl na celý cyklus (vstup, odpočty, kolo a doběh), takže Chaos Castle má 20, Blood Castle 25 a Devil Square 30 minut místo tehdejších 15, 20 a 25. Délky kol 10, 15 a 20 minut se tím nemění. ZA DRUHÉ počty otevření: to pozorování proběhlo ještě na starém rozvrhu (Chaos Castle každou hodinu, Devil Square po čtyřech), takže poměr 3× : 2× : 1× za tři hodiny dnes neplatí — na střídavém rozvrhu otevírá každá ze tří her jednou za dvě hodiny. Viz events.bc-ds-cc-alternating-schedule. Samé pozorování tím nepřestává platit: dokazovalo, že každá hra otevře přesně podle svého tehdejšího rozvrhu a doběhne po své tehdejší nastavené délce, a to je vlastnost plánovače, ne těch konkrétních čísel.",
      "confidence": {
        "basis": "Každý úsek má vlastní test v repozitáři a u každého byla ověřena negativní kontrola.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.cycle-segments-proven",
      "observed": {
        "blood_castle_item_reward_verified": true,
        "chaos_castle_item_reward_verified": true,
        "collapsing_floor_verified": true,
        "devil_square_experience_and_money_verified": true,
        "entry_cost_verified_all_three": true,
        "gameplay_progress_verified": false,
        "production_full_cycle_observation_predates_the_alternating_schedule": true,
        "production_full_cycle_observed_all_three": true,
        "relic_delivery_verified": true,
        "reward_to_a_live_player_proven": true,
        "single_uninterrupted_match_verified": false,
        "spawn_waves_proven": true,
        "start_and_finish_logged_all_three": true,
        "start_barrier_verified": true,
        "task_durations_not_game_durations": {
          "blood_castle": 25,
          "chaos_castle": 20,
          "devil_square": 30
        },
        "teardown_verified": true
      },
      "provenance": [
        {
          "anchor": "Nobody outside the winning party should get one.",
          "anchor_sha256": "dcd60e0794a971217c1b92cfdcdbf9d2f0343c9613a50cb536529c5f1a22b7df",
          "line": 423,
          "role": "implementation",
          "source_id": "patch.blood-castle-reward-proof"
        },
        {
          "anchor": "His party mate should get none: there is no winning side here.",
          "anchor_sha256": "3263debd1c7d08329194c61c9b130edffad5ffab6bf3c5bd5cd3f0ff2842557f",
          "line": 488,
          "role": "implementation",
          "source_id": "patch.chaos-castle-reward-proof"
        },
        {
          "anchor": "A refused entry must not cost a single Zen.",
          "anchor_sha256": "08f18f6632e0a686b66d024c7669b634655a784c3f55d56d0c921683e370cedf",
          "line": 394,
          "role": "implementation",
          "source_id": "patch.mini-game-entry-fee"
        },
        {
          "anchor": "{MiniGame} opened {FloorCount} floor(s); entry closes in {EnterDuration}.",
          "anchor_sha256": "929dbcc2421d18289f449f8d4a91ccc689a6cbc743611a0a214d1aaa2c6b9575",
          "line": 119,
          "role": "implementation",
          "source_id": "patch.mini-game-start-log"
        },
        {
          "anchor": "The roster should be empty once the game let everybody go.",
          "anchor_sha256": "47c252ce335d6f8fb1ced0d87e35cc8e7f0766d7112bb66a47d27809d8ea88a4",
          "line": 801,
          "role": "implementation",
          "source_id": "patch.mini-game-teardown-proof"
        }
      ],
      "reference": {
        "proven_segments": [
          "vstup",
          "spotřeba vstupenky",
          "oznámení",
          "odměna (jen Blood Castle)"
        ]
      },
      "status": "implemented_unverified",
      "surface": "events",
      "title": "Doložené úseky cyklu miniher"
    },
    {
      "assessment": "Pásma úrovní Devil Square v tomto realmu nejsou odchylka. Stejná tabulka je ve třech dochovaných artefaktech dvojího druhu: jako data v louis-s6-u31 Data/Event/DevilSquare.dat sekce 5 a jako zdroj v ServerSimulator GameServer/include/DevilSquare.h a mu-server-ex GameServer/DevilSquare.h pod jménem g_sttDEVILSQUARE_LEVEL. Všechny tři navíc nesou druhou dvojici sloupců pro Magic Gladiatora a Dark Lorda (10–110, 111–160, 161–210, 211–260, 261–310, 311–400), kterou oficiální návod vůbec nezmiňuje a kterou realm už má.\n\nNávod uvádí šest pásem 15–80, 81–130, 131–180, 181–230, 231–280 a 281–330. To není jiný Devil Square: jsou to pásma Blood Castle bez posledního řádku, jak ukazuje BloodCastle.dat sekce 6 téže dobové sady. Stránka návodu tedy nese tabulku sousední události — proto taky končí na 330 a nechává úrovně 331 až 400 bez jakéhokoli Devil Square ve hře, jejíž strop je 400.\n\nDoloženo je to regresním testem, který drží pásma Devil Square i Blood Castle na dobových číslech včetně sloupce pro speciální třídy. Primární dobový zdroj Webzenu k tomu pořád chybí, proto tvrzení dokazuje současný stav, ne shodu.",
      "confidence": {
        "basis": "Tři dochované artefakty dvojího druhu nesou identickou tabulku včetně sloupce, který návod nemá; a rozpor s návodem má ověřitelné vysvětlení.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.devil-square-bands-are-the-period-table",
      "observed": {
        "blood_castle_bands": [
          [
            15,
            80
          ],
          [
            81,
            130
          ],
          [
            131,
            180
          ],
          [
            181,
            230
          ],
          [
            231,
            280
          ],
          [
            281,
            330
          ],
          [
            331,
            400
          ]
        ],
        "devil_square_bands": [
          [
            15,
            130
          ],
          [
            131,
            180
          ],
          [
            181,
            230
          ],
          [
            231,
            280
          ],
          [
            281,
            330
          ],
          [
            331,
            400
          ]
        ],
        "devil_square_special_minimums": [
          10,
          111,
          161,
          211,
          261,
          311
        ],
        "guide_table_equals_blood_castle_minus_last_row": true
      },
      "provenance": [
        {
          "anchor": "WEBZEN-S6E3-DEVIL-SQUARE-RULES",
          "anchor_sha256": "19956e2cd3bfe2e8c4c6a35f89bf1b58263b8a77916997947a27b29589229be9",
          "line": 112,
          "role": "primary_reference",
          "source_id": "webzen.event.devil-square.guide"
        },
        {
          "anchor": "they are Blood Castle's own bands with the",
          "anchor_sha256": "20779bec93a14d18440be34f0ce9cb699d737e3c0ffbe173221a4560844c7203",
          "line": 39,
          "role": "implementation",
          "source_id": "patch.period-event-figures.periodeventfigurestests"
        },
        {
          "anchor": "ARealmHoldsThePeriodLevelBandsAsync()",
          "anchor_sha256": "c93fdb7a6a1e6a3d1e081ed2e499c1dacf2aa8093a8a91494718c2229fc63779",
          "line": 66,
          "role": "regression_test",
          "source_id": "patch.period-event-figures.periodeventfigurestests"
        },
        {
          "anchor": "devilSquare1.MaximumCharacterLevel = 130;",
          "anchor_sha256": "609ae144ab2c417295094454c444a3156c0c91791f6ffe2010aea1ba64d8686f",
          "line": 100,
          "role": "implementation",
          "source_id": "openmu.event-devil-base-definitions"
        }
      ],
      "reference": {
        "guide_devil_square_bands": [
          [
            15,
            80
          ],
          [
            81,
            130
          ],
          [
            131,
            180
          ],
          [
            181,
            230
          ],
          [
            231,
            280
          ],
          [
            281,
            330
          ]
        ]
      },
      "status": "implemented_unverified",
      "supersedes": [
        "events.devil-square-level-bands"
      ],
      "surface": "events",
      "title": "Pásma Devil Square jsou dobová tabulka"
    },
    {
      "assessment": "Pozdější oficiální návod rozděluje Devil Square do šesti pásem 15–80 až 281–330. Připnuté OpenMU slučuje první dvě pásma do DS1 15–130 a následující pásma posouvá až k DS6 331–400. Jde o přímou odchylku vůči návodu; DS7 ani přesný dobový stav S6E3 tímto zdrojem ověřené nejsou.",
      "confidence": {
        "basis": "Oficiální návod a oba připnuté inicializátory přímo uvádějí vzájemně odlišná pásma DS1–DS6.",
        "level": "high",
        "scope": "known_gap"
      },
      "id": "events.devil-square-level-bands",
      "observed": {
        "current_ds1_to_ds6_normal_level_bands": [
          [
            15,
            130
          ],
          [
            131,
            180
          ],
          [
            181,
            230
          ],
          [
            231,
            280
          ],
          [
            281,
            330
          ],
          [
            331,
            400
          ]
        ]
      },
      "provenance": [
        {
          "anchor": "WEBZEN-S6E3-DEVIL-SQUARE-RULES",
          "anchor_sha256": "19956e2cd3bfe2e8c4c6a35f89bf1b58263b8a77916997947a27b29589229be9",
          "line": 112,
          "role": "primary_reference",
          "source_id": "webzen.event.devil-square.guide"
        },
        {
          "anchor": "devilSquare1.MaximumCharacterLevel = 130;",
          "anchor_sha256": "609ae144ab2c417295094454c444a3156c0c91791f6ffe2010aea1ba64d8686f",
          "line": 100,
          "role": "implementation",
          "source_id": "openmu.event-devil-base-definitions"
        },
        {
          "anchor": "devilSquare2.MinimumCharacterLevel = 131;",
          "anchor_sha256": "f6555ee6571073c27bf5a41f310d47671083894321c3cfc332d3c4f65aaad554",
          "line": 105,
          "role": "implementation",
          "source_id": "openmu.event-devil-base-definitions"
        },
        {
          "anchor": "devilSquare5.MinimumCharacterLevel = 281;",
          "anchor_sha256": "df33c2d55d1758bea02ffb6e49db9dda8209f2e7bf166b23bc93ae70b8e42b70",
          "line": 30,
          "role": "implementation",
          "source_id": "openmu.event-devil-definitions"
        },
        {
          "anchor": "devilSquare6.MinimumCharacterLevel = 331;",
          "anchor_sha256": "33f813eaf67b5cea2b1030dd3c5315375ac7645fb23c36614ce444b1e6b9bb74",
          "line": 36,
          "role": "implementation",
          "source_id": "openmu.event-devil-definitions"
        }
      ],
      "reference": {
        "official_ds1_to_ds6_normal_level_bands": [
          [
            15,
            80
          ],
          [
            81,
            130
          ],
          [
            131,
            180
          ],
          [
            181,
            230
          ],
          [
            231,
            280
          ],
          [
            281,
            330
          ]
        ],
        "official_reference_temporality": "pozdější nebo nedatovaný oficiální návod"
      },
      "status": "known_gap",
      "superseded_by": "events.devil-square-bands-are-the-period-table",
      "surface": "events",
      "title": "Pásma úrovní Devil Square"
    },
    {
      "assessment": "Žádný důkaz v repozitáři nepotvrzuje úplný cyklus oznámení, vstupu, spuštění, hry, odměny a ukončení pro Blood Castle, Devil Square ani Chaos Castle. Jde o výslovně evidovanou mezeru ve věrnosti a pouhá existence definic se nesmí vydávat za funkční událost.",
      "confidence": {
        "basis": "Podmínky vydání výslovně požadují integrační testy všech systémů S6E3 a považují nedokončené kritické události za blokující.",
        "level": "high",
        "scope": "known_gap"
      },
      "id": "events.end-to-end-cycle-proof",
      "observed": {
        "blood_castle_complete_cycle_verified": false,
        "chaos_castle_complete_cycle_verified": false,
        "devil_square_complete_cycle_verified": false
      },
      "provenance": [
        {
          "anchor": "Parity matice a integrační testy všech systémů ve scope; žádný nehotový kritický event pro Genesis.",
          "anchor_sha256": "94958c016bd48d42fb5643345ea9af46f8caf6c45b734785d0659fa70591ce65",
          "line": 28,
          "role": "gap_record",
          "source_id": "gate.release"
        }
      ],
      "reference": {
        "required_cycle": [
          "oznámení",
          "vstup",
          "spotřeba vstupenky",
          "spuštění",
          "průběh hry",
          "odměna",
          "ukončení"
        ]
      },
      "status": "known_gap",
      "superseded_by": "events.whole-cycle-proven",
      "surface": "events",
      "title": "Důkaz úplného průchodu BC, DS a CC"
    },
    {
      "assessment": "Délka otevřeného vstupu do miniher není doložena žádným dobovým zdrojem Webzenu v tomto repozitáři, a je to evidovaná mezera. Připnutý inicializátor otevírá Blood Castle i Devil Square na jednu minutu a Chaos Castle na pět, bez jakéhokoli zdůvodnění; ta minuta pochází z commitu s prázdnou zprávou. Žádná dochovaná implementace jednu minutu nepoužívá: mu-server-ex otevírá Blood Castle na pět minut (BloodCastleTimeOpen=5, čtené v BloodCastle.cpp:418) a MuEmu také na pět; Devil Square mají MuEmu i kessiler na dvě. PureMU proto nastavuje pět a dvě minuty, Chaos Castle nechává na pěti. Je to rozhodnutí na sbíhající se sekundární doklady, NIKOLI doložená původní hodnota, a je vratné jedním číslem na hru. Druhá polovina důvodu je provozní: šedesátivteřinové okno dvanáctkrát denně, ohlášené jedinou zprávou, je dveře, kterými nikdo neprojde.",
      "confidence": {
        "basis": "Hodnoty ověřené v produkční databázi i v připnutém zdroji; dobový oficiální zdroj k délce vstupu se nenašel.",
        "level": "high",
        "scope": "known_gap"
      },
      "id": "events.entrance-window",
      "observed": {
        "blood_castle_enter_minutes": 5,
        "chaos_castle_enter_minutes": 5,
        "devil_square_enter_minutes": 2,
        "period_source_found": false
      },
      "provenance": [
        {
          "anchor": "definition.EnterDuration = timing.Entrance;",
          "anchor_sha256": "d541cf8788b9ccb6d0c7410dc27e555650d81e367fb507c9254b724e2377ac42",
          "line": 2502,
          "role": "implementation",
          "source_id": "patch.event-entrance-window.puremugameplayprofile"
        },
        {
          "anchor": "Assert.That(floor.EnterDuration, Is.EqualTo(timing.Entrance), $\"{floor.Name}: entrance\");",
          "anchor_sha256": "5666e03b0178b20a75394bd2be7aea329488a4f117f01b036685387044f7fa57",
          "line": 1553,
          "role": "regression_test",
          "source_id": "patch.event-entrance-window.puremugameplayprofiletest"
        }
      ],
      "reference": {
        "kessiler_devil_square_minutes": 2,
        "mu_server_ex_blood_castle_minutes": 5,
        "muemu_blood_castle_minutes": 5,
        "muemu_devil_square_minutes": 2,
        "pinned_openmu_blood_castle_minutes": 1
      },
      "status": "known_gap",
      "superseded_by": "events.period-phase-timings",
      "surface": "events",
      "title": "Délka otevřeného vstupu do miniher"
    },
    {
      "assessment": "Událost Imperial Guardian v běžícím realmu nespawnovala nic. Vybírá spawny podle čísla vlny (ImperialGuardianEventPlugIn:411-412 se ptá ImperialGuardianSchedule.GetWaveNumber, což je zone * 10 + table a table je nejméně 1, takže nula z toho nikdy nevyjde), ale všech 416 spawnů na čtyřech mapách pevností mělo v produkci WaveNumber 0 a zároveň spouštěč OnceAtEventStart, takže je nepostavila ani automatická cesta. Ověřeno třemi nezávislými dotazy do produkce. Příčina je opakující se: čísla vln zavedl patch do souborů map, jenže soubor mapy doteče jen do databáze, která se právě zakládá, a tahle byla založená dřív. Oprava běží v profilu, bere čísla přímo z inicializátorů map přes deterministické identity spawnů (nekopíruje je do tabulky, která by mohla zestárnout) a spustí se jen tam, kde je co spravit.",
      "confidence": {
        "basis": "Nulové vlny i spouštěče ověřené v produkci; výpočet vlny a filtr spawnů přečtené v připnutém kódu.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.guardian-fortress-waves",
      "observed": {
        "fortress_maps": [
          69,
          70,
          71,
          72
        ],
        "spawns_total": 416,
        "spawns_with_wave_before": 0,
        "wave_formula_can_be_zero": false
      },
      "provenance": [
        {
          "anchor": "private static async ValueTask GiveTheGuardianFortressesTheirWavesAsync(IContext context, GameConfiguration configuration)",
          "anchor_sha256": "6ed541e3900422821e6b4bce3a32b71609a3491e3aa64c9d63039f590a78fe4b",
          "line": 2056,
          "role": "implementation",
          "source_id": "patch.guardian-waves.puremugameplayprofile"
        },
        {
          "anchor": "ApplyGivesTheGuardianFortressesTheirWavesAsync",
          "anchor_sha256": "bc5377a85f981dd4a2c2d44ed959851b764cc344a6e13f96f4473e5a6ba40ab8",
          "line": 1168,
          "role": "regression_test",
          "source_id": "patch.guardian-waves.puremugameplayprofiletest"
        }
      ],
      "reference": {
        "spawn_trigger": "OnceAtEventStart"
      },
      "status": "implemented_unverified",
      "surface": "events",
      "title": "Pevnosti Imperial Guardian nespawnovaly nic"
    },
    {
      "assessment": "Zápas se odehrával celý a za výhru nedával nic. Oficiální korejský průvodce Webzenu, záchyt 2010-12-28, popisuje odměny úplně: zkušenosti podle stupně chrámu a rozdílu bodů dostanou VŠICHNI účastníci, členové úspěšného týmu navíc jeden Jewel of Chaos. Doplněno podle té tabulky. Zároveň byla špatně PRAVIDLA ÚSPĚCHU, což by hráč poznal: realm bral za vítěze každého, kdo vede, a čekal na vypršení času. Podle stránky kolo končí, jakmile někdo získá sedm bodů; vedení s méně než dvěma body není úspěch; při shodě bodů nemá úspěch nikdo. Kolo 1:0 má tedy vedoucí tým a žádného vítěze. Předmět potvrdil staré vodítko: jediná dochovaná implementace měla ve výchozích hodnotách typ 12 číslo 15, což katalog vedl jako vodítko, ne důkaz — je to Jewel of Chaos. NEVYNUCENÁ PODMÍNKA: stránka nevyplácí nic, dokud hráč nepoužil chrámovou sponu alespoň třikrát. Ty sponу nemají serverovou implementaci (neexistuje handler jejich paketu), takže by ta podmínka byla trvale nesplněná a odměnu by nedostal nikdo — to je od originálu dál než ji nevynucovat. Uvedeno v kódu i tady. Násobek za úspěch je 3 podle stránky, ne 2 jako u dochovaných serverů; dvojku má stránka vyhrazenou pro master level.",
      "confidence": {
        "basis": "Zdrojem je oficiální korejský průvodce Webzenu z dobového záchytu. Všechno nesouvisející na té stránce sedí s tím, co realm už měl, a potvrdila i opravu, kterou projekt musel udělat naslepo. Jedna podmínka se vynutit nedá a je uvedena jako odchylka.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.illusion-temple-pays-its-winners",
      "observed": {
        "experience_base_by_grade": [
          300000,
          340000,
          380000,
          420000,
          460000,
          500000
        ],
        "experience_paid_to_all": true,
        "experience_per_point_by_grade": [
          50000,
          60000,
          70000,
          80000,
          90000,
          100000
        ],
        "minimum_points_to_succeed": 2,
        "points_to_win_outright": 7,
        "skill_use_gate_enforced": false,
        "tie_has_no_winner": true,
        "winner_item": "12/15 Jewel of Chaos"
      },
      "provenance": [
        {
          "anchor": "혼돈의 보석 1개",
          "anchor_sha256": "a44c4208c4c4af63449bead639cb79fadade5caf33304b5fcc8a11c69773b880",
          "line": 15,
          "role": "primary_reference",
          "source_id": "reference.webzen-kr-illusion-temple-2010"
        },
        {
          "anchor": "private async ValueTask PayTheParticipantsAsync()",
          "anchor_sha256": "bad8eaa6dd9f5c863906a0be9fe44d9c388fa4b31fcac78cf56161454f0c75eb",
          "line": 326,
          "role": "implementation",
          "source_id": "patch.illusion-temple-rewards.illusiontemplecontext"
        },
        {
          "anchor": "IllusionTempleOneNilHasNoWinnerAsync",
          "anchor_sha256": "6e173fdd9de588a56540bc209cc4d37fcbd60001ba34f4a5d62e874439aecc76",
          "line": 580,
          "role": "regression_test",
          "source_id": "patch.illusion-temple-rewards.minigamecorrectnesstests"
        }
      ],
      "reference": {
        "expected_official_service": "Illusion Temple vyplácí zkušenosti všem a Jewel of Chaos úspěšnému týmu",
        "official_reference_temporality": "dobový oficiální návod"
      },
      "status": "implemented_unverified",
      "supersedes": [
        "events.illusion-temple-rewards"
      ],
      "surface": "events",
      "title": "Illusion Temple platí podle oficiální tabulky"
    },
    {
      "assessment": "Illusion Temple v tomto realmu odehraje celý zápas — týmy, relikvie, body za doručení, vyhlášení vítěze — ale za výhru NEDÁVÁ NIC. V konfiguraci nemá ani jeden řádek MiniGameReward u žádného ze šesti chrámů (Blood Castle 1 jich má 13, Devil Square 8) a IllusionTempleContext nepatří mezi volající GiveRewardsAndGetBonusScoreAsync, na rozdíl od zbylých tří miniher. Co má dávat, je NEDOLOŽENO. Jediná dochovaná implementace, která event vůbec má (mu-server-ex, IllusionTemple.cpp), si tabulku odměn načítá z konfigurace, ale v celém zdrojovém stromu ji nikdo nečte — je to mrtvá data, tedy doklad o záměru, ne o chování. MuEmu event nemá vůbec. Výchozí hodnoty v tom loaderu (typ 12, číslo 15, tedy Jewel of Chaos) jsou vodítko, ne důkaz. PureMU proto odměny NEVYMÝŠLÍ a vede to jako mezeru. Provozně jde o nejnižší prioritu: vstup je od levelu 220 a nejsilnější postava v realmu má 37. Dřív tu stálo, jak vysokou úroveň má nejsilnější postava v realmu. To číslo nutně zastarává a zastaralo — a hlavně nebylo potřeba: tvrzení zní, že vstupní úroveň 220 nikdo nemá, a to platí bez momentky. Úroveň se navíc v databázi neukládá, odvozuje se ze zkušeností, takže i její zjištění je výpočet, ne odečet.",
      "confidence": {
        "basis": "Nula odměn ověřena v produkční databázi i v kódu; dobový zdroj chování odměny nedoložil.",
        "level": "high",
        "scope": "known_gap"
      },
      "id": "events.illusion-temple-rewards",
      "observed": {
        "minimum_entry_level": 220,
        "no_character_meets_entry_level": true,
        "reward_path_called": false,
        "reward_rows_per_temple": 0
      },
      "provenance": [
        {
          "anchor": "Pays every participant their experience, and the successful side its item reward.",
          "anchor_sha256": "50efd6789ac0d3159dcf965cc2ec717a57bf05c78f041384c6ec77c735b01450",
          "line": 313,
          "role": "implementation",
          "source_id": "patch.illusion-temple"
        }
      ],
      "reference": {
        "mu_server_ex_reward_table_read_by_anything": false,
        "muemu_implements_event": false
      },
      "status": "known_gap",
      "superseded_by": "events.illusion-temple-pays-its-winners",
      "surface": "events",
      "title": "Illusion Temple nedává za výhru nic"
    },
    {
      "assessment": "Invaze do té doby nelogovaly nic a jejich hláška jde jen hráčům, kteří tam stojí, takže běžící invaze byla zvenčí k nerozeznání od mrtvé; deník je vedl jako implementované, ne jako ověřené. Po doplnění logování se první cyklus pozoroval na produkci 18. srpna 2026 v 16:00:04 UTC: Golden invaze umístila 20 z 20 potvor v Lorencii, 20 z 20 a dalších 10 z 10 v Norii, 20 z 20 a 10 z 10 v Devias, a totéž v Atlansu a Tarkanu; Bílý čaroděj umístil 1 z 1, 15 z 15 a 10 z 10 v Lorencii. Každý počet je úplný, takže žádná potvora nezůstala nepostavená pro nedostatek pochozího místa. Tím je doložené, že invaze v realmu vycházejí, a to právě ve třech městech, kde postavy hrají. Že rozvrh a počty odpovídají vydání S6E3, doložené není — dobový zdroj k nim nemáme, takže tvrzení zůstává implementované a neověřené proti referenci.",
      "confidence": {
        "basis": "Přímé pozorování jednoho cyklu v produkčním logu s uvedeným časem, mapami a počty vyžádaných i skutečně umístěných potvor.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.invasions-observed-running",
      "observed": {
        "cycle_observed_utc": "2026-08-18T16:00:04Z",
        "golden_towns": [
          "Lorencia",
          "Noria",
          "Devias"
        ],
        "period_schedule_sourced": false,
        "placed_all_requested": true,
        "red_dragon_reward_implemented": {
          "bless_probability": "1/6",
          "monster_id": 44,
          "soul_probability": "1/12",
          "zen_probability": "3/4",
          "zen_result": "4 x 10000 public Zen"
        }
      },
      "provenance": [
        {
          "anchor": "Invasion {Invasion} spawned {Created} of {Requested} monster(s) on {Map}.",
          "anchor_sha256": "cfd5d88477b2abf1728434ed54ed9836a73fb9bfc9d1ec4f02b3b1a5673bbd2d",
          "line": 187,
          "role": "implementation",
          "source_id": "patch.invasion-logging"
        },
        {
          "anchor": "if (Rand.NextInt(0, 4) > 0)",
          "anchor_sha256": "1c55fc02f52efde73548104663690b958d92947524ba803f0c11907b03b772ee",
          "line": 87,
          "role": "implementation",
          "source_id": "patch.invasion-red-dragon-rewards"
        }
      ],
      "reference": {
        "expected_official_service": "periodické invaze zlatých potvor a Bílého čaroděje",
        "official_reference_temporality": "pozdější nebo nedatovaný oficiální návod",
        "red_dragon_period_code": "pinned GS-CS 1.00.90 JPN gObjMonster.cpp class 44 branch"
      },
      "status": "implemented_unverified",
      "surface": "events",
      "title": "Invaze v realmu doložitelně vycházejí"
    },
    {
      "assessment": "Délky fází všech čtyř plánovaných událostí jsou nastavené podle hlavičky, kterou nese Data/Event/<Událost>.dat v každé dochované sadě Season 5/6: \"WarningTime NotifyTime EventTime CloseTime\". Pět nezávislých sad se shoduje na číslo — Blood Castle 5/1/15/4, Devil Square 5/1/20/4, Chaos Castle 5/1/10/4, Illusion Temple 5/1/15/4.\n\nCo které pole dělá, není odvozeno z názvu. Dobový zdroj ho čte v BloodCastle.cpp a DevilSquare.cpp a ve stavu čekání zapíná vstup právě tehdy, když je odpočet uvnitř WarningTime (EnterEnabled = 1). WarningTime tedy JE otevřený vstup. NotifyTime je minuta pohotovosti po zavření dveří; OpenMU místo ní má pevný třicetivteřinový odpočet, což je odchylka o půl minuty, kterou tenhle profil neopravuje, protože odpočet není konfigurovatelný. EventTime je samotné kolo, CloseTime doběh.\n\nTím se mění tři věci proti dřívějšku: Devil Square se otevírá na pět minut místo dvou, Blood Castle hraje patnáct minut místo dvaceti a doběh je u všech čtyř čtyři minuty místo jedné až tří. Nosič nově NASTAVUJE, ne jen rozšiřuje — předchozí verze uměla zvětšit malé vstupní okno, ale nikdy by nezkrátila příliš dlouhé kolo.\n\nPořád jde o sekundární doklady, ne o primární zdroj Webzenu. Jsou ale silnější než ty, které tu stály dřív: je to pole, které dobový server opravdu čte, shodné v pěti nezávislých sadách, a pojmenovává mechanismus, ne výsledek.",
      "confidence": {
        "basis": "Pět nezávislých dochovaných sad Season 5/6 se shoduje na stejné čtveřici čísel a dobový zdroj ukazuje, že vstup se otevírá právě uvnitř WarningTime.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.period-phase-timings",
      "observed": {
        "blood_castle_minutes": [
          5,
          15,
          4
        ],
        "chaos_castle_minutes": [
          5,
          10,
          4
        ],
        "countdown_deviation_seconds": 30,
        "devil_square_minutes": [
          5,
          20,
          4
        ],
        "illusion_temple_minutes": [
          5,
          15,
          4
        ],
        "phase_order": [
          "vstup",
          "pohotovost",
          "kolo",
          "doběh"
        ],
        "sourced_from_webzen_primary": false
      },
      "provenance": [
        {
          "anchor": "so WarningTime IS the open entrance",
          "anchor_sha256": "53071445320368e2a56b8041dbe7a25e497a2cd295bda927e543c392c8fd21ce",
          "line": 71,
          "role": "implementation",
          "source_id": "patch.period-event-figures.puremugameplayprofile"
        },
        {
          "anchor": "private static void GiveTheEventsTheirPeriodTimings(GameConfiguration configuration)",
          "anchor_sha256": "46726fa2342661b2657ea8bde5a3924471a741f437619ceb33bb1e51927fb6d0",
          "line": 2493,
          "role": "implementation",
          "source_id": "patch.period-event-figures.puremugameplayprofile"
        },
        {
          "anchor": "ApplyGivesTheEventsTheirPeriodTimingsAsync()",
          "anchor_sha256": "bda122ea40c04ac935871ec94fb369a29b8e679eea5f156b428906321e169c9b",
          "line": 1512,
          "role": "regression_test",
          "source_id": "patch.period-event-figures.puremugameplayprofiletest"
        }
      ],
      "reference": {
        "period_data_file_header": "WarningTime NotifyTime EventTime CloseTime"
      },
      "status": "implemented_unverified",
      "supersedes": [
        "events.entrance-window"
      ],
      "surface": "events",
      "title": "Délky fází událostí podle dobových datových souborů"
    },
    {
      "assessment": "Čísla, která web uvádí u vstupenek a vylepšování, byla ověřena proti běžícímu serveru a proti připnutému zdroji. Produkce: Chaos Castle 1 má vstupní poplatek 25 000 Zen a pásmo 15 až 49, Blood Castle 1 pásmo 15 až 80, Devil Square 1 pásmo 15 až 130. Ceny a šance vstupenek nejsou v konfiguraci, ale v obslužných třídách: první stupeň Blood Castle stojí 50 000 Zen s 80 % šancí, první stupeň Devil Square 100 000 Zen s 80 %. Jewel of Soul má 50 %, s vlastností Luck o 25 procentních bodů víc, a od sedmé úrovně předmětu neúspěch shodí předmět na +0. Jedna věc, kterou web neuvádí: u Devil Square klesá šance od pátého stupně na 70 %.",
      "confidence": {
        "basis": "Pásma a poplatek dotazem do produkční databáze, ceny a šance z připnutých obslužných tříd.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.ticket-and-upgrade-figures-checked",
      "observed": {
        "blood_castle_first_tier_price": 50000,
        "chaos_castle_entrance_fee": 25000,
        "devil_square_first_tier_price": 100000,
        "devil_square_rate_from_tier_five": 70,
        "soul_luck_bonus_points": 25,
        "soul_reset_to_zero_from_level": 7,
        "soul_success_percent": 50,
        "ticket_first_tier_success_percent": 80
      },
      "provenance": [
        {
          "anchor": "ResetToLevel0WhenFailMinLevel = 7,",
          "anchor_sha256": "62d7f8da9dee67a93bc49dd8337659529d4b4320c9e89f576d0de043a98e342c",
          "line": 46,
          "role": "implementation",
          "source_id": "openmu.soul-jewel"
        },
        {
          "anchor": "8 => 1_050_000,",
          "anchor_sha256": "b1aeffb5da53e8e3bd3a973cca874b954dc766a9149d706c9a7ab280fa13e72b",
          "line": 36,
          "role": "implementation",
          "source_id": "openmu.ticket-craftings"
        }
      ],
      "reference": {
        "expected_official_service": "ceny vstupenek a šance vylepšování v S6E3",
        "official_reference_temporality": "pozdější nebo nedatovaný oficiální návod"
      },
      "status": "implemented_unverified",
      "surface": "events",
      "title": "Čísla u vstupenek a vylepšování ověřena proti realmu"
    },
    {
      "assessment": "Všechny tři minihry projedou celý cyklus a je to změřené, ne odvozené: regresní test spustí skutečný MiniGameContext na skutečné mapě se skutečným hráčem a sleduje, co se stane. Doloženo je, že stav projde v pořadí Open, Closed, Playing, Ended, Disposed; že plánovaný start opravdu ohlásí otevřený vstup hráčům a zanechá po sobě otevřenou hru; že vlna spawnů naběhne a položí na mapu příšery; že se odměna připíše na postavu (zkušenosti i Zeny se měří na ní, ne na návratové hodnotě); že vznikne řádek v žebříčku; a že hráč skončí ve městě a už není svázaný s doběhlou hrou. Test navíc trvá na tichém logu, protože běhová smyčka minihry si své výjimky překládá do logu a jinak by ukončení z nouze vypadalo stejně jako ukončení úspěchem.\n\nTenhle důkaz nebyl formalita. Napoprvé padal náhodně, jednou u Blood Castle a jindy u Devil Square, a příčina je skutečná chyba: cache perzistentních typů v TypeHelperu byla vedená jako IDictionary nad ConcurrentDictionary a plnila se přes Add, který při existujícím klíči vyhodí výjimku. Dvě vlákna, která poprvé sáhnou na stejný základní typ ve stejný okamžik, obě minou cache a to druhé dostane ArgumentException z operace, která nemá na čem selhat. V ukládání žebříčku je výjimka odchycená a jen zalogovaná, takže výsledek jedné hry tiše zmizí; jinde ji nechytá nikdo. Před opravou padly dva ze tří běhů, po opravě prošly tři ze tří.\n\nCo doloženo NENÍ: že takhle vypadal cyklus u Webzenu. Délky fází ani pořadí hlášení nemá v repozitáři dobový oficiální zdroj, takže tvrzení dokazuje současné chování realmu, ne shodu.",
      "confidence": {
        "basis": "Regresní test projede skutečný kontext minihry se skutečným hráčem a měří výsledek na jeho postavě; příčina dřívější náhodné chyby je doložená negativní kontrolou.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "events.whole-cycle-proven",
      "observed": {
        "blood_castle_complete_cycle_verified": true,
        "chaos_castle_complete_cycle_verified": true,
        "cycle_phases_observed": [
          "Open",
          "Closed",
          "Playing",
          "Ended",
          "Disposed"
        ],
        "devil_square_complete_cycle_verified": true,
        "persistent_type_cache_race_fixed": true,
        "player_returned_to_town": true,
        "ranking_row_written": true,
        "reward_measured_on_the_character": true,
        "run_loop_logged_nothing": true,
        "spawn_wave_ran_and_spawned_monsters": true
      },
      "provenance": [
        {
          "anchor": "private async ValueTask RunGameAsync(CancellationToken cancellationToken)",
          "anchor_sha256": "c48a62c5b00dd0176a5946dff4c3527a1c481529dcf5d96e2406c365f95fc6a6",
          "line": 706,
          "role": "implementation",
          "source_id": "openmu.minigame-context"
        },
        {
          "anchor": "EveryScheduledGameRunsItsWholeCycleAsync()",
          "anchor_sha256": "d39b1b8fcf0634e5e3828bb714822d4c01390ae341ecda657a7d513e71441370",
          "line": 166,
          "role": "regression_test",
          "source_id": "patch.mini-game-whole-cycle"
        },
        {
          "anchor": "ScheduledStartAnnouncesTheOpenEntranceAsync(MiniGameType type)",
          "anchor_sha256": "d67d52fab60179fe6e7c3df1b78e412fe567b1eebae8a90db46f72f38f0a2929",
          "line": 121,
          "role": "regression_test",
          "source_id": "patch.mini-game-whole-cycle"
        },
        {
          "anchor": "the event logged trouble while running its cycle",
          "anchor_sha256": "21c3b659dda16ac2519080ab320010f4708e8d79dcc31132d2d9d22e801ef3c9",
          "line": 188,
          "role": "regression_test",
          "source_id": "patch.mini-game-whole-cycle"
        },
        {
          "anchor": "return BaseToPersistentTypes.GetOrAdd(",
          "anchor_sha256": "ecaf918b75d03f5f7062b973229d3be0a35ff5a735a9e88c7ff7b8887a6aae56",
          "line": 55,
          "role": "implementation",
          "source_id": "patch.persistent-type-cache-race.typehelper"
        },
        {
          "anchor": "ColdCacheSurvivesSimultaneousLookups(Type baseType)",
          "anchor_sha256": "6c5ae3974fa3c4a3f9f6e655a73ab9cc639d5ad7d3505b96d13e2e3737c06dd9",
          "line": 39,
          "role": "regression_test",
          "source_id": "patch.persistent-type-cache-race.persistenttypecacheracetests"
        }
      ],
      "reference": {
        "required_cycle": [
          "oznámení",
          "vstup",
          "spotřeba vstupenky",
          "spuštění",
          "průběh hry",
          "odměna",
          "ukončení"
        ]
      },
      "status": "implemented_unverified",
      "supersedes": [
        "events.end-to-end-cycle-proof"
      ],
      "surface": "events",
      "title": "Celý cyklus miniher doběhne až k odměně"
    },
    {
      "assessment": "Současná inicializace OpenMU dávala každé z pěti úrovní Box of Kundun dvacetiprocentní excellent skupinu a za ní jistý Zen fallback, takže výsledkem bylo přibližně 20 % předmětů a 80 % Zen. PureMU nyní nastavuje excellent skupiny pro zdrojové úrovně 8 až 12 na jistý item roll, odstraňuje jejich money skupiny z nových seedů a stejnou změnu idempotentně přenáší do existujícího realmu. Dvě prohlédnuté komunitní konfigurace označené jako Season 6 mají u Box of Kundun +1 až +5 ItemDropRate 100 a ItemDropCount 1; prohlédnutá serverová implementace přechází na Zen jen při neúspěchu tohoto item rollu, takže při sazbě 100 je Zen větev nedosažitelná. Tyto repacky ale nejsou first-party Webzen zdroj, mohou sdílet společnou lineage a u +5 se jejich pooly liší. Tvrzení proto pokrývá pouze item-versus-Zen distribuci současného realmu; přesné pooly, úrovně a excellent options se tím za originální neprohlašují ani nemění.",
      "confidence": {
        "basis": "Současnou změnu deterministicky drží patch, nosič do živé databáze a úzká regrese. Item-only tvar podporují dvě S6-labelled komunitní konfigurace a jedna implementace parseru/open logiky, ale bez first-party autority a s možnou společnou lineage je historická jistota jen střední.",
        "level": "medium",
        "scope": "current_state"
      },
      "id": "items.box-of-kundun-item-only-roll",
      "observed": {
        "exact_pool_or_option_parity_claimed": false,
        "item_group_chance_after": 1.0,
        "money_fallback_groups_after": 0,
        "new_and_existing_realm_paths_covered": true,
        "source_item_levels": [
          8,
          9,
          10,
          11,
          12
        ]
      },
      "provenance": [
        {
          "anchor": "private static async ValueTask RestoreBoxOfKundunItemDropsAsync",
          "anchor_sha256": "4778cedd1af82f600e95c0fdc4eead3302c0b7ff5e831a6933fb23c38563eb51",
          "line": 1659,
          "role": "implementation",
          "source_id": "patch.kundun-box-item-roll.puremugameplayprofile"
        },
        {
          "anchor": "BoxOfKundunAlwaysDropsAnItemAsync",
          "anchor_sha256": "bbfbd41d85d8ebf93714ce0f5d88342e365a0759cb6db8f15274de824351e13a",
          "line": 742,
          "role": "regression_test",
          "source_id": "patch.kundun-box-item-roll.puremugameplayprofiletest"
        },
        {
          "anchor": "The period-labelled item-bag headers use an item rate of 100 for levels +1 through +5.",
          "anchor_sha256": "531318d414ed0cf497d2055065cd6da10009870cde006455129cc3cd050eaa2e",
          "line": 1653,
          "role": "review_record",
          "source_id": "patch.kundun-box-item-roll.puremugameplayprofile"
        }
      ],
      "reference": {
        "community_s6_labelled_item_count": 1,
        "community_s6_labelled_item_rate": 1.0,
        "first_party_reference": false,
        "official_s6e3_pool_and_option_table_found": false
      },
      "status": "implemented_unverified",
      "surface": "items",
      "title": "Box of Kundun +1 až +5 volí předmět místo Zen"
    },
    {
      "assessment": "Bílá 14/88 a červená 14/89 existovaly jako předměty a nic je v realmu nevydávalo, takže obě mísení u Ducha sakury — deset bílých a třicet červených — nešlo spustit. Play-Box 14/84 dával jen tři buffy a zlatou větvičku, tedy čtyři z šesti věcí, které z něj podle dobového popisu chodí. Chybějící dvě byly přesně ty, které katalog v mezeře jmenoval; nezávislý zdroj a nezávisle sepsaná mezera ukázaly na totéž místo. Doplněno v profilu, ne v inicializátoru — ten běží dřív, než ty větvičky vůbec vzniknou, a do existujícího realmu by stejně nedosáhl. Váhy toho zdroje použité nejsou: obě větvičky mají tutéž váhu jako zlatá, protože bedna má jedinou skupinu a v ní jsou si všechny výstupy rovné.",
      "confidence": {
        "basis": "Členství ukazují dvě nezávislé strany na totéž místo: dobový popis Play-Boxu jako šesti výstupů a vlastní mezera katalogu, která jmenovala právě ty dva chybějící. Zdroj popisu je ale privátní server, ne Webzen, proto medium.",
        "level": "medium",
        "scope": "current_state"
      },
      "id": "items.cherry-branches-come-from-the-play-box",
      "observed": {
        "added_in_profile_not_initializer": true,
        "play_box_gives": [
          85,
          86,
          87,
          88,
          89,
          90
        ],
        "play_box_number": 84,
        "red_branch_required": 30,
        "weights_sourced": false,
        "white_branch_required": 10
      },
      "provenance": [
        {
          "anchor": "private static void GiveTheCherryBranchesTheirSource(GameConfiguration configuration)",
          "anchor_sha256": "c54d5301962a694ce4b94802a581466bc43dcdfe22b9b56b502c683d3f194cde",
          "line": 1625,
          "role": "implementation",
          "source_id": "patch.cherry-branch-source.puremugameplayprofile"
        },
        {
          "anchor": "ThePlayBoxGivesAllThreeBranchesAsync",
          "anchor_sha256": "a1456a15ccee86e0f6db50b4086cdb8288c4a39ee5754f0f7fdcc12b3a0aa92d",
          "line": 699,
          "role": "regression_test",
          "source_id": "patch.cherry-branch-source.puremugameplayprofiletest"
        }
      ],
      "reference": {
        "expected_official_service": "Cherry Blossom Play-Box vydává tři větvičky a tři buffy",
        "official_reference_temporality": "pozdější nebo nedatovaný oficiální návod"
      },
      "status": "implemented_unverified",
      "supersedes": [
        "items.cherry-branches-have-no-source"
      ],
      "surface": "items",
      "title": "Bílá a červená větvička padají z Play-Boxu"
    },
    {
      "assessment": "Bílá a červená větvička jsou dobově legitimní: klientská tabulka Data/Local/Item.bmd je obsahuje jako 14/88 a 14/89 vedle zlaté 14/90, takže jejich doplnění vychází z klienta, ne z odhadu. Mísení u Cherry Blossom Spirit v Norii je na ně navěšené a žádá deset bílých, respektive třicet červených. V realmu je ale nic nevydává: nejsou v žádné skupině dropu a Cherry Blossom Play-Box dává jen 14/85, 14/86, 14/87 a zlatou 14/90. Obě mísení jsou tedy zatím nespustitelná. Odkud větvičky v období padaly, doložené nemáme, a nedoplňujeme to odhadem; do doby, než zdroj bude, je Cherry Blossom hotový jen po tuhle hranici.",
      "confidence": {
        "basis": "Klientská tabulka předmětů obě čísla obsahuje; obsah Play-Boxu i absence větviček ve skupinách dropu jsou přímo v připnutém inicializátoru.",
        "level": "high",
        "scope": "known_gap"
      },
      "id": "items.cherry-branches-have-no-source",
      "observed": {
        "branches_in_client_item_table": [
          88,
          89,
          90
        ],
        "play_box_gives": [
          85,
          86,
          87,
          90
        ],
        "red_branch_required": 30,
        "white_branch_required": 10
      },
      "provenance": [
        {
          "anchor": "private static async ValueTask AddTheMissingCherryBlossomMixesAsync(IContext context, GameConfiguration configuration)",
          "anchor_sha256": "bf79164e1ca4738d7be4bbacea2f67d1404bb0c944d28a4e6024ba4710a03365",
          "line": 1756,
          "role": "implementation",
          "source_id": "patch.cherry-branch-mixes"
        }
      ],
      "reference": {
        "expected_official_service": "sezónní událost Cherry Blossom sype větvičky z příšer",
        "official_reference_temporality": "pozdější nebo nedatovaný oficiální návod"
      },
      "status": "known_gap",
      "superseded_by": "items.cherry-branches-come-from-the-play-box",
      "surface": "items",
      "title": "Bílá a červená větvička nemají v realmu zdroj"
    },
    {
      "assessment": "Klient rozhoduje o tom, co hráč vidí a co s položkou smí; kde se server s ním rozejde, pozná to hráč okamžitě. Porovnání pokrývá vedle rozměrů a trvanlivosti i to, co předmět žádá po tom, kdo ho nosí, a které třídy ho nosit smí — 3363 požadavků a 530 třídních seznamů. Shoda je ověřená spustitelným nástrojem, ne úvahou, a hromadnost té shody zároveň dokazuje, že se čtou správná pole a ve správném měřítku. Katalog vyžaduje pro stav verified_match veřejně citovatelný dobový podklad; tady je rozhodčím klient majitele, který je pro tento realm závazný, ale citovat se nedá. Proto implemented_unverified, ne verified_match.",
      "confidence": {
        "basis": "Rozhodčím je klient samotného serveru a shoda je plošná; vzorec mezi hodnotami by ji rozbil u všech, ne u pěti.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "items.client-table-agreement",
      "observed": "Rozměry sedí u všech 516 položek, které klient nese, poškození u 123 ze 123 zbraní, obrana u 269 z 274, požadavek na sílu u 419, na obratnost u 331. Odolnost sedí mimo hůlky, které ji drží v poli magické odolnosti, a mimo orby, které se neopotřebovávají. Jediná sada, která se lišila, dostala hodnoty klienta. Cenový audit navíc sjednotil doložené drifty u Devil's Invitation, Wizard's Ring, osmi scrollů a 27 socketových položek; +4 eventové ingredience už se shodovaly a neurčené vyšší socketové tier hodnoty nebyly odhadnuty.",
      "provenance": [
        {
          "anchor": "OK: every item the client also carries agrees on size, durability",
          "anchor_sha256": "a0359f00ea56600dd189c935e5f2e5965326e74958785c2a59c9ec3334b4d106",
          "line": 351,
          "role": "regression_test",
          "source_id": "gate.items-against-client"
        },
        {
          "anchor": "the client wins by definition",
          "anchor_sha256": "53dae888a2e5fb7787639b6f2d9112b32c5cfa0e28e199d34ecbaa062a169df4",
          "line": 5,
          "role": "primary_reference",
          "source_id": "client.item-table"
        },
        {
          "anchor": "private static readonly (byte Group, short Number, int Value)[] ClientItemValues",
          "anchor_sha256": "67624bd69f1db9aa5ec65d5465ae2f29054af2213c8fbc9eabdb19760dd8fe94",
          "line": 528,
          "role": "implementation",
          "source_id": "patch.item-price-parity"
        }
      ],
      "reference": "Klientská Data/Local/Eng/item_eng.bmd, dekódovaná podle rozvržení z pinnutých MuMain zdrojů.",
      "status": "implemented_unverified",
      "surface": "items",
      "title": "Tabulka položek se shoduje s klientem majitele"
    },
    {
      "assessment": "Čtyři period item bagy už nepoužívají nepřesné společné skupiny se Zen fallbacky a náhodnými options: Heart of Love +3, Silver Medal +5, Gold Medal +6 a Box of Heaven +7 vybírají rovnoměrně přesné řádky připnutých louis/Main5.2 tabulek včetně levelu a additional option. White Wizard vždy vydá Bless a jeho Ogre větev 30 % Wizard's Ring, jinak 10 000 Zen; chybějící externí promo gift větev je přiznaná jako coverage gap. Běžný Zen se odvozuje z randomizovaného pre-rate EXP děleného pěti místo finálně znásobeného součtu plus sedm a Symbol of Kundun už nemá současně obecnou i explicitní mapovou cestu. Samostatný fail-closed manifest inventarizuje generátory, jejich instalace, overlay pořadí a zdrojové sazby, ale poctivě označuje pět runtime oblastí, které bez produkčního exportu nebo externí služby nejsou pokryté.",
      "confidence": {
        "basis": "Otevírací řádky jsou přepsané z dvou shodných připnutých period stromů; White Wizard a Zen větev jsou svázané s period serverovou implementací. Zdrojový checker prošel nad aplikovaným stromem, ale runtime DB join rows a event completion tabulky zůstávají explicitně neúplné.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "items.effective-season-six-drop-paths",
      "observed": {
        "declared_runtime_gaps": 5,
        "period_item_bag_source_levels": [
          3,
          5,
          6,
          7
        ],
        "white_wizard_bless_chance": 1.0,
        "white_wizard_ogre_ring_chance": 0.3,
        "zen_experience_divisor": 5
      },
      "provenance": [
        {
          "anchor": "PeriodEventItemBagRewardGenerator.TryGenerateReward",
          "anchor_sha256": "75641e83101806dd806682228423c3eb9fed097744324465bf440d5d3a6dca81",
          "line": 49,
          "role": "implementation",
          "source_id": "patch.effective-season-six-drops"
        },
        {
          "anchor": "source topology and manifest are current",
          "anchor_sha256": "cd2c57ff5ce75593714281582d3206fae727d015a1b7f61dcce67177a4461438",
          "line": 1923,
          "role": "regression_gate",
          "source_id": "gate.effective-drop-manifest"
        }
      ],
      "reference": "Připnuté louis Season 6 update 31/Main5.2 item bagy a period zTeam serverové drop větve.",
      "status": "implemented_unverified",
      "surface": "items",
      "title": "Efektivní drop cesty zachovávají doložené period větve"
    },
    {
      "assessment": "Obecný excellent generator vybírá jednu z šesti dobových options. OpenMU však druhou option přidával jen s pravděpodobností 0,1 % a opakoval hod, dokud nebyla odlišná. Dvě připnuté Season 6 implementace se shodují na jiném NewOptionRand: první bit je uniformní, bit číslo 2 dostane jeden 50% reroll a poté proběhne jediný 25% druhý hod, jehož duplicita správně ponechá jednu option. PureMU nyní reprodukuje právě tuto sekvenci bez změny samotného poolu, excellent item drop rate, Moss odměn nebo packetového mapování bitů. Hráčský malý vzorek se samou mana option tím není vydáván za deterministicky vysvětlený; zdrojový pool manu nezvýhodňuje.",
      "confidence": {
        "basis": "Dvě lokálně připnuté S6 větve nesou byte-for-byte shodný NewOptionRand a současný serverový pool i packet serializer byly přečteny po celé cestě. Runtime distribuční smoke je odložen do společného závěrečného gate.",
        "level": "high",
        "scope": "fidelity_match"
      },
      "id": "items.excellent-option-rolls",
      "observed": {
        "first_option_pool_size": 6,
        "option_two_single_reroll_probability": 0.5,
        "second_bit_attempt_probability": 0.25,
        "second_duplicate_retried": false
      },
      "provenance": [
        {
          "anchor": "if (firstOption.Number == 2 && this._randomizer.NextInt(0, 2) != 0)",
          "anchor_sha256": "7b73e4860ace3253a3bcdf65cf15e80d4ca84e98b6c35e9cc447ad61fb5de36a",
          "line": 862,
          "role": "implementation",
          "source_id": "patch.excellent-option-rolls"
        },
        {
          "anchor": "this._randomizer.NextInt(0, 4) != 0",
          "anchor_sha256": "bfa202e5d93526f563ded8ecba3993cc1252c7d6dfa0a9323d32bf9a43bd38e0",
          "line": 875,
          "role": "implementation",
          "source_id": "patch.excellent-option-rolls"
        }
      ],
      "reference": "Shodný NewOptionRand v připnutých zTeamS6.3 a muOnline-season6 serverových stromech.",
      "status": "implemented_unverified",
      "surface": "items",
      "title": "Excellent options používají dobovou Season 6 distribuci"
    },
    {
      "assessment": "Jewel of Harmony se v tomhle realmu nedal získat, protože se nedal získat Gemstone. Gemstone byl v NULE skupin dropů a s DropsFromMonsters false, neprodával ho žádný obchodník, nebyl odměnou questu ani výsledkem řemesla. Gemstone Refinery přitom vyrábí Jewel of Harmony PRÁVĚ z Gemstonu, takže celý řetěz včetně Seed Creation a možnosti Guardian na úrovni 380 byl dosažitelný jen teoreticky. Upstream OpenMU ho nedoplňuje: aktualizace klenotů pro Season 6 dává skupinu dropu Jewelu of Creation a Jewelu of Guardian a tím končí.\n\nŽe DropsFromMonsters false nestačí jako nález, ukazuje kontrola: tentýž příznak mají VŠECHNY klenoty včetně Jewelu of Bless, který prokazatelně padá, protože je v deseti skupinách dropů. Rozdíl je v počtu skupin, ne v příznaku.\n\nDoloženo čtyřmi dobovými sadami ze dvou distribucí (Main5.2 Season 5, louis-s6-u31, xMuPP, mudevs Season 6), které v Data/Item/ItemDrop.txt nesou shodný řádek: index 7209, mapa 39, netvoři úrovně 69 az 150, šance 1000 z 1000000. Že to nejsou kopie téhož souboru, je ověřeno: po normalizaci mezer a při porovnání jen společných sloupců se tabulky liší v hrstce řádků (Jewel of Chaos má u louise minimum 40, u mudevs 12). Mapa 39 je v realmu Kanturu Event. DropItemGroup má MinimumMonsterLevel i MaximumMonsterLevel a generátor obě čte.\n\nSkupina je klenotová, ne random item: generátor promíjí své dvanáctiúrovňové okno jen klenotovým skupinám a bez té výjimky by drop level 25 Gemstone uvěznil na příšerách 25 az 36. Upstream došel k témuž a má na to celou aktualizaci RemoveJewelDropLevelGapPlugIn.\n\nDruhá půlka: Gemstone, Jewel of Harmony a oba brusné kameny měly z upstreamu prohozenou úroveň dropu a hodnotu (150 a 25 proti dobovým 150 hodnota a 25 úroveň). Mapování dokazuje kontrola na předmětech, kde se ta čísla liší: Apple je dobově Value 5 a Level 1, v OpenMU DropLevel 1 a Value 5; Small Healing Potion je 10 a 10 obojím směrem. Main5.2 tiskne ty sloupce v opačném pořadí, což ten swap maskovalo; čtené proti vlastní hlavičce a s Applem jako kontrolou se všechny čtyři sady shodnou.",
      "confidence": {
        "basis": "Čtyři dobové sady ze dvou distribucí se shodnou na dropu do bytu; nezávislost tabulek ověřena po normalizaci; mapování sloupců ověřeno kontrolními předměty; sémantika DropLevel, MinimumMonsterLevel a klenotové výjimky přečtena v generátoru, ne předpokládána. Dvě negativní kontroly, každá na jednu půlku opravy.",
        "level": "high",
        "scope": "fidelity_match"
      },
      "id": "items.harmony-chain-source",
      "observed": {
        "gemstone_drop_groups_after": 1,
        "gemstone_drop_groups_before": 0,
        "jewel_of_bless_drop_groups": 10,
        "period_distributions": 2,
        "period_sets_agreeing": 4
      },
      "provenance": [
        {
          "anchor": "private const string GemstoneDropGroupDescription = \"Gemstone (Kanturu)\";",
          "anchor_sha256": "512f6902439e62db7e1dc57dd85fe91286583c657c356edba1a18999ddc1dafc",
          "line": 576,
          "role": "implementation",
          "source_id": "patch.harmony-chain-source.puremugameplayprofile"
        },
        {
          "anchor": "ApplyGivesTheHarmonyChainItsSourceAndItsFiguresAsync",
          "anchor_sha256": "a6be417d8e37fcf932dceb658130c8a74580e129c0e319d7cce72a34fa25f712",
          "line": 3020,
          "role": "regression_test",
          "source_id": "patch.harmony-chain-source.puremugameplayprofiletest"
        }
      ],
      "reference": {
        "drop_chance": 0.001,
        "map_number": 39,
        "monster_level_maximum": 150,
        "monster_level_minimum": 69,
        "period_item_level": 25,
        "period_item_value": 150
      },
      "status": "implemented_unverified",
      "surface": "items",
      "title": "Odkud se bere Gemstone a čím tím ožívá Jewel of Harmony"
    },
    {
      "assessment": "Pevná Zen odměna z item boxu nemá zkušenostní podíly z boje. Ve skupině přesto používala stejný filtr jako Zen z monstra, který odmítá členy v safe zóně; otevření Box of Kundun ve městě proto mohlo vytvořit viditelný Zen, který žádný člen party nedokázal sebrat. Oprava zachovává rovné rozdělení, členství v party, stejnou mapu, načtené atributy, limit Zen i serializovanou platbu, ale safe-zone podmínku vynechává pouze pro pevný drop bez bojových podílů. Zen z monster se zkušenostními podíly dál používá původní bojový filtr. Shoda této distribuce s dobovým Webzenem není doložená; tvrzení se týká odstranění jednoznačné funkční vady současného realmu.",
      "confidence": {
        "basis": "Zdrojová větev rozlišuje item-box money přes prázdný seznam podílů a úzký regresní test staví dva členy party přímo do safe zóny. Test je zapsaný v patchi; jeho spuštění je odloženo do závěrečné společné brány.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "items.item-box-money-safezone-pickup",
      "observed": {
        "fixed_drop_party_split_preserved": true,
        "monster_money_filter_changed": false,
        "safe_zone_blocks_fixed_drop_after": false,
        "safe_zone_blocks_fixed_drop_before": true
      },
      "provenance": [
        {
          "anchor": "var isFixedDropWithoutCombatShares = this._shares.Count == 0;",
          "anchor_sha256": "394c4ce8d0559063428f610d382cc411bded6722b01ff30180f3fce7fd32b0c2",
          "line": 183,
          "role": "implementation",
          "source_id": "patch.item-box-money-safezone.droppedmoney"
        },
        {
          "anchor": "MoneyWithoutSharesCanBePickedUpByPartyInSafezoneAsync",
          "anchor_sha256": "9e26c051c63626e359369d6bc8671ebe0d58803cf64b3f997f39fb0f837afeca",
          "line": 232,
          "role": "regression_test",
          "source_id": "patch.item-box-money-safezone.moneydistributiontest"
        }
      ],
      "reference": {
        "official_s6e3_item_box_money_distribution_found": false,
        "scope": "current realm functional correctness"
      },
      "status": "implemented_unverified",
      "surface": "items",
      "title": "Pevný Zen z item boxu lze v party sebrat i v safe zóně"
    },
    {
      "assessment": "Všech pět částí zbroje Lilium (Eternal Wing), předmět číslo 44 ve skupinách 7 až 11, má nastavené tři sockety a rodiny voleb Water, Earth, Wind a bonus pro zbroj. Tento stav chrání kontroly nové konfigurace, aktualizace uložených dat i opravy při startu. Audit nenašel dobový oficiální podklad pro přesné socketové zařazení v S6E3.",
      "confidence": {
        "basis": "Oprava vyjmenovává všech pět částí i přesné identity socketových voleb a obsahuje testy opakovatelné aktualizace i opravy při startu.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "items.lilium-socket-set",
      "observed": {
        "groups": [
          7,
          8,
          9,
          10,
          11
        ],
        "maximum_sockets": 3,
        "name": "Lilium (Eternal Wing)",
        "number": 44,
        "socket_option_families": [
          "water",
          "earth",
          "wind",
          "armor_bonus"
        ]
      },
      "provenance": [
        {
          "anchor": "this.AddArmorSockets(7, 44); // Lilium (Eternal Wing) Helm",
          "anchor_sha256": "4790ac84f92569c66f09b54bfc25c96c896a09d61620bbf56b401df93414e976",
          "line": 175,
          "role": "implementation",
          "source_id": "patch.item-lilium.socketsystem"
        },
        {
          "anchor": "Assert.That(actualSocketOptionIds, Has.Count.EqualTo(4), liliumPart.Name.ToString());",
          "anchor_sha256": "9d86f42af604a2147fc0f31339d6d4355335e278d4b9db66a9b4d9d36591e987",
          "line": 1076,
          "role": "regression_test",
          "source_id": "patch.item-lilium.puremugameplayprofiletest"
        },
        {
          "anchor": "UpdateRepairsPersistedLiliumSetIdempotentlyAsync",
          "anchor_sha256": "26132b4b9fae15e4e03c1ba94add433df5dbc8f61165f41722e2cb094179ad0e",
          "line": 43,
          "role": "regression_test",
          "source_id": "patch.item-lilium.seasonsixliliumsocketconfigurationtest"
        },
        {
          "anchor": "ERROR: configuration-update versions differ from the reviewed stack through 0239",
          "anchor_sha256": "5a628af95907d78bde1df6efa256ceded1801fc3a3405ecce4240eee02284cbf",
          "line": 1492,
          "role": "review_record",
          "source_id": "gate.patched-stack"
        },
        {
          "anchor": "WEBZEN-S6E3-TOP-GEAR-ACQUISITION-UNKNOWN",
          "anchor_sha256": "914311139b15b8718362c38abab94d061d040b181626a9973ff6fcd8a975996c",
          "line": 461,
          "role": "gap_record",
          "source_id": "gap.webzen-s6e3-top-gear-acquisition"
        }
      ],
      "reference": {
        "official_s6e3_socket_classification_reference_found": false,
        "review_label": "prověřená oprava socketového zařazení Lilium"
      },
      "status": "implemented_unverified",
      "surface": "items",
      "title": "Socketové zařazení zbroje Lilium"
    },
    {
      "assessment": "Upravená konfigurace zařazuje Phoenix Soul Star (skupina 0, číslo 35) do běžné kořisti z monster a zachovává evidované vlastnosti zbraně pro úroveň 380. Testy a povinná opakovatelná oprava chrání nové i uložené konfigurace. Audit nenašel dobový oficiální důkaz běžné kořisti z monster v S6E3, takže přesná shoda zůstává neověřená.",
      "confidence": {
        "basis": "Implementace, kontroly nové konfigurace, oprava uložených dat a blokující kontrola upraveného zdroje tvoří deterministické důkazy v repozitáři.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "items.phoenix-soul-star",
      "observed": {
        "drop_level": 147,
        "drops_from_monsters": true,
        "group": 0,
        "maximum_sockets": 0,
        "name": "Phoenix Soul Star",
        "number": 35,
        "required_level": 380
      },
      "provenance": [
        {
          "anchor": "this.CreateWeapon(0, 35, 0, 270, 1, 2, true, \"Phoenix Soul Star\", 147",
          "anchor_sha256": "a920b7c0c1974eccca77776e3b0ff3e86d2de7179358b08a1ebaeccee5215a96",
          "line": 170,
          "role": "implementation",
          "source_id": "patch.item-pss.weapons"
        },
        {
          "anchor": "Assert.That(phoenixSoulStar.DropLevel, Is.EqualTo(147));",
          "anchor_sha256": "bd5518af6b5f27bf648bfc41a0daf519f3c65125c23085e9e89f636345f1cbf2",
          "line": 38,
          "role": "regression_test",
          "source_id": "patch.item-pss.seasonsixphoenixsoulstardropconfigurationtest"
        },
        {
          "anchor": "Assert.That(phoenixSoulStar.Requirements.Single(requirement => requirement.Attribute == Stats.Level).MinimumValue, Is.EqualTo(380));",
          "anchor_sha256": "0d406be8be1c5294d25f6517839c30dd8c4b67f7727fce677c17a317e3ffe6ed",
          "line": 40,
          "role": "regression_test",
          "source_id": "patch.item-pss.seasonsixphoenixsoulstardropconfigurationtest"
        },
        {
          "anchor": "UpdateRepairsPersistedPhoenixSoulStarIdempotentlyAsync",
          "anchor_sha256": "5d247339b767201e469730cc16ba6607904e8dc7051d018df3d72c19d2bfb83b",
          "line": 50,
          "role": "regression_test",
          "source_id": "patch.item-pss.seasonsixphoenixsoulstardropconfigurationtest"
        },
        {
          "anchor": "ERROR: Season 6 weapons differ beyond the reviewed Phoenix Soul Star drop correction",
          "anchor_sha256": "be8aae635e9aef3f198d1394d36f35dbc07ce87bf35a4101f228724d7e8564aa",
          "line": 1468,
          "role": "review_record",
          "source_id": "gate.patched-stack"
        },
        {
          "anchor": "WEBZEN-S6E3-TOP-GEAR-ACQUISITION-UNKNOWN",
          "anchor_sha256": "914311139b15b8718362c38abab94d061d040b181626a9973ff6fcd8a975996c",
          "line": 461,
          "role": "gap_record",
          "source_id": "gap.webzen-s6e3-top-gear-acquisition"
        }
      ],
      "reference": {
        "official_s6e3_monster_drop_reference_found": false,
        "review_label": "prověřená oprava kořisti Phoenix Soul Star"
      },
      "status": "implemented_unverified",
      "surface": "items",
      "title": "Zařazení Phoenix Soul Star do kořisti z monster"
    },
    {
      "assessment": "HP i mana lektvary a jablko se na PureMU stackují po třech. Hodnota pochází výhradně z připnuté inicializace Season Six v OpenMU; **žádný patch PureMU ji nemění**. Že tři je hodnota původní hry, doloženo NENÍ — dobový oficiální podklad se nepodařilo dohledat a moderní guidy se jako důkaz stavu při vydání nepoužívají. Prakticky z toho plyne, že není co měnit, a tedy ani důvod stavět kvůli tomu nový klient.",
      "confidence": {
        "basis": "Hodnota je přímo v připnutém zdroji a je stejná pro jablko i všechny léčivé a manové lektvary. Absence změny na straně PureMU je ověřená tím, že žádný z patchů se souboru lektvarů nedotýká.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "items.potion-stack-size",
      "observed": {
        "alcohol_stack": 1,
        "apple_stack": 3,
        "changed_by_puremu": false,
        "healing_and_mana_potion_stack": 3
      },
      "provenance": [
        {
          "anchor": "apple.Durability = 3;",
          "anchor_sha256": "1c000e3acbdf808a3b8e56b05279c16cbe9fd0665946f0e1be85d7ea055a5b36",
          "line": 95,
          "role": "implementation",
          "source_id": "openmu.item-potions"
        },
        {
          "anchor": "alcohol.Durability = 1;",
          "anchor_sha256": "15dcfcc21df98a34f1a5e029b9946b65dd333e98dd64b842a8a349c734cc56d0",
          "line": 72,
          "role": "implementation",
          "source_id": "openmu.item-potions"
        },
        {
          "anchor": "WEBZEN-S6E3-POTION-STACK-SIZE-UNKNOWN",
          "anchor_sha256": "e295eddc5777aa31ac913a93df7a63c1f83bb281c10108baad1e54af072164e0",
          "line": 453,
          "role": "gap_record",
          "source_id": "gap.webzen-s6e3-potion-stack-size"
        }
      ],
      "reference": {
        "expected_official_service": "velikost stacku lektvarů v S6E3",
        "official_reference_temporality": "nedohledaný dobový oficiální podklad"
      },
      "status": "implemented_unverified",
      "surface": "items",
      "title": "Velikost stacku lektvarů"
    },
    {
      "assessment": "Co předmět žádá po tom, kdo ho drží, nikdo neporovnal. Porovnalo se to proti pěti dobovým tabulkám předmětů, s klientem jako rozhodčím totožnosti — dobový řádek se čte jen tehdy, když se jeho jméno shoduje se jménem, které tomu slotu dává klient.\n\nDobový soubor není jedna tabulka, ale šestnáct — po jedné na skupinu — a nesdílejí rozvržení sloupců: sekce zbraní má sloupce pro poškození, na které v sekci klenotů není místo. Každá sekce ale nese vlastní hlavičku se jmény sloupců, takže se čte podle jmen, ne podle pozic. Počítání zleva je přesně to, co při prvním pokusu posunulo všechny požadavky o sloupec a vyrobilo sto neshod, které neexistovaly.\n\nVýsledek: 1188 požadavků u 809 předmětů, a realm sedí na všech kromě osmi, kde nežádá nic a dobové sady se shodnou na hodnotě. Sedm z osmi jsou orby a svitky a ten rozdíl je podstatný: dovednost uvnitř nich už nese to, co je potřeba k jejímu seslání, a ta strana je v pořádku. Chybí to, co je potřeba svitek vůbec držet — tedy brána na naučení dovednosti, ne na její použití. Orb of Ice Arrow chce dobově 258 obratnosti a realm nechtěl nic. Osmý je pár rukavic bez jakékoliv dovednosti.\nDOPLNĚNO: povolené třídy. Dobový soubor má šest příznaků tříd, realm osmnáct tříd — každý příznak pokrývá základní třídu a všechno, čím se může stát. Pro Rage Fightera dobová hlavička sloupec nemá, takže se neporovnává a nic se o něm nedohaduje.\n\nVýsledek stojí za vyslovení, protože je to shoda, ne oprava: **u všech 793 nositelných předmětů se realm shoduje s dobovými sadami na tom, kdo je smí nosit.** Ani jedna neshoda.\n\nŠestnáct předmětů dobové příznaky nese a realm jim třídu nedává vůbec — Jewel of Chaos, gem of secret, kontrakty a rozkazy, Loch's Feather, Scroll of Archangel, Blood Bone, Invisibility Cloak, Spirit, Splinter of Armor, Bless of Guardian, Claw of Beast, Broken Horn a tři questové žetony zbraní. Žádný z nich se nenosí. Realm modeluje seznam tříd jako „kdo to smí mít na sobě\", takže předmět bez slotu žádný seznam nemá; dobové příznaky u těch řádků odpovídají na jinou otázku, kterou tahle tabulka neřeší. Vedeno jako vědomý rozdíl s důvodem, ne jako mezera.\nDOPLNĚNO POTŘETÍ: poškození, rychlost útoku a úroveň dropu. Poškození zbraní a rychlost útoku sedí **beze zbytku** — 91 minim, 91 maxim a 92 rychlostí, nula neshod. Kris má dobově 6 až 11 při rychlosti 50 a realm přesně to.\n\nÚroveň dropu sedí u 351 předmětů a liší se u devíti, všech ve skupině 14. Osm z nich se vědomě nemění, protože ani jedna strana nenabízí číslo, kterému by se dalo věřit: tři lektvary štítu a Jewel of Guardian mají dobově nulu, což je nepřítomnost údaje, ne úroveň, a brát ji doslova by znamenalo, že lektvar štítu padá z desáté úrovně. Gemstone, Jewel of Harmony a oba brusné kameny sedí v realmu na rovných 150 a dobově na rovných 25 — dva ploché bloky, z nichž ani jeden nevypadá jako hodnota na míru předmětu, a přesun by postavil ekonomiku Harmony na příšery 25. úrovně. To je otázka na majitele, ne čtení korpusu.\n\nDevátý je skutečná odchylka a opravená: Jewel of Creation seděl na 72, což je úroveň Jewel of Life, kdežto čtyři sady říkají 78. Sourozenci jsou přitom přesně správně — Bless 25, Soul 30, Life 72 — a právě to z něj dělá výjimku, ne jiné měřítko.",
      "confidence": {
        "basis": "Porovnáno proti běžící produkci. Totožnost slotu rozhoduje jméno z klientského item_eng.bmd, sloupce se čtou podle hlavičky každé skupiny. Hlásí se jen jednomyslná shoda aspoň čtyř z pěti sad. Regresní test drží doplněné požadavky a obsahuje kontrolu, že se požadavek dovednosti na seslání nepřepsal požadavkem svitku na držení. Povolené třídy se porovnávají po rodinách: každý dobový příznak pokrývá základní třídu i její povýšení, a Rage Fighter se neporovnává, protože pro něj dobová hlavička sloupec nemá.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "items.requirements-against-period",
      "observed": {
        "added": [
          {
            "attribute": "Total Energy Requirement Value",
            "item": "10/52 Hades Gloves",
            "value": 181
          },
          {
            "attribute": "Total Agility Requirement Value",
            "item": "12/18 Orb of Ice Arrow",
            "value": 258
          },
          {
            "attribute": "Total Energy Requirement Value",
            "item": "12/10 Orb of Greater Damage",
            "value": 100
          },
          {
            "attribute": "Total Energy Requirement Value",
            "item": "12/21 Scroll of FireBurst",
            "value": 20
          },
          {
            "attribute": "Total Energy Requirement Value",
            "item": "12/22 Scroll of Summon",
            "value": 34
          },
          {
            "attribute": "Total Energy Requirement Value",
            "item": "12/23 Scroll of Critical Damage",
            "value": 25
          },
          {
            "attribute": "Total Energy Requirement Value",
            "item": "12/24 Scroll of Electric Spark",
            "value": 29
          },
          {
            "attribute": "Total Energy Requirement Value",
            "item": "12/35 Scroll of Fire Scream",
            "value": 32
          }
        ],
        "drop_level_corrected": {
          "item": "14/22 Jewel of Creation",
          "now": 78,
          "was": 72
        },
        "everything_else_matched": true,
        "weapon_damage_all_match": true,
        "wearable_class_lists_all_match": true
      },
      "provenance": [
        {
          "anchor": "(12, 18, Stats.TotalAgilityRequirementValue, 258), // Orb of Ice Arrow",
          "anchor_sha256": "31f4dbd298abe75325d544089fa870e760abe3bca87dbc901ff72460bf2280ea",
          "line": 697,
          "role": "implementation",
          "source_id": "patch.period-item-requirements.puremugameplayprofile"
        },
        {
          "anchor": "Seven of the eight are orbs and scrolls, and the distinction matters",
          "anchor_sha256": "373a0df29212f867a57e3b44a6ab2255ab82ee8dce781ef063103082a847b3c0",
          "line": 462,
          "role": "implementation",
          "source_id": "patch.period-item-requirements.puremugameplayprofile"
        },
        {
          "anchor": "must ask for something at all.",
          "anchor_sha256": "e22eaa95d48352f28e6a7a7539e2c3f7750ea123b29927275cc055d4582b4bdd",
          "line": 3771,
          "role": "regression_test",
          "source_id": "patch.period-item-requirements.puremugameplayprofiletest"
        },
        {
          "anchor": "casting requirement must not have been overwritten by the scroll's.",
          "anchor_sha256": "62558e22a89e7391333368ac6474e6ae8890df8cb307700caab9ab5c43f4d589",
          "line": 3784,
          "role": "regression_test",
          "source_id": "patch.period-item-requirements.puremugameplayprofiletest"
        },
        {
          "anchor": "Identity first, the same way the monster comparison does it",
          "anchor_sha256": "ba311c808f7e3e24bbe743e175d43c670058942c4daa854b6c16a45ca02abc64",
          "line": 11,
          "role": "review_record",
          "source_id": "gate.items-against-period"
        },
        {
          "anchor": "Every item that\n# is worn - all 793 of them - agrees with the period on who may wear it.",
          "anchor_sha256": "08a403ce31de6449117a0c2398fb338e07551b04a8a546e6a22094393e04c0de",
          "line": 71,
          "role": "review_record",
          "source_id": "gate.items-against-period"
        },
        {
          "anchor": "(14, 22, 78), // Jewel of Creation",
          "anchor_sha256": "34708598951d8a458f6e5609e2e526080ed86b6cf4c3db97a2869e406c5d8647",
          "line": 500,
          "role": "implementation",
          "source_id": "patch.jewel-of-creation-drop-level.puremugameplayprofile"
        },
        {
          "anchor": "must keep the drop level it already had.",
          "anchor_sha256": "f5d22040fc9d11650998b8a8a55477e222ab34407e9ef6cddc9879fba240d644",
          "line": 3754,
          "role": "regression_test",
          "source_id": "patch.jewel-of-creation-drop-level.puremugameplayprofiletest"
        }
      ],
      "reference": {
        "added": 8,
        "drop_levels_matching": 351,
        "figures_compared": 4194,
        "items_compared": 809,
        "minimum_carriers": 4,
        "period_tables": 5,
        "requirements_compared": 1188,
        "settled": 104,
        "weapon_damage_and_speed_matching": 274,
        "wearable_items_matching": 793
      },
      "status": "implemented_unverified",
      "surface": "items",
      "title": "Čísla předmětů proti dobovým tabulkám"
    },
    {
      "assessment": "Statistiky příšer nikdo neporovnal — opravená byla jediná hodnota (životy Chaos Castle 7). Porovnalo se sedm sloupců u všech 354 příšer realmu proti osmi dobovým sadám.\n\nNEJDŘÍV TOTOŽNOST. Sady se neshodnou, které stvoření slot drží: několik z nich říká slotu 84 „Orc Warrior“, zatímco klient mu říká „Chief Skeleton Warrior“, a jejich čísla patří jinému tvoru. Porovnávat je by byl nesmysl vydávaný za důkaz. Dobový řádek se proto čte jen tehdy, když se jeho jméno shoduje se jménem u klienta — klient rozhoduje, na co se hráč dívá, stejně jako u rozměrů předmětů. Ta kontrola sama vyhodí 11 až 432 řádků na sadu.\n\nPOTOM SHODA, A MUSÍ BÝT JEDNOMYSLNÁ. I po ověření totožnosti nesou sady tři různé škály kalimských stupňů, každá posunutá o patro. Většina tedy není dobová hodnota, ale edice, která v tomhle korpusu zrovna přečíslila ostatní. Hlásí se jen hodnota, kterou dá každá sada nesoucí to stvoření, a musí jich být aspoň šest.\n\nZbylo 40 neshod a jsou v nich tři rodiny a čtyři jednotlivci. Celé Chaos Castle útočí s ratingem 10, což není číslo, které by kterákoliv sada dala komukoliv — tak vypadá nenastavené pole. Dobově mají od 18 u Strange Rabbita po 240 u Captain Grizzlyho; příšery, které netrefí, dělají z Chaos Castle kolo, které nejde prohrát. Polluted Butterfly, Hideous Rabbit a Werewolf drží navzájem své figury — celý řádek, všech sedm sloupců, v kruhu; sedm sad je na všech třech jednomyslných, což z toho dělá rotaci, ne tři neshody. Berserk stál na dvojnásobku dobových životů a o šest úrovní níž. A defense rate Blood Soldiera 3 a attack rate Illusion of Kundun 4 nesly nulu navíc — týž tvar jako životy Chaos Castle 7; potvrzují to i jejich vlastní řady bez korpusu (sousedé Blood Soldiera jdou 54 až 92, Kundunovy iluze 330, 440, 575).\n\nBrány a sochy obléhání zůstávají na pěti milionech: ty jim dává obléhání z vlastní tabulky a dobově taky, hodnota v Monster.txt je základ, který nepoužívá ani jedna strana.\n\nDOPLNĚNO TÝŽ DEN: porovnání se rozšířilo o sloupce, které realm drží na definici příšery, ne mezi jejími atributy — dosah pohybu, dosah útoku, dohled, prodleva mezi údery a doba návratu. Přibylo 27 neshod. Chaos Castle znovu a v témž tvaru: celé patro máchá po 1500 ms a vidí pět dlaždic, což zase nejsou čísla, která by kterákoliv sada dala komukoliv. Yeti, Elite Yeti a oba Crusty se vracejí po třech sekundách tam, kde osm sad říká deset — trojnásobek pole, které tam má být. Dark Phoenix se vrací po patnácti, sedm sad říká sto padesát. Pět zlatých příšer se záměrně nemění: jejich respawn nepatří polní tabulce, invaze je staví jednou na svém začátku a Golden Titan vracející se dvacet sekund po smrti je invaze, která nikdy neskončí.\n\nDOPLNĚNO POTŘETÍ: živelné odolnosti. Realm je drží jako podíl z 255, dobové tabulky jako celé číslo, a pořadí sloupců se odvodilo z dat, ne odhadem — Poison Bull Fighter má v prvním sloupci 6 a realm poison 6/255, Hell Hound ve čtvrtém 3 a realm fire 3/255; pořadí je tedy jed, led, blesk, oheň. Našlo se 88 rozdílů. **Osmdesát řádků prostě chybí** — ne nula, ale žádný řádek; rozpad je 64 blesk, 6 led, 5 oheň, 5 jed, a proto realm nesl blesk jen na 167 příšerách, zatímco ostatní tři na skoro 290. Osm hodnot je špatně a dvě z nich jsou **prohozené**: Erohim má jed 254 a led 100 tam, kde osm sad říká jed 100 a led 254, a Nightmare tentýž pár týmž způsobem. Prohození váží víc než ta dvě čísla — říká, že se pořadí sloupců jednou přečetlo špatně, a tohle jsou jediné dvě příšery, kde se ty dva sloupce liší dost na to, aby to bylo vidět.",
      "confidence": {
        "basis": "Porovnáno proti běžící produkci, ne proti zdroji. Totožnost slotu rozhoduje jméno z klientského NpcName_Eng.txt. Hlásí se jen jednomyslná shoda aspoň šesti z osmi sad. Dva nálezy potvrzuje i jejich vlastní řada nezávisle na korpusu. Regresní test drží opravené hodnoty, hlídá, že v Chaos Castle nezůstal nikdo na attack rate 10, a obsahuje kontrolu, že se pěti milionům u bran a soch obléhání nesáhlo.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "monsters.figures-against-period",
      "observed": {
        "berserk_health": {
          "now": 33000,
          "was": 70000
        },
        "chaos_castle_attack_rates_were_unset": true,
        "extra_zero": [
          "184 Blood Soldier 3 defense rate",
          "197 Illusion of Kundun 4 attack rate"
        ],
        "missing_resistance_rows": {
          "fire": 5,
          "ice": 6,
          "lightning": 64,
          "poison": 5
        },
        "rotated_figures": [
          "419 Polluted Butterfly",
          "420 Hideous Rabbit",
          "421 Werewolf"
        ]
      },
      "provenance": [
        {
          "anchor": "The Polluted Butterfly, the Hideous Rabbit and the Werewolf are holding each other's",
          "anchor_sha256": "28e1279f2e6c3b7d0e2bd1af88d8a0569bea4a04490ce2862e994dafad564d86",
          "line": 399,
          "role": "implementation",
          "source_id": "patch.period-monster-figures.puremugameplayprofile"
        },
        {
          "anchor": "(197, Stats.AttackRatePvm, 780), // Illusion of Kundun 4",
          "anchor_sha256": "65586b8b58b0c74e962b719fc276fbcd583cff00bfccf4e81cda1f6bc8d33f25",
          "line": 836,
          "role": "implementation",
          "source_id": "patch.period-monster-figures.puremugameplayprofile"
        },
        {
          "anchor": "must have a real attack rate.",
          "anchor_sha256": "508b30eaedfac19ff2aa4e2fe579ad4ed68e849c6ca6fa8b851bb896ca166498",
          "line": 3918,
          "role": "regression_test",
          "source_id": "patch.period-monster-figures.puremugameplayprofiletest"
        },
        {
          "anchor": "must keep the hit points the siege gives it.",
          "anchor_sha256": "26b1b258ff0d05c518ae2214a0d206f760a50b7b2bbb7cc1308ac0530e48f776",
          "line": 3930,
          "role": "regression_test",
          "source_id": "patch.period-monster-figures.puremugameplayprofiletest"
        },
        {
          "anchor": "Identity first.",
          "anchor_sha256": "529d810646e046f19ac023bd9c6dac5ce816b51a27584138eddf0d952f0ab813",
          "line": 19,
          "role": "review_record",
          "source_id": "gate.monsters-against-period"
        },
        {
          "anchor": "MINIMUM_CARRIERS = 6",
          "anchor_sha256": "2f759f3c03012b9ac3842d5031e8098725139ac077a815228420965440361fac",
          "line": 50,
          "role": "regression_test",
          "source_id": "gate.monsters-against-period"
        },
        {
          "anchor": "(77, MonsterField.RespawnDelaySeconds, 150), // Dark Phoenix",
          "anchor_sha256": "414c9befe5991638776ed56a4b38ba9ea636a356733455615b46ae75b1f7c5b5",
          "line": 803,
          "role": "implementation",
          "source_id": "patch.period-monster-behaviour.puremugameplayprofile"
        },
        {
          "anchor": "The five Golden monsters are deliberately not here.",
          "anchor_sha256": "c3eb8e0c3eb01898cbabf5ba6f91d935cedc28024d342a665896846d22ff0b6a",
          "line": 434,
          "role": "implementation",
          "source_id": "patch.period-monster-behaviour.puremugameplayprofile"
        },
        {
          "anchor": "must keep the respawn the invasion needs.",
          "anchor_sha256": "055f62729e84d1323acb953f46036d28d5b6a992e7df3f0d50625128209309ad",
          "line": 3869,
          "role": "regression_test",
          "source_id": "patch.period-monster-behaviour.puremugameplayprofiletest"
        },
        {
          "anchor": "(295, Stats.IceResistance, 254), // Erohim",
          "anchor_sha256": "c90e7b33cd21d3f1de7f7f29971faad9c432036d6f619c67888ef0d773a15676",
          "line": 770,
          "role": "implementation",
          "source_id": "patch.period-monster-resistances.puremugameplayprofile"
        },
        {
          "anchor": "must keep poison and ice apart, or the swap was not undone.",
          "anchor_sha256": "820f060d1734c425a643397504e1bbb6847b7fdd354953a036328b3164f27371",
          "line": 3817,
          "role": "regression_test",
          "source_id": "patch.period-monster-resistances.puremugameplayprofiletest"
        }
      ],
      "reference": {
        "corrected": 155,
        "figures_compared": 1503,
        "minimum_carriers": 6,
        "monsters_compared": 354,
        "period_sets": 8,
        "settled": 9
      },
      "status": "implemented_unverified",
      "surface": "events",
      "title": "Statistiky příšer porovnané s dobovými tabulkami"
    },
    {
      "assessment": "Tato revize OpenMU prodává Orb of Impale a Orb of Twisting Slash u Pasiho Mága, který jinak nabízí kouzelnické svitky, hole a látkové sety. Dva nezávislé dobové stromy shodně řadí orby Dark Knighta ke kováři: u Orb of Impale se shodují oba, u Orb of Twisting Slash jeden uvádí kováře a druhý ho neprodává vůbec — ani jeden ho nedává mágovi. Oba orby se proto přesouvají k Hanzovi na volné sloty 7 a 15, tedy na stejné pozice v okně, jaké měly u mága. Řádky se přesouvají, nikoli znovu vytvářejí, takže si předmět obchodníka zachová identitu a žádné hráčské úložiště se nedotkne. Sloty uvedené v tomto bloku jsou ověřené proti živé databázi: Orb of Impale (13) je ve slotu 76 a Orb of Twisting Slash (7) ve slotu 77. Dřívější hodnoty 7 a 15 zaměňovaly čísla předmětů za sloty.",
      "confidence": {
        "basis": "Regresní test ověřuje, že mág ani jeden orb neprodává, kovář prodává každý právě jednou na svém slotu a přesun nevytvoří novou kolizi slotů. S vypnutým přesunem test spadne.",
        "level": "medium",
        "scope": "fidelity_match"
      },
      "id": "npcs.blacksmith-skill-orbs",
      "observed": {
        "from": "Pasi the Mage",
        "moved_orbs": [
          {
            "name": "Orb of Impale",
            "number": 13,
            "slot": 76
          },
          {
            "name": "Orb of Twisting Slash",
            "number": 7,
            "slot": 77
          }
        ],
        "to": "Hanzo the Blacksmith"
      },
      "provenance": [
        {
          "anchor": "MoveSkillOrbsToTheBlacksmith(gameConfiguration);",
          "anchor_sha256": "6d9b311bbb80ac5777196f99b632210afb022ccc8747bd11cbfd45170c29401c",
          "line": 1166,
          "role": "implementation",
          "source_id": "patch.blacksmith-skill-orbs.puremugameplayprofile"
        },
        {
          "anchor": "must sell orb {itemNumber} exactly once.",
          "anchor_sha256": "ddd82b82da5e1e801f64c14cb1f42cbe8da23ef9a2fce3704606e5f843bad143",
          "line": 3621,
          "role": "regression_test",
          "source_id": "patch.blacksmith-skill-orbs.puremugameplayprofiletest"
        }
      ],
      "reference": {
        "not_assessed": [
          "přesné pořadí a sloty položek v dobovém okně obchodu"
        ],
        "period_sources": [
          "komunitní serverový strom S6: Orb of Impale u kováře, Twisting Slash nikde",
          "druhý serverový strom: orby Dark Knighta u kováře včetně Twisting Slash"
        ]
      },
      "status": "implemented_unverified",
      "surface": "npcs",
      "title": "Orby Dark Knighta prodává kovář"
    },
    {
      "assessment": "Pozdější oficiální návod uvádí Gens Dupriana v Lorencii na souřadnicích 144,127. PureMU používá stejný jediný pevný spawn a regresní test chrání přesné souřadnice. Je doložena shoda s tímto pozdějším návodem, nikoli umístění právě v době S6E3.",
      "confidence": {
        "basis": "Odkazovaný oficiální návod, přesná oprava a regresní kontrola souřadnic společně dokazují věcnou shodu umístění.",
        "level": "medium",
        "scope": "fidelity_match"
      },
      "id": "npcs.gens-duprian-location",
      "observed": {
        "fixed": true,
        "map": 0,
        "map_name": "Lorencia",
        "name": "Gens Duprian",
        "number": 543,
        "spawn_count": 1,
        "x": 144,
        "y": 127
      },
      "provenance": [
        {
          "anchor": "WEBZEN-S6E3-GENS-STEWARDS-AND-SERVICE",
          "anchor_sha256": "f862a375b00e782b73eb5f1f11542780613660bb4c7b37a19dec166dc5570924",
          "line": 145,
          "role": "primary_reference",
          "source_id": "webzen.system.gens.guide"
        },
        {
          "anchor": "yield return this.CreateMonsterSpawn(24, this.NpcDictionary[543], 144, 127, Direction.South);",
          "anchor_sha256": "2aec02179d96f13e8dc43b0f5e6fc7183a8faa5b5ee0b30c3345f6a3263d4cd0",
          "line": 43,
          "role": "implementation",
          "source_id": "patch.npc-gens.lorencia"
        },
        {
          "anchor": "Gens Duprian must use the Webzen-published Lorencia x-coordinate.",
          "anchor_sha256": "8052c9fab47ce5358fb449a6f3f3b35c223cbdfa9b919a9673ebafaedcf86bfc",
          "line": 4072,
          "role": "review_record",
          "source_id": "patch.npc-gens.puremugameplayprofiletest"
        },
        {
          "anchor": "Assert.That(gensDuprianSpawn.Y1, Is.EqualTo(127)",
          "anchor_sha256": "4c3df4f52c918f7b677d01a7d1d3414b5d704fcd57c2d9d00862345dfd766324",
          "line": 4074,
          "role": "regression_test",
          "source_id": "patch.npc-gens.puremugameplayprofiletest"
        }
      ],
      "reference": {
        "map_name": "Lorencia",
        "official_reference_temporality": "pozdější nebo nedatovaný oficiální návod",
        "x": 144,
        "y": 127
      },
      "status": "implemented_unverified",
      "surface": "npcs",
      "title": "Duprian shodný s pozdějším návodem"
    },
    {
      "assessment": "Pozdější oficiální návod popisuje vstup do Gens i odchod přes správce. Gens Duprian a Vanert ve světě PureMU zůstávají, ale jejich interaktivní klientský dialog je záměrně blokovaný, protože tato revize OpenMU nemá perzistentní model Gens ani obsluhu příslušných požadavků. Hráč dostane výslovnou zprávu o nedostupnosti.",
      "confidence": {
        "basis": "Odkazovaný oficiální návod dokládá očekávanou službu; oprava přímo popisuje chybějící serverový model a obsluhu, při chybě bezpečně blokuje dialog a v testech ověřuje oba správce.",
        "level": "high",
        "scope": "known_gap"
      },
      "id": "npcs.gens-service",
      "observed": {
        "dialog_actionable": false,
        "failure_mode": "explicit_unavailable_message",
        "npcs": [
          {
            "name": "Gens Duprian",
            "number": 543
          },
          {
            "name": "Gens Vanert",
            "number": 544
          }
        ],
        "persistent_model_present": false,
        "request_handlers_present": false
      },
      "provenance": [
        {
          "anchor": "WEBZEN-S6E3-GENS-STEWARDS-AND-SERVICE",
          "anchor_sha256": "f862a375b00e782b73eb5f1f11542780613660bb4c7b37a19dec166dc5570924",
          "line": 145,
          "role": "primary_reference",
          "source_id": "webzen.system.gens.guide"
        }
      ],
      "reference": {
        "expected_official_service": "vstup do Gens a odchod přes správce",
        "official_reference_temporality": "pozdější nebo nedatovaný oficiální návod"
      },
      "status": "known_gap",
      "superseded_by": "npcs.gens-steward-dialog",
      "surface": "npcs",
      "title": "Úplnost služby správců Gens"
    },
    {
      "assessment": "Správci Gens odpovídali, že systém není dostupný. V době, kdy to patch 0016 zavedl, to byla pravda: klientský dialog i pakety existovaly, ale server neměl perzistentní model ani obsluhu požadavků. Patche 0103 až 0108 a 0112 je doplnily — členství, vstup, odchod, žebříček, přenos příspěvku a značku nad hlavou — a odmítnutí přežilo důvod, pro který vzniklo. Dialog se teď otevírá jako u každého jiného NPC. Není to tvrzení, že je Gens hotový celý: odměny zůstávají přiznanou mezerou a vstup je od 50. úrovně, takže postavy realmu dnes dostanou funkční okno a odmítnutí od samotného požadavku na vstup.",
      "confidence": {
        "basis": "Obsluha požadavků a odpovídající pohled jsou ve stromu doložené jmenovitě, brána zakazuje návrat hlášky i větve a regresní test ověřuje, že se dialog otevře a žádná zpráva se neodešle.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "npcs.gens-steward-dialog",
      "observed": {
        "dialog_actionable": true,
        "join_required_level": 50,
        "persistent_model_present": true,
        "request_handlers_present": true,
        "rewards_present": false
      },
      "provenance": [
        {
          "anchor": "public byte Key => GensJoinRequest.Code;",
          "anchor_sha256": "07c9f1e637e30a83e266adcf2cf36cec3588d738b569d4c02ca9b666d953dd93",
          "line": 28,
          "role": "implementation",
          "source_id": "patch.gens-join"
        },
        {
          "anchor": "public async ValueTask GensStewardOpensItsDialogAsync(short npcNumber, string designation)",
          "anchor_sha256": "8ad8a39a41be683e942e927ace605b478ee4749e0cb7ba98e213ca9b3982932a",
          "line": 88,
          "role": "regression_test",
          "source_id": "patch.gens-steward-dialog"
        }
      ],
      "reference": {
        "expected_official_service": "vstup do Gens a odchod přes správce",
        "official_reference_temporality": "pozdější nebo nedatovaný oficiální návod"
      },
      "status": "implemented_unverified",
      "supersedes": [
        "npcs.gens-service"
      ],
      "surface": "npcs",
      "title": "Správci Gens otevírají svůj dialog"
    },
    {
      "assessment": "Pozdější oficiální návod uvádí Gens Vanerta v Norii na souřadnicích 167,100. Připnutý inicializátor OpenMU jej umísťuje na 187,125. Jde o přímou souřadnicovou odchylku vůči návodu; přesný dobový stav při vydání S6E3 zůstává nedoložený.",
      "confidence": {
        "basis": "Odkazovaný oficiální návod a připnutý inicializátor přímo uvádějí dvě rozdílné dvojice souřadnic.",
        "level": "high",
        "scope": "known_gap"
      },
      "id": "npcs.gens-vanert-location",
      "observed": {
        "map": 3,
        "map_name": "Noria",
        "name": "Gens Vanert",
        "number": 544,
        "x": 187,
        "y": 125
      },
      "provenance": [
        {
          "anchor": "WEBZEN-S6E3-GENS-STEWARDS-AND-SERVICE",
          "anchor_sha256": "f862a375b00e782b73eb5f1f11542780613660bb4c7b37a19dec166dc5570924",
          "line": 145,
          "role": "primary_reference",
          "source_id": "webzen.system.gens.guide"
        },
        {
          "anchor": "yield return this.CreateMonsterSpawn(10, this.NpcDictionary[544], 187, 125, Direction.SouthWest);",
          "anchor_sha256": "560a69742cc3f81446466e754f1d6ee508efa3a3ab906afaf4e4694019869767",
          "line": 35,
          "role": "implementation",
          "source_id": "openmu.npc-noria"
        }
      ],
      "reference": {
        "map_name": "Noria",
        "official_reference_temporality": "pozdější nebo nedatovaný oficiální návod",
        "x": 167,
        "y": 100
      },
      "status": "known_gap",
      "superseded_by": "npcs.gens-vanert-stands-where-the-guide-says",
      "surface": "npcs",
      "title": "Odchylka umístění Gens Vanerta v Norii"
    },
    {
      "assessment": "Gens Vanert stál v Norii na 187,125 — dvacet dlaždic východně a pětadvacet jižně od místa, kam patří. Oficiální návod uvádí 167,100 a totéž říkají obě dobové sady, které toho správce vůbec nesou: řádek \"544 03 00 167 100 02 //Gens Vanert Steward\" v louis-s6-u31 Data/MonsterSetBase/003 - Noria.txt a stejná souřadnice jako Config v XML mudevs Season 6. Nezávislý artefakt shodný s oficiálním návodem je tak blízko uzavření, jak se v tomhle katalogu dá dojít bez vlastní dobové stránky Webzenu.\n\nNosič v profilu už neřeší jednoho správce, ale tabulku obou, takže se souřadnice dostane i do realmu, který byl naseedovaný dávno. Regresní test drží obě dvojice; negativní kontrola (vrácení Vanerta na 187,125) ho shodí.\n\nJedno místo, kde se zdroje NEshodují, je Duprian: soubor mudevs má 144,125, návod 144,127. Dvě dlaždice, a návod je z těch dvou oficiálnější, takže realm drží jeho číslo. Je to tu napsané schválně, aby se to za rok neodvozovalo znovu s dojmem, že si toho nikdo nevšiml.",
      "confidence": {
        "basis": "Oficiální návod a dvě nezávislé dobové sady uvádějí shodně 167,100; regresní test to drží a negativní kontrola ho shodí.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "npcs.gens-vanert-stands-where-the-guide-says",
      "observed": {
        "duprian_guide_wins_over_period_file": true,
        "map": 3,
        "map_name": "Noria",
        "name": "Gens Vanert",
        "number": 544,
        "previous_x": 187,
        "previous_y": 125,
        "x": 167,
        "y": 100
      },
      "provenance": [
        {
          "anchor": "WEBZEN-S6E3-GENS-STEWARDS-AND-SERVICE",
          "anchor_sha256": "f862a375b00e782b73eb5f1f11542780613660bb4c7b37a19dec166dc5570924",
          "line": 145,
          "role": "primary_reference",
          "source_id": "webzen.system.gens.guide"
        },
        {
          "anchor": "private const byte GensVanertX = 167;",
          "anchor_sha256": "4996411a2a596798d1a65d566fc502550fe2d769b296efc5baec76c202f30a8a",
          "line": 172,
          "role": "implementation",
          "source_id": "patch.gens-vanert-location.puremugameplayprofile"
        },
        {
          "anchor": "Gens Vanert stands in Noria 167,100.",
          "anchor_sha256": "73ecd505cdaac2c9e0c2e55686c12fcf4574accf88210ab98e90c55c8e99f505",
          "line": 4070,
          "role": "regression_test",
          "source_id": "patch.gens-vanert-location.puremugameplayprofiletest"
        }
      ],
      "reference": {
        "guide_position": [
          167,
          100
        ]
      },
      "status": "implemented_unverified",
      "supersedes": [
        "npcs.gens-vanert-location"
      ],
      "surface": "npcs",
      "title": "Gens Vanert stojí tam, kde ho oba zdroje mají"
    },
    {
      "assessment": "Golden Archer stál v Lorencii na 175,120. Ta souřadnice nebyla dohledaná — patch 0071 ji vzal z inicializátoru mapy verze **0.95d**, jak sám v komentáři říká, a šlo mu tehdy o to, aby město nebylo poloprázdné. Šest dobových sad Season 6 ho staví do **Deviasu na 226,66**, dvě do Lorencie na 175,120 — a ty dvě jsou tentýž rod, jehož lorencijská dlaždice je shodná s 0.95d do bytu. Žádná sada ho nemá v obou městech, takže to není přidání, ale volba mezi nimi, a šest je víc než dvě. Totéž se stalo Leovi the Helper a ze stejného důvodu: obnoven z čísel OpenMU, později přesunut do města, které dobové soubory jmenují.",
      "confidence": {
        "basis": "Rozdíl našlo porovnání běžící produkce proti osmi sadám. Cílová dlaždice je bezpečná zóna v terénních datech, která realm veze, a nikdo do tří dlaždic kolem ní nestojí. Natočení potvrzují čtyři sady shodně. Regresní test drží jediný výskyt, mapu i dlaždici.",
        "level": "high",
        "scope": "fidelity_match"
      },
      "id": "npcs.golden-archer-town",
      "observed": {
        "map": "Devias",
        "name": "Golden Archer",
        "number": 236,
        "previous": "Lorencia 175,120",
        "spawn_count": 1,
        "x": 226,
        "y": 66
      },
      "provenance": [
        {
          "anchor": "(DeviasMapNumber, 46, 236, 226, 66, Direction.SouthWest), // Golden Archer",
          "anchor_sha256": "5dad1a6abe593b7b0e4de308b98301bf495725a193bcdb77858a1aa355c894af",
          "line": 292,
          "role": "implementation",
          "source_id": "patch.archer-and-crown-switch.puremugameplayprofile"
        },
        {
          "anchor": "The Golden Archer must use the square six period sets give him.",
          "anchor_sha256": "67dda414ed955283e07b3eda297e4134efc4eebee8af89489bde41d29cedb40c",
          "line": 3942,
          "role": "regression_test",
          "source_id": "patch.archer-and-crown-switch.puremugameplayprofiletest"
        }
      ],
      "reference": {
        "map_name": "Devias",
        "period_sets_for_devias": 6,
        "period_sets_for_lorencia": 2,
        "x": 226,
        "y": 66
      },
      "status": "implemented_unverified",
      "surface": "npcs",
      "title": "Golden Archer stojí v Deviasu, jak říká šest dobových sad"
    },
    {
      "assessment": "Realm používal pro NPC 240 a 241 zděděná interní jména Baz The Vault Keeper a Guild Master, zatímco vydaný klient i čtyři period Monster.txt větve shodně používají Safety Guardian a Royal Guard Captain Lorence. zTeam S6.3 současně potvrzuje, že ID 240 otevírá vault a ID 241 guild dialog, takže se mění pouze designation; ID, role, NpcWindow a spawny zůstávají beze změny. Startup profile stejná jména idempotentně přenese do existující databáze.",
      "confidence": {
        "basis": "Klientská tabulka jmen, čtyři přesně shodné period větve a serverové dispatch callsitey se shodují na identitě i roli obou ID.",
        "level": "high",
        "scope": "fidelity_match"
      },
      "id": "npcs.identities-240-241",
      "observed": [
        {
          "designation": "Safety Guardian",
          "npc_window": "VaultStorage",
          "number": 240
        },
        {
          "designation": "Royal Guard Captain Lorence",
          "npc_window": "GuildMaster",
          "number": 241
        }
      ],
      "provenance": [
        {
          "anchor": "private static void ReconcileSeasonSixNpcIdentities",
          "anchor_sha256": "ee4d96ebe7c0eda846554d2d6b1b3132c5ee70a7f2ae4167ad50085eda007ea0",
          "line": 1314,
          "role": "implementation",
          "source_id": "patch.npc-identities"
        }
      ],
      "reference": "Vydaný 1.04C NpcName_Eng.txt, čtyři period Monster.txt větve a zTeam S6.3 NpcTalk dispatch.",
      "status": "implemented_unverified",
      "surface": "npcs",
      "title": "NPC 240 a 241 používají klientské Season 6 identity"
    },
    {
      "assessment": "Ve světě zůstávají NPC, jejichž event tato revize OpenMU neimplementuje vůbec — Doppelganger nemá serverovou logiku, existuje jen jako mapy a hodnoty v paketových enumech. OPRAVA DŘÍVĚJŠÍHO TVRZENÍ: totéž tu stálo i o Illusion Temple a NEPLATÍ — ten logiku má (255řádkový IllusionTempleContext, vstupní handler, pohled na stav, výroba vstupenky) a odehraje celý zápas. Jeho skutečná vada je jiná a je vedená zvlášť: za výhru nedává nic. Klikání na ně dřív vypisovalo vývojářskou hlášku s interním číslem NPC, což hráči hlásili jako rozbitý klient. Nově odpovídají v charakteru. Ponechání těchto NPC ve světě NENÍ doložené jako shoda s oficiálním S6E3, stejně jako u čtyř odstraněných spawnů; je to otevřeně přiznaná mezera v dostupnosti služeb.",
      "confidence": {
        "basis": "Seznam vychází z dotazu do konfigurace realmu na NPC bez okna, obchodu i questu, protnutého se skutečnými spawny. Chybějící implementace eventů je doložená tím, že připnutý zdroj miniher obsahuje pouze tři kontexty.",
        "level": "high",
        "scope": "known_gap"
      },
      "id": "npcs.inert-event-services",
      "observed": {
        "doppelganger_has_server_logic": false,
        "illusion_temple_has_server_logic": true,
        "implemented_mini_games": [
          "Blood Castle",
          "Chaos Castle",
          "Devil Square"
        ],
        "inert_npc_reply": "I have nothing for you here yet.",
        "spawned_but_inert": [
          {
            "map": "Arena",
            "names": [
              "Arena Guard"
            ]
          },
          {
            "map": "Crywolf Fortress",
            "names": [
              "Guardsman",
              "Werewolf Quarrel"
            ]
          },
          {
            "map": "Devias",
            "names": [
              "Adviser Jerinteu",
              "Delgado - Lucky Coins",
              "Fireworks Girl",
              "Lugard",
              "Mirage"
            ]
          },
          {
            "map": "Elvenland",
            "names": [
              "David",
              "Lugard",
              "Mirage"
            ]
          },
          {
            "map": "Kanturu_III",
            "names": [
              "Gateway Machine"
            ]
          },
          {
            "map": "Noria",
            "names": [
              "Cherry Blossom Tree"
            ]
          }
        ]
      },
      "provenance": [
        {
          "anchor": "private const string NothingToOfferMessage = \"I have nothing for you here yet.\";",
          "anchor_sha256": "ac811784da251d0336976140bd797fdc40f608fb27a592b298f80cd9ab719416",
          "line": 32,
          "role": "implementation",
          "source_id": "patch.inert-npc-reply.talknpcaction"
        },
        {
          "anchor": "An NPC whose system this realm does not run answers in character",
          "anchor_sha256": "e02297ee34bc20b16f9c4bee314b5f6b27c3ceaf53a7e0ed62452f880c08f481",
          "line": 46,
          "role": "regression_test",
          "source_id": "patch.inert-npc-reply.talknpcactiontest"
        },
        {
          "anchor": "public class MiniGameContext : AsyncDisposable, IEventStateProvider",
          "anchor_sha256": "463fdac1e9cf83941f9177472d61c7937cc7da471ddd41be37ccb11e1551cc0b",
          "line": 24,
          "role": "implementation",
          "source_id": "openmu.minigame-context"
        },
        {
          "anchor": "WEBZEN-S6E3-UNAVAILABLE-NPC-SERVICES-UNKNOWN",
          "anchor_sha256": "be837968d5d868bba0d9f215f6017e18361c1e70938a322168e299bdfb4c64d8",
          "line": 471,
          "role": "gap_record",
          "source_id": "gap.webzen-s6e3-unavailable-npc-services"
        }
      ],
      "reference": {
        "expected_official_service": "eventy obsluhované těmito NPC, například Illusion Temple a Doppelganger",
        "official_reference_temporality": "nedohledaný dobový oficiální podklad"
      },
      "status": "known_gap",
      "superseded_by": "npcs.period-npc-placement",
      "surface": "npcs",
      "title": "NPC eventů, které realm neprovozuje"
    },
    {
      "assessment": "Tato revize OpenMU staví Lea the Helper do Lorencie na 130,126. Dva nezávislé dobové spawn soubory Season 6 ho shodně a se stejnými souřadnicemi kladou do Devias na 212,63 a v Lorencii ho nemají vůbec. Výskyt se proto přesouvá: rozporné výskyty se odstraní a v Devias zůstane právě jeden. Odlišné umístění NPC 256 na téže lorencijské souřadnici se mezi zdroji liší, a proto se s ním nic nedělá.",
      "confidence": {
        "basis": "Dva na sobě nezávislé dobové spawn soubory uvádějí totožnou mapu i souřadnice; regresní test ověřuje, že Leo je na světě právě jednou, v Devias a na 212,63. S vypnutým přesunem test spadne.",
        "level": "medium",
        "scope": "fidelity_match"
      },
      "id": "npcs.leo-the-helper-placement",
      "observed": {
        "map": "Devias",
        "spawn_count": 1,
        "x": 212,
        "y": 63
      },
      "provenance": [
        {
          "anchor": "(DeviasMapNumber, 43, 371, 212, 63, Direction.SouthWest), // Leo the Helper",
          "anchor_sha256": "ac7177052c4fd3bffbe3bab82503d81428bbe796af7b80feb7ad42fc02bdbb5f",
          "line": 275,
          "role": "implementation",
          "source_id": "patch.leo-the-helper-devias.puremugameplayprofile"
        },
        {
          "anchor": "Leo the Helper must stand in Devias.",
          "anchor_sha256": "c43e390098985adbed52adae736e630ae3f4287e95cdf90e12e6c09feb70483c",
          "line": 3648,
          "role": "regression_test",
          "source_id": "patch.leo-the-helper-devias.puremugameplayprofiletest"
        }
      ],
      "reference": {
        "not_assessed": [
          "jakou službu Leo the Helper v S6E3 nabízel"
        ],
        "period_sources_agree": [
          "komunitní serverový strom S6: NPC 371 na Devias 212,63",
          "korejský MonsterSetBase (25. 4. 2008): NPC 371 na Devias 212,63"
        ]
      },
      "status": "implemented_unverified",
      "surface": "npcs",
      "title": "Leo the Helper stojí v Devias"
    },
    {
      "assessment": "Obsah obchodů z tohohle korpusu doložit nejde a je to nález sám o sobě, ne nedodělaná práce.\n\nPět dobových sad nese `Data/Shop/` s jedním souborem na obchodníka. Jedenáct obchodníků realmu se podařilo spárovat se všemi pěti. Výsledek: **u šesti z těch jedenácti se všech pět sad neshodne ani na jediné položce.** U Hanza the Blacksmith je sjednocení 68 druhů zboží a průnik nula — jedna sada mu dává koženou zbroj, druhá meče, třetí jablka. Dvojice, které vycházejí na sto procent, jsou přitom kopie téhož rodu, ne nezávislé potvrzení; nejlepší dvojice u Thompsona má shodu **nula procent**.\n\nDůvod je zřejmý, když se na to člověk podívá: sortiment obchodníka je to první, co si každý provozovatel upraví. Není to herní data, která nikdo nemění — na rozdíl od statistik příšer nebo požadavků předmětů, kde se sady shodovaly do bytu.\n\nCo se z toho přesto dá říct kladně: **tam, kde korpus říká vůbec něco, realm už sedí.** Ze všech položek, na kterých se u daného obchodníka shodne všech pět sad, realmu nechybí ani jedna. Navíc jich prodává 51 druhů nad rámec jejich sjednocení.\n\nKontrola se pro tuhle plochu záměrně nepíše. Porovnání, které neumí odlišit dobový údaj od vkusu jednoho provozovatele, je horší než žádné — hlásilo by rozdíl proti tomu repacku, který se zrovna počítal.",
      "confidence": {
        "basis": "Změřeno, ne odhadnuto: jedenáct obchodníků spárovaných se všemi pěti sadami, u šesti je průnik všech pěti prázdný, u Hanza je sjednocení 68 druhů proti prázdnému průniku a nejlepší dvojice má 20 %. Kladná část je měřená stejně: z položek, na kterých se všech pět shodne, realmu nechybí žádná.",
        "level": "high",
        "scope": "known_gap"
      },
      "id": "npcs.merchant-stock-not-documentable",
      "observed": {
        "check_deliberately_not_written": true,
        "realm_missing_from_unanimous_core": 0,
        "realm_stocks_beyond_union": 51
      },
      "provenance": [
        {
          "anchor": "A comparison\n# that cannot tell a period figure from one operator's taste is worse than no comparison.",
          "anchor_sha256": "2050da84a7dc3b54565694f39169cef4036a629bb884139fa6d43c67cf6e8929",
          "line": 93,
          "role": "review_record",
          "source_id": "gate.outside-the-gate"
        },
        {
          "anchor": "Hanzo's union runs to 68 kinds of goods against",
          "anchor_sha256": "12185e7aeabb69d682c1ccdabd1fe354e35de32e30c94798d3a535f9d3a75ffe",
          "line": 90,
          "role": "review_record",
          "source_id": "gate.outside-the-gate"
        }
      ],
      "reference": {
        "hanzo_intersection": 0,
        "hanzo_union": 68,
        "merchants_matched": 11,
        "merchants_with_empty_intersection": 6,
        "sets": 5
      },
      "status": "known_gap",
      "surface": "npcs",
      "title": "Sortiment obchodníků z korpusu doložit nejde"
    },
    {
      "assessment": "Moss má v realmu pět beden zavěšených jako ItemCrafting s čísly 60 až 64. Spustit je umí jedině požadavek na mísení v Chaos Machine, a klientský výčet ChaosMachineMixType (src/source/Dotnet/PacketFunctions_ClientToServer_Enums.h připnutého klienta) obsahuje právě hodnoty 1, 3, 4, 6, 15, 16, 22, 23, 41, 49 a 50 — žádnou z těch pěti. Ta konfigurace je tedy protokolem nedosažitelná. Klient navíc pro Mosse čeká jiné okno: hodnotu 0x22, která v src/source/Network/Server/WSclient.cpp zapne v obchodním okně režim sázky s potvrzovacím dialogem. Drátový výčet OpenMU přechází z 0x21 rovnou na 0x23, takže server tu hodnotu poslat neumí a Moss dnes otevře prázdné okno obchodu. Sazby beden zůstávají nedoložené a nedoplňujeme je odhadem.",
      "confidence": {
        "basis": "Obě tvrzení jsou přímo ve zdroji připnutého klienta: výčet typů mísení a větev, která režim sázky zapíná právě pro okno 0x22.",
        "level": "high",
        "scope": "known_gap"
      },
      "id": "npcs.moss-boxes-unreachable",
      "observed": {
        "client_mix_types": [
          1,
          3,
          4,
          6,
          15,
          16,
          22,
          23,
          41,
          49,
          50
        ],
        "gamble_shop_window": "0x22",
        "moss_crafting_numbers": [
          60,
          61,
          62,
          63,
          64
        ],
        "server_can_send_gamble_window": false
      },
      "provenance": [
        {
          "anchor": "MossFirstCraftingNumber = 60",
          "anchor_sha256": "4766a2dc6d3a1f9032268bffd831e280486cad262779cfe76d934e1d7eac7737",
          "line": 1391,
          "role": "implementation",
          "source_id": "patch.moss-boxes"
        }
      ],
      "reference": {
        "expected_official_service": "Moss prodává bedny v režimu sázky",
        "official_reference_temporality": "pozdější nebo nedatovaný oficiální návod"
      },
      "status": "known_gap",
      "superseded_by": "npcs.moss-gamble-shop",
      "surface": "npcs",
      "title": "Mossovy bedny jsou protokolem nedosažitelné"
    },
    {
      "assessment": "Moss má vlastní okno 0x22, na kterém klient zapíná režim sázky; nákup je pak obyčejný nákup, takže se nekupuje bedna do inventáře, ale losuje se u pultu. Pět beden odpovídá obchodnímu souboru i klientskému item.bmd ve shodném pořadí a stojí dva miliony zenů. Každá bedna má tři stupně: běžný, excellent a vzácný s jednou zbraní a ohňostrojem, který oficiální stránka popisuje. Členství běžných stupňů je dáno jediným pravidlem — zbraně kategorie, které padají z příšer — a to samo vylučuje odměny z Blood Castle, výrobky Chaos Machine i střelivo. Vzácná pětice je ztotožněná s předměty, které PureMU už má, a to shodou tříd, rychlosti útoku i dovednosti, nikoli podle podobnosti jmen. Pět craftingů s čísly 60 až 64, na které klient neumí poslat požadavek, je odstraněno i s řádky. NEDOLOŽENÉ ZŮSTÁVAJÍ SAZBY STUPŇŮ: Webzen uvádí jen „a small percentage\", jediná publikovaná čísla (~1 % excellent, ~0,01 % vzácný) jsou komunitní a rekonstrukční data jim u vzácného odporují pětadvacetinásobně. Použita jsou publikovaná, protože jiná neexistují.\n\nOPRAVENO 2026-08-20: sazby už nedoložené NEJSOU a obsah beden byl špatně. Nese to dvojice Mossových vlastních dobových tabulek, shodná ve třech dochovaných sadách Season 5/6 do bytu (mudevs Season 6, louis-s6-u31, Main5.2 S5U15). Data/Event/MossMerchant.dat dává každému řádku GambleRate a dobový server je sype rovnou do váženého losu; každá bedna sčítá padesát tisíc a její jediná výhradní zbraň má z toho přesně tisíc, tedy 2 %, ne setinu procenta. Možnosti nejsou součástí toho losu — server je hází až potom z ItemOptionRate.txt, kde jsou příslušné řádky rovnou popsané jako „(MossMerchant)\": excellent 800 a dvojitý 200 z deseti tisíc (10 %), skill 500, luck 500 (5 % každý) a úroveň +0 až +7 s vahami 2500/2000/1500/1500/1000/500/500/500.\n\nObsah beden se opravil oběma směry: byly zhruba dvojnásobné (52, 13, 20, 8, 10 proti 30, 8, 12, 5, 5), protože „každá zbraň kategorie, kterou pouštějí příšery\" je širší síť než seznam, který Webzen napsal. A padl i jeden dřívější závěr tohohle tvrzení: první bedna prý držela sekery a žádná kopí — drží obojí, 1/5 až 1/8 vedle 3/5 až 3/10. Komunitní soubor se nemýlil v sekerách, chyběla mu kopí, a „Sword/Mace/Spear\" je zkratka, ne inventář.\n\nPětice výhradních zbraní dostala nezávislé potvrzení: tatáž tabulka dává v každé bedně přesně jedné položce odlišnou váhu a jsou to 3/11, 5/33, 4/24, 2/18 a 5/34 — titíž, ve stejných bednách, kteří předtím vyšli ze shody tříd, rychlosti útoku a dovednosti.\n\nTiery v OpenMU se vylučují, takže se ty dva losy skládají do tří se stejnými okrajovými pravděpodobnostmi: výhradní zbraň drží 2 % a je excellent (což o ní říká i stránka Webzenu), zbylých 98 % se dělí deset ku devadesáti.\n\nDOLOŽENO BĚHEM 2026-08-20: dosud se u Mosse ověřovala jen konfigurace — bedny existují, tiery na nich visí, šance sčítají jedničku. Nic z toho není to, co dělá hráč. Hráč zmáčkne koupit, a zpátky musí přijít zbraň, ne bedna, kterou zaplatil. Nákup teď skutečně proběhne v testu: `BuyNpcItemAction.BuyItemAsync` proti obchodníkovi s oknem MossGambleShop vydá položku z pulu bedny a strhne dva miliony; **kontrolou** je tentýž nákup u obyčejného obchodníka, který vydá bednu samotnou, takže se neměří jen to, že v inventáři něco je. Třetí případ hlídá jedinou nepřípustnou možnost: prázdný los nesmí stát nic. Negativní kontrola (vypnutá hazardní větev) shodí tři testy ze čtyř a ten kontrolní nechá projít.\n\nZbývá druhá půlka, kterou bez klienta ověřit nejde: že klient ten paket vůbec odešle. K tomu je patch 0009 stromu MU Main a ukáže to jenom spuštění.\n\nKLIENTSKÁ PŮLKA DOLOŽENA AŽ DO BINÁRKY 2026-08-20. Registrace patche dokazuje, že je připnutý, a hash balíku dokazuje, že ZIP nese postavenou binárku. Ani jedno neříká, že se opravený soubor zkompiloval — zastaralý objekt projde obojím. Změřeno: zabalená alpha-33e4510e/Main.exe je bit po bitu shodná s lokálním buildem z devíti patchů (1dc3db92…, 34 429 076 B), publikovaná alpha-0ffc3644/Main.exe s buildem z osmi (62094e54…). A tentýž překladový celek postavený s patchem i bez něj se liší v JEDINÉM bajtu na offsetu 0xa1bc: 0x75 (jne) na 0x74 (je), přímo za mov eax,[rax] a test eax,eax — tedy na skoku, který testuje BuyCost proti nule. Nic jiného se nezměnilo.\n\nNedoloženo zůstává jen chování za běhu: že se ta větev projde a paket odejde po drátě. To ukáže jedině spuštění klienta.\n\nOPRAVENO 2026-09-16: cena byla milion, ale přesný launch klient 1.04C si ji počítá sám a u všech pěti beden (getId(13,71) až getId(13,75)) odpovídá 2 000 000 — větev ItemValue v main.exe e3e56142… na raw [0x0018EE33,0x0018EE85), sha 401ee97b…, a je to jediná konstanta 0x1E8480 v celém těle ItemValue. Milion nesou jen komunitní nosiče (ItemValue.txt 6727–6731 u louis, mudevs Season 6 i Main5.2, natvrdo u Deathwaye, konfigurovatelně u zTeamu) a pozdější sezónní menu, žádný autentizovaný Global server. Hráč tedy na pultu viděl dva miliony a server mu strhl milion; 0508 to srovnává na klientskou hodnotu. Rukavice Rage Fightera Moss nemá v žádné dochované verzi (Season 6 až 18) ani v přesném klientovi, přestože ten RF předměty už zná — není to mezera, ale tvar originálu.",
      "confidence": {
        "basis": "Mechanismus je doložen dvěma nezávislými stranami: dobovou oficiální stránkou Webzenu z února 2010 a zdrojem připnutého klienta. Sazby stupňů doložené nejsou a jsou uvedeny níže jako mezera.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "npcs.moss-gamble-shop",
      "observed": {
        "box_item_counts": [
          30,
          8,
          12,
          5,
          5
        ],
        "box_item_numbers": [
          71,
          72,
          73,
          74,
          75
        ],
        "box_price_zen": 1000000,
        "client_object_bytes_differing": 1,
        "client_patch_reaches_the_binary": true,
        "client_send_proven": false,
        "excellent_chance": 0.1,
        "gamble_shop_window": "0x22",
        "item_level_range": [
          0,
          7
        ],
        "period_sets_agreeing": 3,
        "previous_box_item_counts": [
          52,
          13,
          20,
          8,
          10
        ],
        "purchase_proven_at_runtime": true,
        "rare_chance": 0.02,
        "rare_weapons": [
          "3/11 Beuroba",
          "5/33 Chromatic Staff",
          "4/24 Air Lyn Bow",
          "2/18 Stryker Scepter",
          "5/34 Raven Stick"
        ],
        "tier_chances_sum_to_one": true,
        "tier_rates_sourced": true,
        "tiers_per_box": 3,
        "unreachable_craftings_removed": true
      },
      "provenance": [
        {
          "anchor": "A rare item will have 2-3 excellent options",
          "anchor_sha256": "8672cb96e38c7e2160e76a52791109455f62f9c87409ab393a675fa556c699af",
          "line": 26,
          "role": "primary_reference",
          "source_id": "reference.webzen-moss-guide-2010"
        },
        {
          "anchor": "MossGambleShop = 34,",
          "anchor_sha256": "1b0f05b1682573566817a42fa28187c958bc5c628b94a798ba72f6325c5ad835",
          "line": 10893,
          "role": "implementation",
          "source_id": "patch.moss-gamble-window"
        },
        {
          "anchor": "private Item? DrawFromGambleBox(Player player, Item storeItem)",
          "anchor_sha256": "c00d6bb921a5979258249f45c2ae10e1571adae4c9eb24e6cd32e20ca7bdd3c5",
          "line": 274,
          "role": "implementation",
          "source_id": "patch.moss-gamble-shop.buynpcitemaction"
        },
        {
          "anchor": "EveryBoxAlwaysHandsSomethingOverAsync",
          "anchor_sha256": "80bd7f941f3685b5e0c0d5e8c9f9671999f2f91c6b1a4924c72212627d368f50",
          "line": 628,
          "role": "regression_test",
          "source_id": "patch.moss-gamble-shop.puremugameplayprofiletest"
        },
        {
          "anchor": "ReapplyingDoesNotPileUpTiersAsync",
          "anchor_sha256": "e73e2c618e0bee36707d501652e7db3137f1a9cd8a3ac66459175fc86e3e63a7",
          "line": 660,
          "role": "regression_test",
          "source_id": "patch.moss-gamble-shop.puremugameplayprofiletest"
        },
        {
          "anchor": "It is Moss's own table, read from",
          "anchor_sha256": "c63ae9c812e75b01499d773f1a3e7cce30535739c8863c478bfab5c4899bb28a",
          "line": 1397,
          "role": "implementation",
          "source_id": "patch.moss-period-table.puremugameplayprofile"
        },
        {
          "anchor": "private const double MossRareChance = 0.02;",
          "anchor_sha256": "71ed61e76fa305ed85c67ea745c6448a17bf5d93a0a1a7af2eec7bd8e2838226",
          "line": 4281,
          "role": "implementation",
          "source_id": "patch.moss-period-table.puremugameplayprofile"
        },
        {
          "anchor": "EveryBoxHoldsExactlyThePeriodTableAsync()",
          "anchor_sha256": "f7562c8e6e9e3703796546ecdb6f7b0027787f5ea06fa0783f82d51b6dc4afc0",
          "line": 528,
          "role": "regression_test",
          "source_id": "patch.moss-period-table.puremugameplayprofiletest"
        },
        {
          "anchor": "BuyingAtMossHandsOverADrawnWeaponAndNotTheBoxAsync()",
          "anchor_sha256": "5a89e9bbfc8015d3c2d2d70cadb1339d46b383835a2345862ff3826ce4bb889c",
          "line": 49,
          "role": "regression_test",
          "source_id": "patch.moss-purchase-proof"
        },
        {
          "anchor": "AnOrdinaryMerchantHandsOverTheBoxItselfAsync()",
          "anchor_sha256": "0b9fa52f824ded8206244cbf8ce9e97438f115709e1cf23cf451fe42e2409580",
          "line": 73,
          "role": "regression_test",
          "source_id": "patch.moss-purchase-proof"
        },
        {
          "anchor": "ADrawThatComesUpEmptyCostsNothingAsync()",
          "anchor_sha256": "806632c4311029526daab7d258a408d22cf7f236fd65dd45d2bdd73f4454640a",
          "line": 96,
          "role": "regression_test",
          "source_id": "patch.moss-purchase-proof"
        },
        {
          "anchor": "OK: the patch changes the compiled object, so it reached the binary.",
          "anchor_sha256": "5e69d9e7b2b56e1aa3b537b44d59a759d4a6f50a1d7d5ab1e5fe3e0396f84a7b",
          "line": 103,
          "role": "regression_gate",
          "source_id": "tool.client-patch-in-binary"
        },
        {
          "anchor": "private const long MossGambleBoxPrice = 2_000_000;",
          "anchor_sha256": "ddd5fb2e93728ad622534b0f8b8ef704dde22d19e4398cd6e517568fab15dfa0",
          "line": 25,
          "role": "implementation",
          "source_id": "patch.moss-box-price.itempricecalculator"
        },
        {
          "anchor": "EveryMossBoxCostsWhatTheClientAsks",
          "anchor_sha256": "67ed9bbfb81bcfd55c03c081c7f96f83168c0f9589c2256d8319a63be0740f3e",
          "line": 50,
          "role": "regression_test",
          "source_id": "patch.moss-box-price.mossgambleboxpricetests"
        },
        {
          "anchor": "ItemsOutsideTheFiveBoxesAreNotPricedAsBoxes",
          "anchor_sha256": "cdc65800f68fc76bf073b6a4651df4f6b5d705d69f5abad8b86856485d1c7248",
          "line": 92,
          "role": "regression_test",
          "source_id": "patch.moss-box-price.mossgambleboxpricetests"
        }
      ],
      "reference": {
        "expected_official_service": "Moss the Gambler prodává pět beden po dvou milionech zenů a vydává předmět s náhodným typem, dovedností, štěstím a volbou",
        "official_reference_temporality": "dobový oficiální návod"
      },
      "status": "implemented_unverified",
      "supersedes": [
        "npcs.moss-boxes-unreachable"
      ],
      "surface": "npcs",
      "title": "Moss prodává los ve svém vlastním okně"
    },
    {
      "assessment": "Tato revize OpenMU staví do Norie dvakrát Amy the Potion Girl. Dva nezávislé dobové spawn soubory Season 6 — korejský MonsterSetBase datovaný 25. dubna 2008 a samostatný komunitní serverový strom — se shodují, že Noria žádnou prodavačku lahviček nemá; lahvičky tam prodává Elf Lala, která je na serveru prodává v plném rozsahu dál. Oba výskyty se proto při srovnání odstraňují. Amy v Lorencii, kterou oba zdroje uvádějí, zůstává beze změny.",
      "confidence": {
        "basis": "Dva na sobě nezávislé dobové spawn soubory se shodují a regresní test ověřuje, že v Norii nezůstane žádná prodavačka, Elf Lala tam zůstane a Amy v Lorencii se nedotkne.",
        "level": "medium",
        "scope": "fidelity_match"
      },
      "id": "npcs.noria-potion-vendor",
      "observed": {
        "lorencia_potion_girl_spawns": 1,
        "noria_merchant": "Elf Lala",
        "noria_potion_girl_spawns": 0
      },
      "provenance": [
        {
          "anchor": "(NoriaMapNumber, PotionGirlNpcNumber),",
          "anchor_sha256": "b42b344a52b5c71242cbc182e815cea11ccd804186c5639b0a57b8d8a408589e",
          "line": 261,
          "role": "implementation",
          "source_id": "patch.noria-potion-vendor.puremugameplayprofile"
        },
        {
          "anchor": "Noria must not spawn a potion girl.",
          "anchor_sha256": "8f2dfbb30eaf7af1316239d4515beb7bc552114bcfc284c468dcb2e942023f54",
          "line": 3598,
          "role": "regression_test",
          "source_id": "patch.noria-potion-vendor.puremugameplayprofiletest"
        }
      ],
      "reference": {
        "period_sources_agree": [
          "korejský MonsterSetBase (25. 4. 2008): Noria bez NPC 253",
          "komunitní serverový strom S6: Noria bez NPC 253"
        ]
      },
      "status": "implemented_unverified",
      "surface": "npcs",
      "title": "Noria bez prodavačky lahviček"
    },
    {
      "assessment": "OPRAVA DŘÍVĚJŠÍHO TVRZENÍ: dřív tu stálo, že ponechání těchto NPC ve světě NENÍ doložené jako shoda s oficiálním S6E3. Doložené je. Jedenáct NPC z toho seznamu se porovnalo proti spawn tabulkám dobového korpusu a proti běžící produkci: sedm z nich stojí na přesně té dlaždici i s tím natočením, které dávají čtyři až šest nezávislých sad — Guardsman třikrát, Werewolf Quarrel, Adviser Jerinteu, Delgado, David, Gateway Machine a Cherry Blossom Tree. To není přiznaná mezera, to je shoda, kterou nikdo neověřil.\n\nČtyři odchylky se našly a opravily. Mirage a Lugard měli druhý výskyt v Deviasu, o kterém šest dobových sad neví — všechny je staví jen do Elbelandu, na dlaždice, které realm už používá. Jediná sada, která Mirage do Deviasu dává, je repack, jehož komentáře říkají Arena Guardovi „Stadium Guard\" a správci trezoru „Storage Guard\", a dává ho na třetí dlaždici. Fireworks Girl seděla na dlaždici téhož repacku (13,28) místo té, na které se shodne pět sad (32,31). A Aréna: její NPC bere tato revize z mapy verze 0.75, kterou Season 6 dědí nezměněnou, takže Arena Guard i Soccerball stáli na dlaždicích, které nemá žádný dobový soubor.\n\nDvě NPC, která táž rodina drží v Aréně navíc — správce trezoru a šenkýřku — se záměrně nepřesouvají, a ne proto, že by data chyběla. Jejich dlaždice nemají zem na terénu, který projekt veze, ani na dobovém terénu Season 6 jiné sady; jediné sady, které je tam staví, vezou třetí variantu terénu mapy 6, kde ty dlaždice bezpečnou zónou jsou. Porovnalo se jedenáct dobových souborů terénu mapy 6 a neshodnou se ani dva rody. Přesun proto sleduje jen ty pozice, které terén tohoto realmu unese.\n\nBeze změny zůstává, co dřívější tvrzení říkalo o eventech: Doppelganger serverovou logiku nemá a existuje jen jako mapy a hodnoty v paketových enumech, kdežto Illusion Temple logiku má a odehraje celý zápas. NPC, jejichž systém realm neprovozuje, odpovídají v charakteru místo vývojářské hlášky s interním číslem.",
      "confidence": {
        "basis": "Každá pozice se četla ze tří stran: z běžící produkce dotazem do konfigurace, ze spawn tabulek dobového korpusu a ze zdroje realmu. Průchodnost cílových dlaždic se měřila přímo v terénních datech, která realm veze, a kontrolou proti osmi spawnům, o kterých je jisté, že v produkci stojí. Regresní test drží u každého z pěti jediný výskyt i souřadnice a obsahuje kontrolu, že čtečka terénu umí vrátit i „stojatelné\".",
        "level": "high",
        "scope": "current_state"
      },
      "id": "npcs.period-npc-placement",
      "observed": {
        "already_matching_period": [
          224,
          407,
          522,
          478,
          579,
          367,
          451
        ],
        "doppelganger_has_server_logic": false,
        "illusion_temple_has_server_logic": true,
        "left_in_place": [
          {
            "name": "Safety Guardian",
            "number": 240,
            "period_square": "127,114",
            "reason": "no_ground_on_shipped_terrain"
          },
          {
            "name": "Lumen the Barmaid",
            "number": 255,
            "period_square": "137,105",
            "reason": "no_ground_on_shipped_terrain"
          }
        ],
        "relocated": [
          {
            "map": "Elvenland",
            "name": "Mirage",
            "number": 385,
            "removed_duplicate": "Devias 197,53",
            "x": 55,
            "y": 243
          },
          {
            "map": "Elvenland",
            "name": "Lugard",
            "number": 540,
            "removed_duplicate": "Devias 233,66",
            "x": 49,
            "y": 216
          },
          {
            "map": "Devias",
            "name": "Fireworks Girl",
            "number": 379,
            "was": "13,28",
            "x": 32,
            "y": 31
          },
          {
            "map": "Arena",
            "name": "Soccerball",
            "number": 200,
            "was": "62,160",
            "x": 63,
            "y": 160
          },
          {
            "map": "Arena",
            "name": "Arena Guard",
            "number": 239,
            "was": "67,140",
            "x": 72,
            "y": 164
          }
        ]
      },
      "provenance": [
        {
          "anchor": "Mirage and Lugard belong to Elbeland and nowhere else.",
          "anchor_sha256": "68cd5eb3c596b68fbed536b945306d933e8c47e62aef4032cf5dc755082cb20f",
          "line": 277,
          "role": "implementation",
          "source_id": "patch.period-npc-placement.puremugameplayprofile"
        },
        {
          "anchor": "(ArenaMapNumber, 5, 239, 72, 164, Direction.SouthWest), // Arena Guard",
          "anchor_sha256": "4c02aa4364b81c3051663687082c7453f2a6ab9172a8a059091b68c0a73bec3a",
          "line": 314,
          "role": "implementation",
          "source_id": "patch.period-npc-placement.puremugameplayprofile"
        },
        {
          "anchor": "Eleven period files for map 6 were compared and no two",
          "anchor_sha256": "eeeb40b6b9080b0c9414dc7a24899507bef3c2414866ffab847a8729802942d6",
          "line": 310,
          "role": "implementation",
          "source_id": "patch.period-npc-placement.puremugameplayprofile"
        },
        {
          "anchor": "must use the period x-coordinate.",
          "anchor_sha256": "9edc8e9e107c898be60c93eb1fc5b0e9eaf5443ebd59d78732e0ff65ac116073",
          "line": 3672,
          "role": "regression_test",
          "source_id": "patch.period-npc-placement.puremugameplayprofiletest"
        },
        {
          "anchor": "still has no ground on the shipped map 6 terrain",
          "anchor_sha256": "4b3e4b00644a917e9ab43b6d4ba9992db0dcdef235c75cce4a7d155a4f4c4c42",
          "line": 4013,
          "role": "regression_test",
          "source_id": "patch.period-npc-placement.puremugameplayprofiletest"
        },
        {
          "anchor": "WEBZEN-S6E3-UNAVAILABLE-NPC-SERVICES-UNKNOWN",
          "anchor_sha256": "be837968d5d868bba0d9f215f6017e18361c1e70938a322168e299bdfb4c64d8",
          "line": 471,
          "role": "gap_record",
          "source_id": "gap.webzen-s6e3-unavailable-npc-services"
        }
      ],
      "reference": {
        "npcs_corrected": 4,
        "npcs_left_deliberately": 2,
        "npcs_matching_period_exactly": 7,
        "period_sets_compared": 11
      },
      "status": "implemented_unverified",
      "supersedes": [
        "npcs.inert-event-services"
      ],
      "surface": "npcs",
      "title": "Umístění NPC ověřené proti dobovým spawn tabulkám"
    },
    {
      "assessment": "V obchodě Hanza kováře se překrývaly položky ve dvou nezávislých případech a obojí se v realmu projeví tak, že jedna věc není vidět ani koupit. Připnutý inicializátor sází Gladius i Falchion na slot 73 — prostý překlep v seedu, nikoli volba PureMU. A náš vlastní patch 0073 posadil oba orby Dark Knighta na pole 7 a 15, jenže štíty jsou 2×2 a Kite Shield ukotvený na 6 pokrývá 6, 7, 14 i 15, takže oba orby ležely uvnitř něj. Ověřeno z produkčních rozměrů, ne odhadem. Orby dostaly první skutečně volná pole 76 a 77 (řady 0-5 zabírají štíty, 6-11 zbraně) a profil navíc rozestěhuje jakoukoli další kolizi v kterémkoli obchodě, takže dosáhne i na běžící realm. Kontrola počítá OBSAZENÁ POLE, ne kotevní sloty — počítání kotev tuhle chybu nikdy vidět nemohlo, protože položka schovaná uvnitř jiné má vlastní kotvu.",
      "confidence": {
        "basis": "Rozměry a sloty přečtené z produkční databáze; obě kolize potvrzené v připnutém zdroji.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "npcs.shop-slot-overlap",
      "observed": {
        "kite_shield_covers": [
          6,
          7,
          14,
          15
        ],
        "orb_slots_after": [
          76,
          77
        ],
        "orb_slots_before": [
          7,
          15
        ],
        "upstream_collision_slot": 73
      },
      "provenance": [
        {
          "anchor": "(13, 76), // Orb of Impale",
          "anchor_sha256": "b504798e259a8066dee10b70ccdc9de5dcaca5255455b15aefd769f9cf807ab2",
          "line": 255,
          "role": "implementation",
          "source_id": "patch.shop-slot-repair.puremugameplayprofile"
        },
        {
          "anchor": "ApplyGivesEveryShopItemItsOwnSlotAsync",
          "anchor_sha256": "e2887be6b854f5343064444975ba229174e79ac527a10e3490b530a604b21359",
          "line": 1441,
          "role": "regression_test",
          "source_id": "patch.shop-slot-repair.puremugameplayprofiletest"
        }
      ],
      "reference": {
        "shield_size": "2x2",
        "store_width": 8
      },
      "status": "implemented_unverified",
      "surface": "npcs",
      "title": "Překrývající se položky v obchodě kováře"
    },
    {
      "assessment": "Všech 397 pevných umístění NPC v běžícím realmu se porovnalo proti spawn tabulkám osmi dochovaných sad Season 6. Sedmnáct z nich nesedělo na žádnou dlaždici, na které se shodnou aspoň čtyři sady: třináct stálo jinde na téže mapě a čtyři na mapě, kam to NPC nestaví ani jedna sada.\n\nTřináct se přesunulo. Dva z těch přesunů nejsou úklid: deviaský Messenger of Archangel a Jerridon v Aidě stáli na **neprůchozí dlaždici**, a dobová je u obou průchozí. Zbytek jsou posuny o jednu až dvě dlaždice, převážně v Elbelandu, kde se sedm sad shodne a realm měl vlastní hodnoty.\n\nČtyři spawny se odstranily, protože je na té mapě nemá ani jedna z osmi sad. Dva z nich hráčům něco berou a je to záměr: trezor v Lost Toweru a v Atlansu. Osm sad staví Baze na deset různých map a ani jedna z nich to není. Totéž lékárnice v Lost Toweru. Priest Devin se z Deviasu neztratil, jen vrátil — pět sad ho má v Crywolfu a realm ho tam už spawnuje.\n\nPět rozdílů zůstává vědomě: Gens Duprian drží dlaždici z oficiálního návodu Webzenu proti dobovým souborům; u Mosse nesouhlasí jediný rod, což není shoda; dvě sady staví Lahapa v Deviasu na dlaždici, kterou třetí dává Delgadovi a kde Delgado v realmu stojí, takže se sady neshodnou, kdo tam patří; trezor v Aréně má dobovou dlaždici bez země; a korunový spínač Castle Siege nesl souřadnice ve **dvou** tabulkách — v mapě i v konfiguraci obléhání — takže přesunout jednu bez druhé by bylo horší než ta dlaždice. POZNÁMKA K SOUČASNÉMU STAVU: spínač už vědomým rozdílem není, pozdější patch přesunul obě tabulky naráz; vědomé rozdíly jsou tedy čtyři, ne pět.",
      "confidence": {
        "basis": "Porovnání běží proti běžící produkci, ne proti zdroji, a proti osmi sadám zvlášť; hlásí jen tam, kde se aspoň čtyři shodnou, a přijímá dlaždici, kterou má aspoň jedna, protože sady se navzájem rozcházejí. Průchodnost každé cílové dlaždice se změřila v terénních datech, která realm veze. Regresní test drží u každého přesunu novou dlaždici i to, že stará zmizela, a obsahuje kontrolu, že odstranění nesebralo Priestu Devinovi crywolfský spawn a trezoru zbylých deset.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "npcs.spawn-squares-against-period",
      "observed": {
        "moved_onto_blocked_tile_before": [
          {
            "map": "Devias",
            "now": "209,30",
            "number": 233,
            "was": "217,29"
          },
          {
            "map": "Aida",
            "now": "86,13",
            "number": 370,
            "was": "86,14"
          }
        ],
        "removed": [
          {
            "at": "23,17",
            "map": "Atlans",
            "number": 240
          },
          {
            "at": "201,76",
            "map": "Lost Tower",
            "number": 240
          },
          {
            "at": "207,76",
            "map": "Lost Tower",
            "number": 253
          },
          {
            "at": "181,35",
            "map": "Devias",
            "number": 406
          }
        ],
        "vault_keeper_spawns_after": 10
      },
      "provenance": [
        {
          "anchor": "Squares the period puts a spawn on, where this revision put it somewhere else on",
          "anchor_sha256": "21cb9d25854b545b4a32ea79172354e34d991df4806894aa873cfb58049f6713",
          "line": 317,
          "role": "implementation",
          "source_id": "patch.period-spawn-squares.puremugameplayprofile"
        },
        {
          "anchor": "(AidaMapNumber, 370, 86, 14, 86, 13), // Jerridon",
          "anchor_sha256": "98bd10050872d67e352add7855aeebaf11a1413802c10026cb84f43e9f7df299",
          "line": 344,
          "role": "implementation",
          "source_id": "patch.period-spawn-squares.puremugameplayprofile"
        },
        {
          "anchor": "has no period source and must not be spawned.",
          "anchor_sha256": "86c7fea555ebde1b6d6199fdc3e3193df4efe0b08f1b03558d2dbf94b3007ce1",
          "line": 3983,
          "role": "regression_test",
          "source_id": "patch.period-spawn-squares.puremugameplayprofiletest"
        },
        {
          "anchor": "The vault keeper must lose exactly the two spawns with no period source.",
          "anchor_sha256": "be8ab21d4c46171c59b2bf2d45b0e960715692355ca00eccfd9da8b4405c2860",
          "line": 3998,
          "role": "regression_test",
          "source_id": "patch.period-spawn-squares.puremugameplayprofiletest"
        },
        {
          "anchor": "MINIMUM_AGREEMENT = 2",
          "anchor_sha256": "70fb36f5d3153d3ab696312f892708933d31e83c3f64b50c7cc685fea5a64132",
          "line": 61,
          "role": "regression_test",
          "source_id": "gate.spawns-against-period"
        },
        {
          "anchor": "Accepting is deliberately more generous than reporting",
          "anchor_sha256": "67085a2ed966bfbccf2a1de1eb087482a0b1cc383dba2b88e4f3b49ba9ef950b",
          "line": 24,
          "role": "review_record",
          "source_id": "gate.spawns-against-period"
        },
        {
          "anchor": "single-lineage Arena mismatch disappeared",
          "anchor_sha256": "ba4a189529c2ec2f4bd67bfb6d1696701a3c9986364c7ba5d785e16578ee4c63",
          "line": 72,
          "role": "regression_test",
          "source_id": "gate.spawns-low-confidence-contract"
        }
      ],
      "reference": {
        "fixed_placements_compared": 397,
        "low_confidence_maximum_agreement": 3,
        "low_confidence_visible_non_blocking": true,
        "minimum_agreement": 4,
        "moved": 13,
        "period_sets": 8,
        "removed": 4,
        "settled_differences": 4
      },
      "status": "implemented_unverified",
      "surface": "npcs",
      "title": "Všechna pevná umístění NPC porovnaná s dobovými spawn tabulkami"
    },
    {
      "assessment": "Dřívější vydání PureMU odstranilo živé výskyty čtyř městských NPC, jejichž nabízenou službu tento server neumí dokončit. Majitel toto rozhodnutí zrušil: prázdné město je od Season 6 Episode 3 dál než NPC, které odpoví, že tu pro hráče zatím nic nemá. Spawny jsou obnovené na přesných souřadnicích a s deterministickými identifikátory, které používají inicializátory map, takže srovnání s čerstvou instalací dá stejné řádky. Nejde o tvrzení, že chybějící služby jsou hotové — ty zůstávají přiznanou mezerou. POZNÁMKA K SOUČASNÉMU STAVU: Leo the Helper (371) byl tímto zásahem vrácen do Lorencie na 130,126, ale pozdější patch ho přesunul do Deviasu na 212,63, kde stojí i v produkci. Blok „Současný stav\" uvádí tu současnou pozici, ne tu, kterou zavedl tento zásah. DALŠÍ POZNÁMKA K SOUČASNÉMU STAVU: Golden Archer (236) byl tímto zásahem vrácen do Lorencie na 175,120, ale pozdější patch ho přesunul do Deviasu na 226,66. Souřadnice 175,120 nepocházela z dobového podkladu, ale z inicializátoru mapy verze 0.95d, jak tento zásah sám říká; šest dobových sad Season 6 staví lučištníka do Deviasu a dvě do Lorencie, a ty dvě jsou tentýž rod, který má i lorencijskou dlaždici 175,120 do bytu. Žádná sada ho nemá v obou městech.",
      "confidence": {
        "basis": "Oprava při startu i regresní test vyjmenovávají všechna čtyři NPC, jejich mapy a souřadnice a ověřují, že po srovnání existuje právě jeden výskyt každého.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "npcs.town-population-restored",
      "observed": {
        "restored_npc_spawns": [
          {
            "map": "Lorencia",
            "name": "Golden Archer",
            "number": 236,
            "x": 175,
            "y": 120
          },
          {
            "map": "Lorencia",
            "name": "Chaos Card Master",
            "number": 375,
            "x": 132,
            "y": 161
          },
          {
            "map": "Devias",
            "name": "Leo the Helper",
            "note": "Vrácen tímto zásahem do Lorencie 130,126; pozdější patch ho přesunul do Deviasu, kde stojí dnes. Uvedena je současná pozice, ověřená v živé databázi.",
            "number": 371,
            "x": 212,
            "y": 63
          },
          {
            "map": "Loren Market",
            "name": "Jeweler Raul",
            "number": 546,
            "x": 131,
            "y": 109
          }
        ],
        "services_still_unavailable": true
      },
      "provenance": [
        {
          "anchor": "must be spawned exactly once on map",
          "anchor_sha256": "312a674cdb47873248b9f8fb52ee90ea75e4445e21a49607c0d95e2c42a214fa",
          "line": 3584,
          "role": "regression_test",
          "source_id": "patch.npc-population-restored"
        }
      ],
      "reference": {
        "not_assessed": [
          "dobová dostupnost jednotlivých služeb těchto NPC v S6E3"
        ]
      },
      "status": "implemented_unverified",
      "supersedes": [
        "npcs.unavailable-services"
      ],
      "surface": "npcs",
      "title": "Obnovení městských NPC odstraněných dřívějším vydáním"
    },
    {
      "assessment": "PureMU záměrně odstraňuje živé výskyty čtyř NPC, jejichž nabízenou funkci na tomto serveru nelze dokončit. Samotné definice zůstávají zachované. Jde o otevřeně přiznanou mezeru v dostupnosti služeb, nikoli o tvrzení, že odstranění odpovídá oficiálnímu S6E3.",
      "confidence": {
        "basis": "Oprava při startu a testy vyjmenovávají všechna čtyři čísla NPC a ověřují, že jejich výskyty chybějí, zatímco definice zůstávají.",
        "level": "high",
        "scope": "known_gap"
      },
      "id": "npcs.unavailable-services",
      "observed": {
        "definitions_preserved": true,
        "despawned_npc_definitions": [
          {
            "name": "Golden Archer",
            "number": 236,
            "reason": "časově omezený registrační event je vypnutý"
          },
          {
            "name": "Leo the Helper",
            "number": 371,
            "reason": "jedinou interakcí je vypnutý zásuvný modul pro reset"
          },
          {
            "name": "Chaos Card Master",
            "number": 375,
            "reason": "výroba Chaos Card není nakonfigurovaná"
          },
          {
            "name": "Jeweler Raul",
            "number": 546,
            "reason": "není nakonfigurován obchod, okno ani obsluha rozhovoru"
          }
        ]
      },
      "provenance": [
        {
          "anchor": "WEBZEN-S6E3-UNAVAILABLE-NPC-SERVICES-UNKNOWN",
          "anchor_sha256": "be837968d5d868bba0d9f215f6017e18361c1e70938a322168e299bdfb4c64d8",
          "line": 471,
          "role": "gap_record",
          "source_id": "gap.webzen-s6e3-unavailable-npc-services"
        }
      ],
      "reference": {
        "expected_official_service": "dosud nedoloženo",
        "required_resolution": "implementovat a ověřit každou službu, nebo podložit její nepřítomnost v S6E3 zdrojem"
      },
      "status": "known_gap",
      "superseded_by": "npcs.town-population-restored",
      "surface": "npcs",
      "title": "Nedostupné služby NPC odstraněné z živých map"
    },
    {
      "assessment": "Pozdější nedatovaný oficiální návod Webzenu uvádí stejné hodnoty jako PureMU: 3 miliony Zen za Dark Stone, deset zabití každého ze tří hrdinských monster v Barracks a 20 bodů za Into the Darkness. Shoda hodnot je přímo propojená s implementací a regresními testy, ale zdroj nedokládá, že stejné hodnoty platily právě v S6E3.",
      "confidence": {
        "basis": "Oficiální návod, přesná oprava, tři kontroly počtů zabití, kontrola bodové odměny a kontrolní hash, který při odchylce selže, společně dokazují věcnou shodu hodnot; časový původ hodnot zůstává nedoložený.",
        "level": "medium",
        "scope": "fidelity_match"
      },
      "id": "quests.legacy-official-values",
      "observed": {
        "infiltration_of_barracks": {
          "required_kills": {
            "409_balram_hero": 10,
            "410_death_spirit_hero": 10,
            "411_soram_hero": 10
          }
        },
        "into_the_darkness": {
          "level_up_points": 20
        },
        "secret_of_the_dark_stone": {
          "start_zen": 3000000
        }
      },
      "provenance": [
        {
          "anchor": "WEBZEN-S6E3-QUEST-LEGACY-VALUES",
          "anchor_sha256": "8076e61af503737be1ccf5f74e251e79b7f769707a87c5f5d07025e351434d7e",
          "line": 25,
          "role": "primary_reference",
          "source_id": "webzen.quest.legacy-values.guide"
        },
        {
          "anchor": "ERROR: Season 6 quest values differ from the reviewed Webzen-aligned correction",
          "anchor_sha256": "310855afafd29f7e02ea13c392f0cfdff216cb02fd5342aca1b1e9d2a8b9a8ba",
          "line": 1443,
          "role": "review_record",
          "source_id": "gate.patched-stack"
        }
      ],
      "reference": {
        "official_reference_temporality": "pozdější nebo nedatovaný oficiální návod",
        "verification_scope": "věcná shoda ceny, počtů zabití a bodové odměny; nikoli datum zavedení"
      },
      "status": "implemented_unverified",
      "superseded_by": "quests.period-figures-over-later-guide",
      "surface": "quests",
      "title": "Hodnoty questů shodné s pozdějším návodem"
    },
    {
      "assessment": "Tvrzení quests.legacy-official-values se 2026-08-22 obrátilo, a stojí za to říct proč, protože to nebyla nedbalost. Opíralo se o oficiální návod Webzenu, který uvádí 3 miliony Zen za Dark Stone, deset zabití každého ze tří hrdinských monster v Barracks a 20 bodů za Into the Darkness; PureMU podle něj ty hodnoty nastavil patchem 0015. Ledger si už tehdy u toho zdroje poznamenal, že je pozdější a nedatovaný a nedokládá, kdy Webzen ty hodnoty zavedl.\n\nDva dobové zdroje, které se navzájem shodují, říkají něco jiného. Klientův vlastní Quest.bmd — v obou jazykových verzích — žádá dvacet zabití od každého ze tří a bere 2 000 000 za Dark Stone. Dobová serverová tabulka QuestObjective/QuestReward dává tytéž dvacítky, 2 000 000, třicet bodů za Darkness a dvacet za Barracks. U Dark Stone se přidává třetí dobový zdroj, a to včetně shodných čísel textů 115/117/119.\n\nKlient je dobový artefakt, návod je pozdější, a cíl projektu je shoda s původním S6E3 — proto realm nově drží dobové hodnoty. Patch 0196 je vrací v inicializátoru i v nosiči pro běžící realm, a přidává čtvrtou hodnotu, body za Barracks, kterou nedržel nikdo: ta byla vedle už v nedotčeném OpenMU.\n\nZapsáno i to, co tenhle nález nedokazuje: že návod Webzenu je chybný. Může popisovat pozdější stav hry. Tvrdí se jen, že pro S6E3 rozhoduje dobový zdroj.\n\nStav je proto **implementované, oficiálně neověřené**, a ne shoda: brána trvá na tom, že „ověřeno\" smí říct jen tvrzení s **dobovým oficiálním** zdrojem, a ten tady není. Klient i dobová serverová tabulka jsou dobové artefakty, ne publikace Webzenu z té doby. To rozlišení je namístě a nechává se stát: hodnoty jsou doložené dvěma nezávislými dobovými zdroji, ale dobovým oficiálním zdrojem doložené nejsou.",
      "confidence": {
        "basis": "Dva dobové zdroje se shodují na všech čtyřech hodnotách a u jedné se přidává třetí; rozpor s pozdějším oficiálním návodem je zaznamenaný, ne zamlčený. Připnuto otiskem inicializátoru, čtyřmi regresními tvrzeními a testem nosiče, který staví chybný stav a ověřuje návrat.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "quests.period-figures-over-later-guide",
      "observed": {
        "infiltration_of_barracks": {
          "point_reward": 20,
          "required_kills": {
            "409_balram_hero": 20,
            "410_death_spirit_hero": 20,
            "411_soram_hero": 20
          }
        },
        "into_the_darkness": {
          "point_reward": 30
        },
        "later_official_guide_says": {
          "barracks_kills": 10,
          "dark_stone_money": 3000000,
          "darkness_points": 20
        },
        "secret_of_the_dark_stone": {
          "required_start_money": 2000000
        }
      },
      "provenance": [
        {
          "anchor": "WEBZEN-S6E3-QUEST-LEGACY-VALUES",
          "anchor_sha256": "8076e61af503737be1ccf5f74e251e79b7f769707a87c5f5d07025e351434d7e",
          "line": 25,
          "role": "primary_reference",
          "source_id": "webzen.quest.legacy-values.guide"
        },
        {
          "anchor": "secretDarkStone.RequiredStartMoney = 2000000;",
          "anchor_sha256": "a79983c1caf23090e62b909366a473e2038379790882d054e64c50e2b5a7b528",
          "line": 229,
          "role": "implementation",
          "source_id": "patch.quest-period-figures.quests"
        },
        {
          "anchor": "Assert.That(requiredBarracksKills[409], Is.EqualTo(20), \"Balram (Hero)\");",
          "anchor_sha256": "35fbbb097e6f2d0edf98256b8b97caafdf77aa2c0d4d2e4f2e82e555b07087f3",
          "line": 158,
          "role": "regression_test",
          "source_id": "patch.quest-period-figures.seasonsixprogressionconfigurationtest"
        },
        {
          "anchor": "Assert.That(requiredBarracksKills[410], Is.EqualTo(20), \"Death Spirit (Hero)\");",
          "anchor_sha256": "0765a5698eb7019ccacc471dcb4ced58c245213840cfd2e44ef42762c98dc155",
          "line": 159,
          "role": "regression_test",
          "source_id": "patch.quest-period-figures.seasonsixprogressionconfigurationtest"
        },
        {
          "anchor": "Assert.That(requiredBarracksKills[411], Is.EqualTo(20), \"Soram (Hero)\");",
          "anchor_sha256": "187b18ce98045853eda24f8a2d0197fb6ebfaaadeafa087982df7166f7549cb7",
          "line": 160,
          "role": "regression_test",
          "source_id": "patch.quest-period-figures.seasonsixprogressionconfigurationtest"
        },
        {
          "anchor": "Assert.That(GetPointReward(darkness), Is.EqualTo(30));",
          "anchor_sha256": "f69253eb07d102a765ee91196b026b606d6a93e2a5bd2ed2e09c8cb4c7bce929",
          "line": 161,
          "role": "regression_test",
          "source_id": "patch.quest-period-figures.seasonsixprogressionconfigurationtest"
        },
        {
          "anchor": "\"0196-put-the-quest-figures-back-where-the-client-has-them.patch:AlignTheSeasonSixQuestValues\"",
          "anchor_sha256": "6a01ef866b5384272eae63ae23e1a895019e3fa7ec6163ae620b8061380445a2",
          "line": 2599,
          "role": "review_record",
          "source_id": "gate.patched-stack"
        }
      ],
      "reference": {
        "expected_official_service": "hodnoty původních questů Season 6 Episode 3",
        "official_reference_temporality": "dobový klient a dobová serverová tabulka proti pozdějšímu oficiálnímu návodu"
      },
      "status": "implemented_unverified",
      "supersedes": [
        "quests.legacy-official-values"
      ],
      "surface": "quests",
      "title": "Hodnoty původních questů drží dobové zdroje, ne pozdější návod"
    },
    {
      "assessment": "Postupové úkoly Elf Soldiera opakovatelné byly, a rozhoduje to skript s dobovou hlavičkou, ne rekonstrukce. Quest_Ep18.lua nese hlavičku z 15. 9. 2009 a korejského autora a volá engine API (LuaQuestClass:SetQuestSwitch), což emulátor píšící questy sám v C++ nemá důvod vozit; nalezen je ale v jednom balíku nastavení emulátoru a nezávislou kopii v žádném dalším z osmi stromů nemá, takže původ je velmi pravděpodobný, nikoli doložený po dokončení úkolu vrátí questovací přepínač zpět na nabídkový stav téhož úkolu, dokud je postava pod minimem dalšího pásma, a teprve při jeho dosažení řetěz posune: po dokončení pásma 15 až 25 se při úrovni pod 26 nastaví přepínač zpět na 3, při 26 a výš na 9. Stejný vzor se opakuje pro 36, 46, 56 i 66. Mechanismus tedy není žádný sloupec repeat, a proto ho ElfSoldierFirstQuest.ini nemá a proto se z jeho nepřítomnosti nedalo usuzovat nic. Chování PureMU je správné: Repeatable = true spolu s pásmy úrovní dělá totéž, protože po přerostení pásma se úkol stejně nenabídne. Regresní test, který by chování připnul k tomuto zdroji, zatím neexistuje; dokud nebude, zůstává tvrzení implementované a neověřené, přestože primární zdroj je jednoznačný.",
      "confidence": {
        "basis": "Obsah skriptu přečten přímo a je jednoznačný; jeho původ je podepřený formou (dobová hlavička, korejský autor, volání engine API), ale nezávislou kopií nepotvrzený.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "quests.progression-repeatability-sourced",
      "observed": {
        "advances_chain_at_level": 26,
        "mechanism": "navrat questovaciho prepinace na nabidku tehoz ukolu",
        "repeatable_within_band": true
      },
      "provenance": [
        {
          "anchor": "md5      faa4351c8789bf94d8b06b097c83ebb2",
          "anchor_sha256": "5f7847159a9823b67de70692047bcde6e3693f4bf8c1a2b611f4b01ffc3b9749",
          "line": 8,
          "role": "primary_reference",
          "source_id": "webzen.quest-ep18-archived"
        },
        {
          "anchor": "questDefinition.Repeatable = true;",
          "anchor_sha256": "bb9276aa991edb3e8db438c3dabd248b0a6f417e70fb3cfaf452bfcbf5a565d1",
          "line": 83,
          "role": "implementation",
          "source_id": "openmu.quests-season-six"
        }
      ],
      "reference": {
        "expected_official_service": "postupové úkoly Elf Soldiera po pásmech úrovní",
        "official_reference_temporality": "dobový oficiální skript, hlavička 2009"
      },
      "status": "implemented_unverified",
      "supersedes": [
        "quests.progression-repeatability-unsourced"
      ],
      "surface": "quests",
      "title": "Opakovatelnost postupových úkolů doložena dobovým skriptem"
    },
    {
      "assessment": "Postupové úkoly Elf Soldiera jsou opakovatelné: připnutý inicializátor nastavuje Repeatable na true každému úkolu skupiny 18 a start úkolu odmítne jen neopakovatelný. Dokončení vyplácí zkušenosti znovu, takže „Dispose of the Town Plunderers\" dává opakovaně 6000 zkušeností za patnáct zabití v pásmu 15 až 25 — tedy přesně tam, kde postavy realmu jsou. Dobové zdroje to nerozhodnou: ElfSoldierFirstQuest.ini, který tuhle řadu popisuje (Type 18, pásma 15-25 a 26-35), sloupec pro opakování ve své legendě vůbec nemá; má ho jen ElfSoldierSecondQuest.ini pro pásma 80 a výš, kde je všude 0, a tamní server tu vlajku naparsuje a nikde nečte. Druhý zdroj ji používá, ale v systému s MinReset a MaxReset, což je koncept reset serverů, ne dobového S6E3. Chování proto ponecháváme, jak je: měnit ho bez zdroje by byl odhad, a je to otázka vyvážení pro majitele, ne otázka věrnosti.",
      "confidence": {
        "basis": "Opakovatelnost i výplata zkušeností jsou přímo v připnutém zdroji; obě dobové konfigurace byly přečteny včetně vlastních legend sloupců.",
        "level": "high",
        "scope": "known_gap"
      },
      "id": "quests.progression-repeatability-unsourced",
      "observed": {
        "experience_per_completion": 6000,
        "kills_required": 15,
        "level_band": "15-25",
        "period_flag_present_for_this_series": false,
        "repeatable": true
      },
      "provenance": [
        {
          "anchor": "questDefinition.Repeatable = true;",
          "anchor_sha256": "bb9276aa991edb3e8db438c3dabd248b0a6f417e70fb3cfaf452bfcbf5a565d1",
          "line": 83,
          "role": "implementation",
          "source_id": "openmu.quests-season-six"
        }
      ],
      "reference": {
        "expected_official_service": "postupové úkoly Elf Soldiera po pásmech úrovní",
        "official_reference_temporality": "pozdější nebo nedatovaný oficiální návod"
      },
      "status": "known_gap",
      "superseded_by": "quests.progression-repeatability-sourced",
      "surface": "quests",
      "title": "Opakovatelnost postupových úkolů není doložená"
    },
    {
      "assessment": "Dobové oznámení Webzenu z 21. prosince 2011 výslovně uvádí master skill tree pro Rage Fightera. Připnutý aktivní inicializátor OpenMU vytváří 36 prověřených master skillů přiřazených třídě FistMaster, navazuje na ně MasterSkillDefinition a lokální regresní test tuto množinu i aktivní volání inicializace uzamyká. Ověření se týká pouze přítomnosti této funkce; neprohlašuje shodu názvů uzlů, pořadí, vzorců, hodnot, balancu ani úplnost celého stromu vůči Webzenu.",
      "confidence": {
        "basis": "Dobový oficiální záznam přímo potvrzuje vydání RF master tree a připnutý zdroj spolu s deterministickým testem přímo potvrzují neprázdnou aktivní sadu definic přiřazených FistMasterovi.",
        "level": "high",
        "scope": "fidelity_match"
      },
      "id": "season6-episode3.scope",
      "observed": {
        "active_master_definition_count": 36,
        "assigned_character_class": "FistMaster",
        "initializer": "VersionSeasonSix/SkillsInitializer.cs",
        "regression_scope": "active definition identifiers, FistMaster assignment and initializer invocation"
      },
      "provenance": [
        {
          "anchor": "WEBZEN-SEASON6-EPISODE3-CONTEMPORARY-UPDATE",
          "anchor_sha256": "fe361f51e873fa45c0891223ad09861ca39fe400937f58fb7a18edc790c0282a",
          "line": 227,
          "role": "primary_reference",
          "source_id": "webzen.season6-episode3.update"
        },
        {
          "anchor": "this.CreateSkill(SkillNumber.KillingBlowStrengthener, \"Killing Blow Strengthener\", CharacterClasses.FistMaster",
          "anchor_sha256": "ff0ce3cb1538305e5a67bb6f2103f76961b331baacbfdba7372e8d54542dff40",
          "line": 405,
          "role": "implementation",
          "source_id": "openmu.skills-season6"
        },
        {
          "anchor": "this.AddMasterSkillDefinition(SkillNumber.KillingBlowStrengthener, SkillNumber.Undefined, SkillNumber.Undefined, 2, 2, SkillNumber.KillingBlow, 20, Formula502);",
          "anchor_sha256": "58e9b19261a97f2c51e7f3f54944bcdac21f43e569926c13d0b9e1ea0234fd40",
          "line": 920,
          "role": "implementation",
          "source_id": "openmu.skills-season6"
        },
        {
          "anchor": "EXPECTED_RF_MASTER_SKILLS: tuple[str, ...] = (",
          "anchor_sha256": "4dbfbe5790b7c5b237c00d3e50212a23bb0c3b3badb946e26d3f69c35b8dff37",
          "line": 18,
          "role": "regression_test",
          "source_id": "gate.rage-fighter-master-skills"
        }
      ],
      "reference": {
        "feature": "Rage Fighter master skill tree",
        "official_reference_date": "2011-12-21",
        "official_reference_temporality": "dobové oznámení Episode 3",
        "verification_scope": "přítomnost funkce; nikoli přesná obsahová nebo balanční parita stromu"
      },
      "status": "verified_match",
      "surface": "classes",
      "title": "Přítomnost master skill tree Rage Fightera"
    },
    {
      "assessment": "Ověřeno spustitelným nástrojem proti čerstvému výpisu z produkce. Energie se záměrně neporovnává, protože není v datech uložená. Katalog vyžaduje pro stav verified_match veřejně citovatelný dobový podklad; tady je rozhodčím klient majitele, který je pro tento realm závazný, ale citovat se nedá. Proto implemented_unverified, ne verified_match.",
      "confidence": {
        "basis": "Dva nezávislé zdroje se shodují mezi sebou i se serverem a zbylé rozdíly mají doloženou příčinu.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "skills.client-requirement-agreement",
      "observed": "Level, spotřeba many a spotřeba ability sedí u všech dovedností, které klient nese, mimo tři výjimky se zjištěnou příčinou: sedm summonů, kde dobový soubor potvrzuje server, Doppelganger Self Explosion tamtéž, a Nova, jejíž mana je účtovaná za jeden z dvanácti stupňů nabíjení. Sedí i požadované vůdcovství, síla a obratnost a to, které třídy smí dovednost použít; devět svitkových dovedností navíc pro Rage Fightera je jmenovitě vyřízených, protože je klient jeho třídě nepustí.",
      "provenance": [
        {
          "anchor": "OK: every skill the client also carries asks for the same thing",
          "anchor_sha256": "d3be3b74bb96ad059676c8c9391cf70d10583a410e71b992c0f3c803e88639bd",
          "line": 307,
          "role": "regression_test",
          "source_id": "gate.skills-against-client"
        },
        {
          "anchor": "it is charged in twelve stages, so fifteen a stage is",
          "anchor_sha256": "44086679733651ae906e9f1da97a0c37736b54541ae8b1d003407425915859d8",
          "line": 59,
          "role": "primary_reference",
          "source_id": "client.skill-table"
        },
        {
          "anchor": "(1, 140), (2, 104), (3, 72), (4, 40)",
          "anchor_sha256": "a0a7b62e67d53d3b76728f542293e93593b7f5367eca72c98e576bb398fdf9c1",
          "line": 1097,
          "role": "implementation",
          "source_id": "patch.client-arbitrated-figures"
        }
      ],
      "reference": "Klientská Data/Local/Eng/skill_eng.bmd a dobová Skills.txt.",
      "status": "implemented_unverified",
      "superseded_by": "skills.client-requirements-rechecked",
      "surface": "systems",
      "title": "Požadavky dovedností se shodují s klientem majitele"
    },
    {
      "assessment": "Toto tvrzení nahrazuje starší záznam, jehož kontrola energii ve skutečnosti vynechávala a sedm summon výjimek držela jen v mrtvé tabulce. Nový kontrakt porovnává dovednosti 30–36 samostatně proti přesné řadě 30/60/90/130/170/210/300, odmítne staré hodnoty 90/170/190/230/250/260/280 a fail-closed odmítne i chybějící klientský řádek, serverový skill, Total Energy requirement nebo jeho duplikát. Ostatní požadavky dovedností zůstávají v dosavadním obecném porovnání. Řada summonů je kompatibilitní rozhodnutí podle uživatelsky viditelné eligibility větve připnutého klienta 1.04C; není vydávána za důkaz oficiálního Webzen serverového požadavku ani packet-send gate, proto stav zůstává implemented_unverified.",
      "confidence": {
        "basis": "Spustitelný klientský verifier, explicitní fail-closed Python kontrakt a fresh/existing-DB i runtime hraniční testy serverového patchu nezávisle drží všech sedm hodnot a úplnost řádků.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "skills.client-requirements-rechecked",
      "observed": {
        "duplicate_total_energy_rows_rejected": true,
        "elf_summon_total_energy": [
          30,
          60,
          90,
          130,
          170,
          210,
          300
        ],
        "missing_rows_rejected": true,
        "runtime_boundary_equality_allowed": true
      },
      "provenance": [
        {
          "anchor": "ELF_ROWS = (",
          "anchor_sha256": "783a40b6113f52dd33bddeebe4b71b6114da23622ea0df6837c913f168195a4a",
          "line": 176,
          "role": "review_record",
          "source_id": "gate.elf-summon-reference"
        },
        {
          "anchor": "ELF_SUMMON_ENERGY_REQUIREMENTS = {",
          "anchor_sha256": "c90bb6cbb7a0e0fa0d7d3b9cff95f1efb1be93a12a9193fc9b5e1cbf5b639238",
          "line": 145,
          "role": "regression_test",
          "source_id": "gate.skills-against-client"
        },
        {
          "anchor": "OK: elf summon comparison contract passed (legacy and missing rows fail; exact boundaries pass)",
          "anchor_sha256": "0a24eba781b449f15817ba1ea65873617d6d9d876440e9e4d2c8b4e24af0193b",
          "line": 125,
          "role": "regression_test",
          "source_id": "gate.skill-comparison-contract"
        },
        {
          "anchor": "ElfSummonEnergyBoundaryRejectsOneBelowAndAcceptsEqualityAsync",
          "anchor_sha256": "cc2a7263a5f031a9ced6db2d5062fe3873f9304ab9ea4a92a97638ffb8c47838",
          "line": 2972,
          "role": "regression_test",
          "source_id": "patch.elf-summon-energy-gate.puremugameplayprofiletest"
        }
      ],
      "reference": "Připnutý klient 1.04C má pro skilly 30–36 samostatnou UI eligibility větev; raw skill_eng.bmd Req Energy sloupec je jiná vrstva.",
      "status": "implemented_unverified",
      "supersedes": [
        "skills.client-requirement-agreement"
      ],
      "surface": "systems",
      "title": "Požadavky dovedností se kontrolují včetně sedmi elfích summonů"
    },
    {
      "assessment": "Zapsáno jako claim právě proto, že klient i dobový soubor nesou tentýž sloupec a shodují se — a přesto ani jeden z nich neodpovídá na otázku, kolik energie je potřeba. Shoda dvou zdrojů je začátek ověření, ne jeho konec. Katalog vyžaduje pro stav verified_match veřejně citovatelný dobový podklad; tady je rozhodčím klient majitele, který je pro tento realm závazný, ale citovat se nedá. Proto implemented_unverified, ne verified_match.",
      "confidence": {
        "basis": "Vzorec je přečtený přímo z dobového zdroje a jeho výstup se u kontrolovaných dovedností shoduje s pinnutým inicializátorem na jednotku.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "skills.energy-is-computed",
      "observed": "Fire Ball má ve sloupci sto a úroveň pět, což dává čtyřicet; Poison sto na úrovni třicet dává sto čtyřicet; Nova dvě stě padesát osm na úrovni sto dává tisíc padesát dva. Všechny tři hodnoty OpenMU už mělo.",
      "provenance": [
        {
          "anchor": "require = (column * skill level * 4) / 100 + 20",
          "anchor_sha256": "56b8fc3817fe63e35b918ca62247e5a878368dedaa17fe6a2297c928ca92dcbf",
          "line": 1072,
          "role": "implementation",
          "source_id": "patch.client-arbitrated-figures"
        },
        {
          "anchor": "(1, 140), (2, 104), (3, 72), (4, 40)",
          "anchor_sha256": "a0a7b62e67d53d3b76728f542293e93593b7f5367eca72c98e576bb398fdf9c1",
          "line": 801,
          "role": "regression_test",
          "source_id": "gate.patched-stack"
        },
        {
          "anchor": "it is charged in twelve stages, so fifteen a stage is",
          "anchor_sha256": "44086679733651ae906e9f1da97a0c37736b54541ae8b1d003407425915859d8",
          "line": 59,
          "role": "primary_reference",
          "source_id": "client.skill-table"
        }
      ],
      "reference": "Dobový server násobí sloupec Req Energy úrovní dovednosti a čtyřmi, dělí stem a přičítá dvacet.",
      "status": "implemented_unverified",
      "superseded_by": "skills.energy-requirements-are-layered",
      "surface": "systems",
      "title": "Požadovaná energie dovednosti se počítá, v datech uložená není"
    },
    {
      "assessment": "Obecný dobový vzorec Req Energy × level × 4 / 100 + 20 zůstává správný pro běžné kontrolované skilly, například Fire Ball 40, Poison 140 a Nova 1052. Není ale univerzálním popisem každého cast gate: připnutý klient 1.04C má pro sedm elfích summonů nezávislou executable UI eligibility řadu 30/60/90/130/170/210/300, která se liší od raw BMD sloupce 90/170/190/230/250/260/280. Server tuto výjimku drží ve fresh inicializaci i startup reconciliaci existující DB a runtime testuje odmítnutí boundary-1 i přijetí rovnosti. Jde o vrstevnatou kompatibilitní politiku PureMU, ne o tvrzení, že byl doložen oficiální Webzen serverový vzorec summonů.",
      "confidence": {
        "basis": "Obecný vzorec zůstává připnutý původním patchem a kontrolní Fire Ball se starým raw sloupcem dál prochází; samostatný verifier a patch drží přesnou summon výjimku.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "skills.energy-requirements-are-layered",
      "observed": {
        "computed_formula_retained_for_ordinary_skills": true,
        "elf_summon_executable_gate": [
          30,
          60,
          90,
          130,
          170,
          210,
          300
        ],
        "raw_bmd_is_not_universal_cast_gate": true
      },
      "provenance": [
        {
          "anchor": "require = (column * skill level * 4) / 100 + 20",
          "anchor_sha256": "56b8fc3817fe63e35b918ca62247e5a878368dedaa17fe6a2297c928ca92dcbf",
          "line": 1072,
          "role": "implementation",
          "source_id": "patch.client-arbitrated-figures"
        },
        {
          "anchor": "ElfRow(36, \"Summon Soldier\", 0, 350, 280, 300)",
          "anchor_sha256": "b5b2c0df28cf1e217bc70ad5965a9fbb8a45cbbf2c82d38d3278399c26bb0963",
          "line": 183,
          "role": "review_record",
          "source_id": "gate.elf-summon-reference"
        },
        {
          "anchor": "these seven values deliberately follow the executable UI gate",
          "anchor_sha256": "c302bf8814e769bbe54d5499705c14bbd410da9b96e882bda1d42f0deffbdb99",
          "line": 1086,
          "role": "implementation",
          "source_id": "patch.elf-summon-energy-gate.puremugameplayprofile"
        },
        {
          "anchor": "and must not arbitrate the server-side casting boundary.",
          "anchor_sha256": "2406635bab61360092962cd2f2e61d0c2a45ca78ecb8890099fb116bb45b12c4",
          "line": 64,
          "role": "regression_test",
          "source_id": "gate.skill-comparison-contract"
        }
      ],
      "reference": "Obecný dobový serverový vzorec a oddělená user-visible eligibility větev připnutého klienta 1.04C jsou dvě různé vrstvy.",
      "status": "implemented_unverified",
      "supersedes": [
        "skills.energy-is-computed"
      ],
      "surface": "systems",
      "title": "Požadavky energie mají obecný vzorec i doložené klientské výjimky"
    },
    {
      "assessment": "Ověřeno spustitelným nástrojem proti čerstvému výpisu z produkce. Možnosti se nepárují podle hodnot — několik jich má shodný žebříček — ale podle bloků číslování, jejichž velikosti musí odpovídat počtům možností na živel. Katalog vyžaduje pro stav verified_match veřejně citovatelný dobový podklad; tady je rozhodčím klient majitele, který je pro tento realm závazný, ale citovat se nedá. Proto implemented_unverified, ne verified_match.",
      "confidence": {
        "basis": "Identita možností je odvozená ze struktury číslování, ne z hodnot, které se u několika možností opakují.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "socket-options.client-value-agreement",
      "observed": "Dvacet sedm soketových možností se shoduje na všech pěti stupních, šest bonusů za tři osazené sokety a dva bonusy za nošenou sadu se shodují v hodnotě i v počtu sfér každého živlu, který bonus žádá.",
      "provenance": [
        {
          "anchor": "OK: every socket option is worth at each level what the client says it is worth",
          "anchor_sha256": "88394099a541a94f40b9c2a86c6f4f0c837bc00b26b00d3df833e4ac98293a88",
          "line": 269,
          "role": "regression_test",
          "source_id": "gate.socket-options-against-client"
        }
      ],
      "reference": "Klientská Data/Local/Eng/SocketItem_eng.bmd.",
      "status": "implemented_unverified",
      "surface": "items",
      "title": "Soketové možnosti se shodují s klientem majitele"
    },
    {
      "assessment": "Strom byl porovnán celý, ne odhadnut. Rámec souhlasí: 200 master úrovní po jednom bodu a vzorec master zkušeností je algebraicky totožný s dobovým — ověřeno numericky na všech 201 hodnotách s rozdílem nula. Inventář uzlů i přiřazení tříd se shodují s klientskou tabulkou MasterSkillTreeData.bmd přesně, pro všech sedm master tříd nic nechybí a nic nepřebývá. Neshod bylo 21 a jsou opravené. Dvě z nich rozhodovaly o postupu: skilly 308 a 311 měly rank o stupeň níž a AddMasterPointAction hledá naučený skill předchozího ranku téhož kořene, takže postava, která si svůj uzel daného ranku vezme právě na nich, se nedostane dál a klik tiše propadne; vlastní soubor MasterSkillTree.xml v OpenMU přitom uvádí rank 3 a 4. Equipped Weapon Mastery má strop 10, ne 20, čímž se zavírá dosud nedoložená mezera deníku. Command Attack Increase vyžaduje uzel ranku 2 pod sebou. Zbylých sedmnáct jsou růstové vzorce posilovačů: klient nese číslo vzorce v poli těsně před spotřebou many, což posloužilo jako kontrola zarovnání, a porovnání všech 163 srovnatelných uzlů dalo přesně těch sedmnáct plus dva záznamy, které klientský soubor drží poškozené a které jsme nechali být.",
      "confidence": {
        "basis": "Tři nezávislé strany: klientské tabulky MasterSkillTreeData.bmd a skill_eng.bmd, vlastní MasterSkillTree.xml v OpenMU, a dobové stromy. Zarovnání polí klientské tabulky ověřeno spotřebou many, která u každého řádku sedí s inicializátorem.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "systems.master-skill-tree-checked",
      "observed": {
        "class_assignment_matches_client": true,
        "corrected_formula_count": 17,
        "corrected_rank_count": 2,
        "experience_formula_identical": true,
        "master_levels": 200,
        "nodes_compared": 163,
        "skill_571_maximum_level": 10
      },
      "provenance": [
        {
          "anchor": "private static void AlignTheMasterSkillTreeWithTheClient(GameConfiguration configuration)",
          "anchor_sha256": "ff48986ca7e8bb72b76bd3f94025016f51a9a8afa7f884194d8433f5ded214bf",
          "line": 4186,
          "role": "implementation",
          "source_id": "patch.master-skill-tree.puremugameplayprofile"
        },
        {
          "anchor": "MasterSkillTreeMatchesTheClientAfterEveryStartupAsync",
          "anchor_sha256": "7d88b49be288f46bf7373d007dd3b56ae75870200c2bc5bc7d544263863ee8ab",
          "line": 281,
          "role": "regression_test",
          "source_id": "patch.master-skill-tree.puremugameplayprofiletest"
        }
      ],
      "reference": {
        "expected_official_service": "master skill tree Season 6 Episode 3",
        "official_reference_temporality": "pozdější nebo nedatovaný oficiální návod"
      },
      "status": "implemented_unverified",
      "supersedes": [
        "systems.master-skill-tree-fidelity"
      ],
      "surface": "systems",
      "title": "Master skill tree porovnán s klientem uzel po uzlu"
    },
    {
      "assessment": "Repozitář nyní hlídá, že připnutý inicializátor obsahuje aktivní definice RF master skillů přiřazené FistMasterovi. Přesná dobová shoda jednotlivých uzlů, vazeb, kořenů, pořadí, maximálních úrovní, vzorců a balančních hodnot však nebyla porovnána s podrobným oficiálním podkladem, a proto zůstává výslovně neposouzená.",
      "confidence": {
        "basis": "Zdroj a lokální test přesvědčivě popisují pouze současnou implementaci; chybí podrobná dobová referenční specifikace pro obsahovou paritu celého systému.",
        "level": "low",
        "scope": "current_state"
      },
      "id": "systems.master-skill-tree-fidelity",
      "observed": {
        "locally_guarded": [
          "active RF definition identifiers",
          "FistMaster assignment",
          "master initialization invocation"
        ]
      },
      "provenance": [
        {
          "anchor": "skill.MasterDefinition = this.Context.CreateNew<MasterSkillDefinition>();",
          "anchor_sha256": "3a490e772fda0c2b3fe0d58139c425d582f6b0b1187cd3bd18463c4db32776c5",
          "line": 963,
          "role": "implementation",
          "source_id": "openmu.skills-season6"
        },
        {
          "anchor": "It intentionally says nothing about parity of names, formulas or balance with Webzen.",
          "anchor_sha256": "6258f9532fc8cb0cdf235cb0b96f67042ffaebcd887873cda0012ed936d28163",
          "line": 17,
          "role": "regression_test",
          "source_id": "gate.rage-fighter-master-skills"
        }
      ],
      "reference": {
        "not_assessed": [
          "exact node inventory",
          "prerequisite graph",
          "root and rank placement",
          "formulas and maximum levels",
          "balance values"
        ]
      },
      "status": "not_assessed",
      "superseded_by": "systems.master-skill-tree-checked",
      "surface": "systems",
      "title": "Obsahová parita systému master skill tree"
    },
    {
      "assessment": "Cena přesunu a úroveň, kterou žádá, nikdy porovnané nebyly — projekt je řešil po kusech. Pět dobových sad nese `Data/Move/Move.txt`.\n\nVýsledek: **70 cen a úrovní u 53 přesunů, nula neshod.** Nic se neopravovalo, protože nebylo co.\n\nJména se záměrně neporovnávají: na obou stranách jde o vnitřní označení a klient si vykresluje vlastní seznam, takže „Elveland\" proti „Elbeland\" a „PeaceSwamp\" proti „Swamp_of_Calmness\" jsou dva zápisy téhož místa, ne chybující realm.\n\nJeden přesun dobové sady mají a realm ne — číslo 26 do Crywolfu. Není to nález, ale dřívější vědomé rozhodnutí: klientský seznam pro něj nemá řádek a přesun, který klient neumí nabídnout, si nikdo nevezme. Realm tu následuje klienta stejně jako u rozměrů předmětů. Nově je u toho zapsáno i to, že dobové stromy ho **mají** — rozhodnutí je tím vidět místo aby se tvářilo jako shoda.",
      "confidence": {
        "basis": "Porovnáno proti běžící produkci proti pěti dobovým tabulkám; hlásí se jen jednomyslná shoda aspoň čtyř. Nula neshod je měřená. Chybějící přesun do Crywolfu je vedený v SETTLED s odůvodněním, takže kontrola kvůli němu nesvítí červeně a zároveň se na něj nezapomene.",
        "level": "high",
        "scope": "fidelity_match"
      },
      "id": "systems.warps-against-period",
      "observed": {
        "crywolf_warp_absent_by_decision": true,
        "names_deliberately_not_compared": true
      },
      "provenance": [
        {
          "anchor": "Warps the period offers and this realm does not, on purpose.",
          "anchor_sha256": "eb3ad7d49c4c954c01381af39bc7b97cf381b346d36b3656e265862bfca52f0e",
          "line": 29,
          "role": "review_record",
          "source_id": "gate.warps-against-period"
        },
        {
          "anchor": "The name is not: it is an internal label on both sides and the client",
          "anchor_sha256": "bc4b6e5964b7ed1dda2aa6817062890739895baedde9cc3f6711116d0c6177b8",
          "line": 9,
          "role": "review_record",
          "source_id": "gate.warps-against-period"
        }
      ],
      "reference": {
        "disagreements": 0,
        "figures_compared": 70,
        "period_tables": 5,
        "warps": 53
      },
      "status": "implemented_unverified",
      "surface": "systems",
      "title": "Cena přesunu a úroveň proti dobovým tabulkám"
    },
    {
      "assessment": "Ověřeno spustitelným nástrojem proti čerstvému výpisu z produkce. Okno přesunu neplní server: klient posílá index svého vlastního řádku, takže číslo, na kterém se strany rozejdou, je cíl, kam se nikdo nedostane. Katalog vyžaduje pro stav verified_match veřejně citovatelný dobový podklad; tady je rozhodčím klient majitele, který je pro tento realm závazný, ale citovat se nedá. Proto implemented_unverified, ne verified_match.",
      "confidence": {
        "basis": "Klient rozhoduje, jaké číslo poletí po drátě; cíl potvrzují čtyři dobové tabulky bran.",
        "level": "high",
        "scope": "current_state"
      },
      "id": "warps.client-list-agreement",
      "observed": "Všech třicet sedm přesunů, které klient nabízí, v realmu existuje pod číslem, které klient posílá, a shoduje se v ceně, požadované úrovni i stropu. Všech třicet sedm cílů vede na mapu, na kterou podle dobových tabulek ústí brána, kterou klient u přesunu jmenuje.",
      "provenance": [
        {
          "anchor": "OK: every warp the client offers exists here and asks the same level and price",
          "anchor_sha256": "eb0ff742712fc26b89edd08d9cc280cf51e5d3fe837ed3d9686019fdfd78bba6",
          "line": 221,
          "role": "regression_test",
          "source_id": "gate.warps-against-client"
        }
      ],
      "reference": "Klientská Data/Local/Eng/MoveReq_eng.bmd a dobové Gate.txt.",
      "status": "implemented_unverified",
      "surface": "systems",
      "title": "Seznam přesunů se shoduje s klientem majitele"
    }
  ],
  "confidence_definitions": {
    "high": "Přímé a neměnné důkazy v repozitáři přesvědčivě potvrzují uvedený rozsah jistoty.",
    "low": "Důkazy jsou neúplné nebo nepřímé i pro uvedený rozsah jistoty.",
    "medium": "Prověřené důkazy v repozitáři tvrzení podporují, ale chybí podstatná vazba v provenanci nebo pokrytí."
  },
  "format": "puremu-s6e3-fidelity-manifest",
  "generation": {
    "catalog": {
      "path": "fidelity/catalog/puremu-s6e3-v2.catalog.json",
      "sha256": "c4c409a9bb75ea0aa0186fdd18d0db5b71b27425111c22848ce78c9c1f9fffaa"
    },
    "generator": {
      "path": "scripts/build-fidelity-manifest.py",
      "sha256": "70e0ea3c2ecb883449ce164478c9aa74aa3917cd36cbc9cf7a720f0bc71d5466"
    },
    "mode": "deterministic-no-clock",
    "predecessor_catalog": {
      "path": "fidelity/catalog/puremu-s6e3-v1.catalog.json",
      "sha256": "fab73c1cd035b5330ee185feaf4b8624407ed0b19694e4889d6009d5a4700d9f"
    },
    "schema": {
      "path": "fidelity/schema/puremu-s6e3-fidelity-v2.schema.json",
      "sha256": "a4d71d02cacb6ef2b4b21f9a85d65235509369c754b6ddcd571313cb56eba809"
    }
  },
  "source_policy": {
    "note": "Tento základ eviduje pouze důkazy přítomné v repozitáři. Patch PureMU, kontrola nebo inicializátor OpenMU dokazují současnou implementaci, samy o sobě však nedokazují shodu s oficiálním Webzenem. Stav verified_match vyžaduje dobový oficiální primární zdroj ze Season 6 nebo Episode 3 spolu s důkazem implementace a regresního testu. Pozdější nebo nedatovaný návod může doložit věcnou shodu, ale ne dobový stav S6E3. Také současná odchylka vůči pozdějšímu návodu sama nedokazuje původní stav S6E3. Metadata, URL a parafráze nejsou archivem článku.",
    "primary_reference_required_for_verified_match": true,
    "scope": "repository-evidence-only"
  },
  "sources": [
    {
      "bytes": 18492,
      "description": "Tabulka položek klienta majitele, Data/Local/Eng/item_eng.bmd. Rozhodčí o tom, co hráč vidí a co mu klient dovolí; v repozitáři je uložený dekodér a porovnání, ne samotný soubor.",
      "git_blob_sha1": "0d4e447fdb0476a734cde41f9d13d90c90484ff9",
      "id": "client.item-table",
      "kind": "archived_primary_reference",
      "path": "scripts/compare-items-against-client.py",
      "sha256": "3ec1fdc8c87eef513e962763f3e6275314927f7e75b05316dbf50cb9572e9303"
    },
    {
      "bytes": 14513,
      "description": "Tabulka dovedností klienta majitele, Data/Local/Eng/skill_eng.bmd, čtená podle rozvržení z pinnutých MuMain zdrojů.",
      "git_blob_sha1": "b943b92f72c1827f0ecf212a790e1851a458a9f0",
      "id": "client.skill-table",
      "kind": "archived_primary_reference",
      "path": "scripts/compare-skills-against-client.py",
      "sha256": "c4418c3b1633aced566f5256e3f6a55f9eabd9c61ffcdab4d34bf958fd6960c6"
    },
    {
      "bytes": 26494,
      "description": "Nedohledaný dobový úplný rozvrh Blood Castle, Devil Square a Chaos Castle pro S6E3, evidovaný ve veřejném auditu zdrojů Webzenu.",
      "git_blob_sha1": "cc9a6cf0afebd94af12237ea067e4ff50a231249",
      "id": "gap.webzen-s6e3-exact-event-timetable",
      "kind": "reference_ledger",
      "path": "fidelity/references/webzen-s6e3-v1.json",
      "sha256": "0ff3c9c32472484efd6029f1b8a792cd11f90512436c603871e5d6b2ac1eb84e"
    },
    {
      "bytes": 26494,
      "description": "Nedohledaný dobový oficiální podklad k velikosti stacku lektvarů v S6E3, evidovaný ve veřejném auditu zdrojů Webzenu.",
      "git_blob_sha1": "cc9a6cf0afebd94af12237ea067e4ff50a231249",
      "id": "gap.webzen-s6e3-potion-stack-size",
      "kind": "reference_ledger",
      "path": "fidelity/references/webzen-s6e3-v1.json",
      "sha256": "0ff3c9c32472484efd6029f1b8a792cd11f90512436c603871e5d6b2ac1eb84e"
    },
    {
      "bytes": 26494,
      "description": "Nedohledaný dobový oficiální podklad pro kořist Phoenix Soul Star z monster a socketové zařazení Lilium, evidovaný ve veřejném auditu zdrojů Webzenu.",
      "git_blob_sha1": "cc9a6cf0afebd94af12237ea067e4ff50a231249",
      "id": "gap.webzen-s6e3-top-gear-acquisition",
      "kind": "reference_ledger",
      "path": "fidelity/references/webzen-s6e3-v1.json",
      "sha256": "0ff3c9c32472484efd6029f1b8a792cd11f90512436c603871e5d6b2ac1eb84e"
    },
    {
      "bytes": 26494,
      "description": "Nedohledaný dobový oficiální podklad dostupnosti čtyř vypnutých služeb NPC, evidovaný ve veřejném auditu zdrojů Webzenu.",
      "git_blob_sha1": "cc9a6cf0afebd94af12237ea067e4ff50a231249",
      "id": "gap.webzen-s6e3-unavailable-npc-services",
      "kind": "reference_ledger",
      "path": "fidelity/references/webzen-s6e3-v1.json",
      "sha256": "0ff3c9c32472484efd6029f1b8a792cd11f90512436c603871e5d6b2ac1eb84e"
    },
    {
      "bytes": 13617,
      "description": "Porovnání možností a složení starobylých sad proti klientovi, s ověřením kontrolního součtu.",
      "git_blob_sha1": "32357e9db84cff13ebce4b05bd8bd1fd542bdf38",
      "id": "gate.ancient-sets-against-client",
      "kind": "regression_gate",
      "path": "scripts/compare-ancient-sets-against-client.py",
      "sha256": "12d2e996de43cf681fb674cfe152963e5c52e396ee074b6c73d26d3ea369dccd"
    },
    {
      "bytes": 9086,
      "description": "Porovnání výchozích statistik a růstu tříd proti dobovým tabulkám.",
      "git_blob_sha1": "0d574fce1ad057b5122b223b072faabe2746a75b",
      "id": "gate.classes-against-period",
      "kind": "regression_gate",
      "path": "scripts/compare-character-classes-against-period.py",
      "sha256": "9f37fddd54ead5eee97e67a4de1cd3bc192bde3e7b0cb55129fede8990819afc"
    },
    {
      "bytes": 17727,
      "description": "Porovnání receptů Chaos Machine proti klientovi: úspěšnost, cena a vstupy.",
      "git_blob_sha1": "c7a5350a4a3f5f1f244b0689b657bff58021bf94",
      "id": "gate.craftings-against-client",
      "kind": "regression_gate",
      "path": "scripts/compare-craftings-against-client.py",
      "sha256": "976ab2c0a1372faa25a8012198fa3fee906318ff14d47df87015720f05279fc4"
    },
    {
      "bytes": 99181,
      "description": "Fail-closed zdrojový manifest efektivních drop generátorů, jejich instalací, overlay pořadí, sazeb a explicitně chybějících runtime vstupů.",
      "git_blob_sha1": "349f3ac8ad7f10566c869cf620c99884c4aa180a",
      "id": "gate.effective-drop-manifest",
      "kind": "regression_gate",
      "path": "scripts/build-effective-drop-manifest.py",
      "sha256": "5749bc28b1cbef61ae6644a6ab65a2bdc807ff65828b7a1c90aa282ac041f751"
    },
    {
      "bytes": 56234,
      "description": "Reprodukovatelný audit připnutého klienta 1.04C, jeho raw elfích řádků a nezávislé executable UI eligibility větve pro summon skilly 30 až 36.",
      "git_blob_sha1": "bd8fa8799eceac7790d54b87f373865838f340dc",
      "id": "gate.elf-summon-reference",
      "kind": "regression_gate",
      "path": "client-tools/verify-webzen-s63-elf-reference.py",
      "sha256": "dc348a7dd28018974248496fbe55ac1a9af8c9352135c9ea8febe08adc9f9396"
    },
    {
      "bytes": 14165,
      "description": "Generátor fixtury, kterou brána porovnává s rozvrhem na webu; čte rozvrhy a délky fází přímo z aplikovaného stromu OpenMU.",
      "git_blob_sha1": "2e5510568d08caf85021b3dbde4754490052f2aa",
      "id": "gate.event-schedule-fixture",
      "kind": "regression_gate",
      "path": "scripts/build-event-schedule-fixture.mjs",
      "sha256": "7c2a5904b33b69baa948652cb551e5995874498cabb21a998ef1e1ec77701b3e"
    },
    {
      "bytes": 18492,
      "description": "Porovnání tabulky položek proti klientovi; hlásí rozměry, odolnost i jména.",
      "git_blob_sha1": "0d4e447fdb0476a734cde41f9d13d90c90484ff9",
      "id": "gate.items-against-client",
      "kind": "regression_gate",
      "path": "scripts/compare-items-against-client.py",
      "sha256": "3ec1fdc8c87eef513e962763f3e6275314927f7e75b05316dbf50cb9572e9303"
    },
    {
      "bytes": 13974,
      "description": "Porovnání požadavků předmětů v běžícím realmu proti dobovým tabulkám, s klientem jako rozhodčím totožnosti.",
      "git_blob_sha1": "9c3e6585411b84b9753921b59a334c6c187dbfb8",
      "id": "gate.items-against-period",
      "kind": "regression_gate",
      "path": "scripts/compare-item-figures-against-period.py",
      "sha256": "a21010fbba0dc0492c928b83b595f649751948b8351f6aeb0c48240f2903bf7e"
    },
    {
      "bytes": 13658,
      "description": "Porovnání statistik příšer v běžícím realmu proti dobovým tabulkám, s klientem jako rozhodčím totožnosti.",
      "git_blob_sha1": "f625e5e1473ee01e0e8ba7bbbbda4fa9ba2a2ee1",
      "id": "gate.monsters-against-period",
      "kind": "regression_gate",
      "path": "scripts/compare-monsters-against-period.py",
      "sha256": "dd9007f1af3e2406fcd22b8217e5c31cbf0bd6bac87b08462aa2623c6d9d27b4"
    },
    {
      "bytes": 34697,
      "description": "Obal sedmi kontrol, které nemohou být v bráně, a poznámka o tom, co se záměrně nekontroluje.",
      "git_blob_sha1": "796f96e8836252398a61a8febf6b315e4999fbd3",
      "id": "gate.outside-the-gate",
      "kind": "regression_gate",
      "path": "scripts/check-outside-the-gate.sh",
      "sha256": "2e1236a076dcafeb063c782a4c37f5f3cc19e313c0069119b362b62e1c71dcb4"
    },
    {
      "bytes": 342759,
      "description": "Blokující kontrola řady oprav OpenMU a hashů prověřených zdrojů.",
      "git_blob_sha1": "013f4174a2bfa4d133d96b2c05cdb416be5d7845",
      "id": "gate.patched-stack",
      "kind": "regression_gate",
      "path": "scripts/check-patches.sh",
      "sha256": "741560e02021654d9e11cb3438c2c573492117237e2215814558e53f7220fba0"
    },
    {
      "bytes": 9075,
      "description": "Deterministický lokální kontrakt aktivních RF master skill definic a jejich přiřazení třídě FistMaster.",
      "git_blob_sha1": "acab85c87a26509fedc5ddb6fb0a597d01e839cf",
      "id": "gate.rage-fighter-master-skills",
      "kind": "regression_gate",
      "path": "scripts/test-rage-fighter-master-skills.py",
      "sha256": "2253962aa791cb8ad391bc4e12d83a97fd6563564aa27b02baf6fdfad8c8bf12"
    },
    {
      "bytes": 5827,
      "description": "Blokující podmínky veřejného vydání PureMU a požadavky na důkazy.",
      "git_blob_sha1": "35e655d387ed23530bd73266376cd015ab07ebff",
      "id": "gate.release",
      "kind": "release_gate",
      "path": "docs/security/release-gates.md",
      "sha256": "f8f25f407d53d985e206dbcbf8eefa2f88e9c392b753213ecbce81ced77a2105"
    },
    {
      "bytes": 4428,
      "description": "Fail-closed kontrakt porovnání elfích summonů: staré a chybějící řádky selžou, přesná klientská hranice projde a raw BMD sloupec nerozhoduje cast gate.",
      "git_blob_sha1": "71375ace993c00a6f8f8068445d581250044860f",
      "id": "gate.skill-comparison-contract",
      "kind": "regression_gate",
      "path": "scripts/test-compare-skills-against-client.py",
      "sha256": "043a760d737747180a93f5e2c26710697d6b797f72eed38aca2b11d9de3c0349"
    },
    {
      "bytes": 7493,
      "description": "Porovnání poškození dovedností proti dobovým tabulkám, s manou z klienta jako kotvou totožnosti.",
      "git_blob_sha1": "02b7168a0b0d9e975dd8292393c3ba760901dffc",
      "id": "gate.skill-damage-against-period",
      "kind": "regression_gate",
      "path": "scripts/compare-skill-damage-against-period.py",
      "sha256": "de246b3eca4160475b5db1f8a368b7b84d626df24f3af3e5b2ec1d063605af83"
    },
    {
      "bytes": 14513,
      "description": "Porovnání požadavků dovedností proti klientovi, s vyřešenými výjimkami a varováním u energie.",
      "git_blob_sha1": "b943b92f72c1827f0ecf212a790e1851a458a9f0",
      "id": "gate.skills-against-client",
      "kind": "regression_gate",
      "path": "scripts/compare-skills-against-client.py",
      "sha256": "c4418c3b1633aced566f5256e3f6a55f9eabd9c61ffcdab4d34bf958fd6960c6"
    },
    {
      "bytes": 13210,
      "description": "Porovnání soketových možností a bonusů proti klientovi ve všech třech blocích tabulky.",
      "git_blob_sha1": "e8706ef274d4cb8bf61b7c495388b713e4790238",
      "id": "gate.socket-options-against-client",
      "kind": "regression_gate",
      "path": "scripts/compare-socket-options-against-client.py",
      "sha256": "c3474dd2e87b5d18c976ac73e7c3092b8dea6473f4bfbcd3205057426bb29587"
    },
    {
      "bytes": 14205,
      "description": "Porovnání pevných umístění NPC v běžícím realmu proti spawn tabulkám dobového korpusu.",
      "git_blob_sha1": "2fe219b0e927e324d3979af4127d55f1d5faa9c3",
      "id": "gate.spawns-against-period",
      "kind": "regression_gate",
      "path": "scripts/compare-spawns-against-period.py",
      "sha256": "97e44ac013669e73b60ef8fc77abefa2410a49a68209eca097feb338a77db9d9"
    },
    {
      "bytes": 3597,
      "description": "Syntetický kontrakt, že Arena podložená jen třemi period sadami nezmizí, ale zároveň neoslabí čtyřzdrojový hard gate.",
      "git_blob_sha1": "cd9091bc4d785625bc349a205cc09f4d306dd1d3",
      "id": "gate.spawns-low-confidence-contract",
      "kind": "regression_gate",
      "path": "scripts/test-compare-spawns-against-period.py",
      "sha256": "917219a0cc40c1b3020cc1d0cdf27e53ffe338cbbb66a9d251b6ee037df36a8b"
    },
    {
      "bytes": 10319,
      "description": "Porovnání seznamu přesunů proti klientovi včetně čísla, které klient posílá, a cíle.",
      "git_blob_sha1": "a00cf99112a16ba6319601a8d064f71b3142e2c6",
      "id": "gate.warps-against-client",
      "kind": "regression_gate",
      "path": "scripts/compare-warps-against-client.py",
      "sha256": "8c11bf14e9613ff0c68d0bdabfe6e331967e73da05540b04c294f8c83e5f7478"
    },
    {
      "bytes": 5196,
      "description": "Porovnání cen a úrovňových požadavků přesunů proti dobovým tabulkám.",
      "git_blob_sha1": "da7bf5909d6c542f73f03327ba932770e185db77",
      "id": "gate.warps-against-period",
      "kind": "regression_gate",
      "path": "scripts/compare-warps-against-period.py",
      "sha256": "606159e5a1544d8291348a5ae3a5d7b435cb36d23f2086785d95a72fbdf61515"
    },
    {
      "bytes": 19002,
      "description": "Připnuté definice úrovní Blood Castle pro Season 6 v OpenMU.",
      "git_blob_sha1": "97b92d40072da4c065654919eabc9c6e44e7c310",
      "id": "openmu.event-blood-definitions",
      "kind": "openmu_pinned_source",
      "openmu_commit": "66fd5f2967ac2edbe92e760e28b056998a7c46f6",
      "path": "vendor/openmu/src/Persistence/Initialization/VersionSeasonSix/Events/BloodCastleInitializer.cs",
      "sha256": "b7d8ddf19bdd1b5a2fafb57dafd61ee88277abafdeab2d2a88031525db5769b4"
    },
    {
      "bytes": 940,
      "description": "Připnutá výchozí konfigurace spouštění Blood Castle v OpenMU.",
      "git_blob_sha1": "e8c61d67b89b87592b235b67c68ba40bcf2b1f72",
      "id": "openmu.event-blood-schedule",
      "kind": "openmu_pinned_source",
      "openmu_commit": "66fd5f2967ac2edbe92e760e28b056998a7c46f6",
      "path": "vendor/openmu/src/GameLogic/PlugIns/PeriodicTasks/BloodCastleStartConfiguration.cs",
      "sha256": "c0d099de844ddcf7e1d63a97b76d04aac013a3d9aa5a768dbd9e0dde4f4280c2"
    },
    {
      "bytes": 23538,
      "description": "Připnuté pravidlo minimálního počtu hráčů pro spuštění Chaos Castle v OpenMU.",
      "git_blob_sha1": "0a3b04efa18cb9985b744c71559e0ae9dd77a98d",
      "id": "openmu.event-chaos-context",
      "kind": "openmu_pinned_source",
      "openmu_commit": "66fd5f2967ac2edbe92e760e28b056998a7c46f6",
      "path": "vendor/openmu/src/GameLogic/MiniGames/ChaosCastleContext.cs",
      "sha256": "d8cb9e0f06db87106a79f2351bc0ff442f4735991f622a51738960d6cb833987"
    },
    {
      "bytes": 9980,
      "description": "Připnuté definice úrovní Chaos Castle pro Season 6 v OpenMU.",
      "git_blob_sha1": "ff9781e50007b04344a8daed6e2c126b4adbafa8",
      "id": "openmu.event-chaos-definitions",
      "kind": "openmu_pinned_source",
      "openmu_commit": "66fd5f2967ac2edbe92e760e28b056998a7c46f6",
      "path": "vendor/openmu/src/Persistence/Initialization/VersionSeasonSix/Events/ChaosCastleInitializer.cs",
      "sha256": "b019ac1522ebe590dc13437b74e61d8656490371c688b01a273bb3c0c1e4214c"
    },
    {
      "bytes": 965,
      "description": "Připnutá výchozí konfigurace spouštění Chaos Castle v OpenMU.",
      "git_blob_sha1": "7b2e9041084f93294b69c38dbc508327d445054b",
      "id": "openmu.event-chaos-schedule",
      "kind": "openmu_pinned_source",
      "openmu_commit": "66fd5f2967ac2edbe92e760e28b056998a7c46f6",
      "path": "vendor/openmu/src/GameLogic/PlugIns/PeriodicTasks/ChaosCastleStartConfiguration.cs",
      "sha256": "d4d356d0b08842883fd99b6cedf9ee32a931788e549b4f831b4fec3b8606a311"
    },
    {
      "bytes": 8276,
      "description": "Připnuté základní definice úrovní Devil Square zděděné konfigurací Season 6 v OpenMU.",
      "git_blob_sha1": "3ffc284f02c3a606d76f89dd616e44e428b3e48f",
      "id": "openmu.event-devil-base-definitions",
      "kind": "openmu_pinned_source",
      "openmu_commit": "66fd5f2967ac2edbe92e760e28b056998a7c46f6",
      "path": "vendor/openmu/src/Persistence/Initialization/Version095d/Events/DevilSquareInitializer.cs",
      "sha256": "5a2712bff6a7a01f376954abd32346ed1d6b027b47d41c291522668b3e35638a"
    },
    {
      "bytes": 1849,
      "description": "Připnuté rozšíření definic Devil Square pro Season 6 v OpenMU.",
      "git_blob_sha1": "3e6dcccfea875d29604518363ad110cdd2c1d44d",
      "id": "openmu.event-devil-definitions",
      "kind": "openmu_pinned_source",
      "openmu_commit": "66fd5f2967ac2edbe92e760e28b056998a7c46f6",
      "path": "vendor/openmu/src/Persistence/Initialization/VersionSeasonSix/Events/DevilSquareInitializer.cs",
      "sha256": "4be0b646b4616e101a6d1ec69ae2c2600bc53ac0a4ff8046bd0da44dd9349c13"
    },
    {
      "bytes": 966,
      "description": "Připnutá výchozí konfigurace spouštění Devil Square v OpenMU.",
      "git_blob_sha1": "8579652040302a358bc40f4846f22276702b1537",
      "id": "openmu.event-devil-schedule",
      "kind": "openmu_pinned_source",
      "openmu_commit": "66fd5f2967ac2edbe92e760e28b056998a7c46f6",
      "path": "vendor/openmu/src/GameLogic/PlugIns/PeriodicTasks/DevilSquareStartConfiguration.cs",
      "sha256": "4c8e0496d342d4604febe3a9011b9f1c7f4068fa9a296ac55d2467338300e2a9"
    },
    {
      "bytes": 20381,
      "description": "Připnutá inicializace lektvarů Season Six, ze které pochází velikost stacku.",
      "git_blob_sha1": "bfa2d41de6c77b0ab1c618fe1a64cdd099719070",
      "id": "openmu.item-potions",
      "kind": "openmu_pinned_source",
      "openmu_commit": "66fd5f2967ac2edbe92e760e28b056998a7c46f6",
      "path": "vendor/openmu/src/Persistence/Initialization/VersionSeasonSix/Items/Potions.cs",
      "sha256": "c831a764c47337851d09ae5bd6096146ec49aeb9c67e2e9f61491b354f24b310"
    },
    {
      "bytes": 37548,
      "description": "Připnuté sortimenty obchodníků Season 6 v OpenMU, včetně Bolova v Karutanu.",
      "git_blob_sha1": "5892c8d09108eb95ec94db677429894b0a7a5638",
      "id": "openmu.merchant-stores",
      "kind": "openmu_pinned_source",
      "openmu_commit": "66fd5f2967ac2edbe92e760e28b056998a7c46f6",
      "path": "vendor/openmu/src/Persistence/Initialization/VersionSeasonSix/MerchantStores.cs",
      "sha256": "23a9350925539340b6a1d88681ee276165e16ad1ffc23728456932d9f594c16c"
    },
    {
      "bytes": 41892,
      "description": "Připnutý kontext miniher OpenMU. Implementované jsou jen Blood Castle, Chaos Castle a Devil Square.",
      "git_blob_sha1": "d312e5d027e9f5c3cd2b4051e07b9e3df3854d07",
      "id": "openmu.minigame-context",
      "kind": "openmu_pinned_source",
      "openmu_commit": "66fd5f2967ac2edbe92e760e28b056998a7c46f6",
      "path": "vendor/openmu/src/GameLogic/MiniGames/MiniGameContext.cs",
      "sha256": "4f1c693a79c2dc5f86cfe2bb2f0eb1baea1a3f592c6e4e2eb988df0de9a6dbeb"
    },
    {
      "bytes": 1633,
      "description": "Připnuté výskyty NPC v Norii pro Season 6 v OpenMU včetně Gens Vanerta.",
      "git_blob_sha1": "de9544a094a7a6c276b537b342ac7b080ac026e3",
      "id": "openmu.npc-noria",
      "kind": "openmu_pinned_source",
      "openmu_commit": "66fd5f2967ac2edbe92e760e28b056998a7c46f6",
      "path": "vendor/openmu/src/Persistence/Initialization/VersionSeasonSix/Maps/Noria.cs",
      "sha256": "4a412ef0915a43a4ecd0db557d35d2cdd4262ad8ab152a7fd631ca7d74949417"
    },
    {
      "bytes": 169015,
      "description": "Definice úkolů Season 6 včetně pásem úrovní a opakovatelnosti.",
      "git_blob_sha1": "75b1b8312909f7c177687a0b36648348ed7eb597",
      "id": "openmu.quests-season-six",
      "kind": "openmu_pinned_source",
      "openmu_commit": "66fd5f2967ac2edbe92e760e28b056998a7c46f6",
      "path": "vendor/openmu/src/Persistence/Initialization/VersionSeasonSix/Quests.cs",
      "sha256": "200cfff6dd898d00a7960ea526559ee01016d0854632312826da06ce70c749f2"
    },
    {
      "bytes": 137598,
      "description": "Připnutý inicializátor aktivních skillů a master skill definic Season 6 v OpenMU včetně Rage Fightera.",
      "git_blob_sha1": "83cd30728c1ccd4dea11efc1d30a1ed910d86f6d",
      "id": "openmu.skills-season6",
      "kind": "openmu_pinned_source",
      "openmu_commit": "66fd5f2967ac2edbe92e760e28b056998a7c46f6",
      "path": "vendor/openmu/src/Persistence/Initialization/VersionSeasonSix/SkillsInitializer.cs",
      "sha256": "c403fbccf8e590c181661f51aeceeb8214705fce5fce20a88b23d79fce2276d4"
    },
    {
      "bytes": 1886,
      "description": "Šance Jewel of Soul, bonus za Luck a hranice propadu na +0.",
      "git_blob_sha1": "7d5cb3c571be6eb70f380c4173a58baf75bccee5",
      "id": "openmu.soul-jewel",
      "kind": "openmu_pinned_source",
      "openmu_commit": "66fd5f2967ac2edbe92e760e28b056998a7c46f6",
      "path": "vendor/openmu/src/GameLogic/PlayerActions/ItemConsumeActions/SoulJewelConsumeHandlerPlugIn.cs",
      "sha256": "a2cef2689634c2363dc38c68ae767b96092241d445398aca3c8a642d84187e19"
    },
    {
      "bytes": 1277,
      "description": "Ceny a šance vstupenek do Blood Castle po stupních.",
      "git_blob_sha1": "47d99018e1dd3a2ea55a106eadbd627410046ca9",
      "id": "openmu.ticket-craftings",
      "kind": "openmu_pinned_source",
      "openmu_commit": "66fd5f2967ac2edbe92e760e28b056998a7c46f6",
      "path": "vendor/openmu/src/GameLogic/PlayerActions/Craftings/BloodCastleTicketCrafting.cs",
      "sha256": "a679e5585e1c55088acc1a56c8705f79e7cc6f48ec2b59233b59300a5ffa8df3"
    },
    {
      "bytes": 227335,
      "description": "Přesun Golden Archera do Deviasu a korunového spínače v obou tabulkách naráz.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.archer-and-crown-switch.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Přesun Golden Archera do Deviasu a korunového spínače v obou tabulkách naráz.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.archer-and-crown-switch.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 227335,
      "description": "Přesun orbů Dark Knighta od mága ke kováři a příslušný test.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.blacksmith-skill-orbs.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Přesun orbů Dark Knighta od mága ke kováři a příslušný test.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.blacksmith-skill-orbs.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 55249,
      "description": "Běhový důkaz, že předmětová odměna Blood Castle dojde živému vítězi a jeho partě, právě jednou a nikomu dalšímu.",
      "git_blob_sha1": "03972abbd5551339b83772f000bb2e6c8af22f14",
      "id": "patch.blood-castle-reward-proof",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/MiniGameCorrectnessTests.cs",
      "sha256": "500d07fa13a622bd4e4c784646ce62138509c1d6243630afcae30187ad0dc172"
    },
    {
      "bytes": 6374,
      "description": "Periodní Castle Siege PvP, PK suppression, potion/structure damage, durability a combat-effect imunity.",
      "git_blob_sha1": "373820055900789ce57e8ac80b26722c5802ccbb",
      "id": "patch.castle-siege-combat",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/CastleSiege/CastleSiegeCombatRules.cs",
      "sha256": "42d7be7b38f2e0bf5d31a70ba30b23d43cb81ded33cbec671e86261b13a4dfa6"
    },
    {
      "bytes": 3413,
      "description": "Obnova Castle Siege core včetně registrace, guild selection, NPC/crown lifecycle, devíti Canon Towers a Shield barrier.",
      "git_blob_sha1": "e9240d443190a5e3054d53b7601b29e9da70a7dc",
      "id": "patch.castle-siege-core",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/CastleSiege/NPC/CastleSiegeCannonTower.cs",
      "sha256": "b6f9684d98dc3ff8cb9069da73afd4661440057c36f6602443611bec84d1375e"
    },
    {
      "bytes": 15662,
      "description": "Dobový Castle Siege Life Stone item/mix, autorizovaná stavba, stage packet, healing, exact-guild respawn a lifecycle cleanup.",
      "git_blob_sha1": "2fbaefcc870c4ae26654fce7c5ce82bd547ffda3",
      "id": "patch.castle-siege-life-stone",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/CastleSiege/CastleSiegeLifeStoneController.cs",
      "sha256": "bb759553bbd0cc4e867bd7db26e1a61cac66b5ebc07d8984d74f1d7679ae23f0"
    },
    {
      "bytes": 15892,
      "description": "Dobové Castle Siege attack/defense machines: autorizace, target oblasti, B7/C2 preview, serverový shot ticket, AoE damage a lifecycle cleanup.",
      "git_blob_sha1": "bca9e2f1ecd7eb64beaa268dd9eadd7403d72ac1",
      "id": "patch.castle-siege-machines",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/CastleSiege/CastleSiegeMachineController.cs",
      "sha256": "0eefc16b3f2dad7ad1978bceb7f83460e8240981d6ca9080f2cc68f8c283afe3"
    },
    {
      "bytes": 4804,
      "description": "Dobový Castle Siege ordinary-death respawn přes defender gate 105 nebo outer gate 100 s pětisekundovým delay a stale-state fallbackem.",
      "git_blob_sha1": "676c47512bc41e8ff14f93a4585692b3ff3db6d2",
      "id": "patch.castle-siege-respawn",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/CastleSiege/CastleSiegeRespawnRules.cs",
      "sha256": "1230012827ac0f3aa4f4361f1235ef0ff8cfb36983edb2aac3a87d943337eed7"
    },
    {
      "bytes": 68362,
      "description": "Úplný Castle Siege B2 status, crown/switch/join synchronizace a obnovitelný crown-capture/End lifecycle.",
      "git_blob_sha1": "65bc2befc273e78d118612e5ece82adb7c1abab5",
      "id": "patch.castle-siege-status.castlesiegecrownmechanicstests",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/CastleSiegeCrownMechanicsTests.cs",
      "sha256": "3cda83d1064d72914e911a0b18f089dd53c9643609aa3bbb50f083fc5edb6ab4"
    },
    {
      "bytes": 90061,
      "description": "Úplný Castle Siege B2 status, crown/switch/join synchronizace a obnovitelný crown-capture/End lifecycle.",
      "git_blob_sha1": "75117127e7e7c97877a545379cb24caffb1ae9ac",
      "id": "patch.castle-siege-status.castlesiegestatemachinetests",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/CastleSiegeStateMachineTests.cs",
      "sha256": "ea6044b54b7e511c4e470ec9d9f0d6077a63aa35f54f2b7cd8a239dc0d293c6a"
    },
    {
      "bytes": 3050,
      "description": "Úplný Castle Siege B2 status, crown/switch/join synchronizace a obnovitelný crown-capture/End lifecycle.",
      "git_blob_sha1": "8e4ac418f819d260021322ca6e1c3929dd28308c",
      "id": "patch.castle-siege-status.castlesiegestatusplugin",
      "kind": "server_source",
      "path": "server/openmu/src/GameServer/RemoteView/CastleSiege/CastleSiegeStatusPlugIn.cs",
      "sha256": "122ddc51c49c2a5ffbdd7f5df70e25bca48983e263420a2dfc53d26c1f605ab9"
    },
    {
      "bytes": 55249,
      "description": "Běhový důkaz, že odměna Chaos Castle jde přeživšímu vítězi samotnému, ne jeho partě.",
      "git_blob_sha1": "03972abbd5551339b83772f000bb2e6c8af22f14",
      "id": "patch.chaos-castle-reward-proof",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/MiniGameCorrectnessTests.cs",
      "sha256": "500d07fa13a622bd4e4c784646ce62138509c1d6243630afcae30187ad0dc172"
    },
    {
      "bytes": 227335,
      "description": "Odměna vítěze Chaos Castle podle dobových pytlů EventItemBag, plus regresní test na všech sedm pater.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.chaos-castle-winner-bag.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Odměna vítěze Chaos Castle podle dobových pytlů EventItemBag, plus regresní test na všech sedm pater.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.chaos-castle-winner-bag.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 227335,
      "description": "Dvě mísení bílé a červené větvičky u Cherry Blossom Spirit.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.cherry-branch-mixes",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 227335,
      "description": "Bílá a červená větvička dostávají zdroj v Cherry Blossom Play-Boxu.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.cherry-branch-source.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Bílá a červená větvička dostávají zdroj v Cherry Blossom Play-Boxu.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.cherry-branch-source.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 227335,
      "description": "Opravy hodnot podle klienta majitele: sada Lilium a vrácení požadované energie dovedností.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.client-arbitrated-figures",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 4382,
      "description": "Dobové otevření Heart of Love, Silver/Gold Medal a Box of Heaven, eventová větev White Wizard/Ogre, Zen z pre-rate EXP a jediná explicitní cesta Symbol of Kundun.",
      "git_blob_sha1": "c781597dd37d02cc3cc9cde335774dc7584c2c9d",
      "id": "patch.effective-season-six-drops",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/PlayerActions/Items/ItemBoxDroppedPlugIn.cs",
      "sha256": "0929a21bc4f720f6d73a7a08a050cb2bfab05744266b356348dea4ac87a7194c"
    },
    {
      "bytes": 227335,
      "description": "Fresh inicializace, startup reconciliation existující DB a runtime hraniční testy pro sedm elfích summon energy gate hodnot připnutého klienta.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.elf-summon-energy-gate.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Fresh inicializace, startup reconciliation existující DB a runtime hraniční testy pro sedm elfích summon energy gate hodnot připnutého klienta.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.elf-summon-energy-gate.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 1653,
      "description": "Přesun Chaos Castle na liché hodiny, aby se hradní eventy střídaly s Blood Castle na sudých.",
      "git_blob_sha1": "936d9ca09929309df6c49b36b8b1054ba385ba3f",
      "id": "patch.event-alternating-castles",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/PlugIns/PeriodicTasks/ChaosCastleStartConfiguration.cs",
      "sha256": "457c81c9fbcc521315d3126a8aa7001dbdd90cf39194fc4ef59466d5cde420e3"
    },
    {
      "bytes": 227335,
      "description": "Rozšíření vstupního okna Blood Castle na 5 a Devil Square na 2 minuty při každém startu, a hlášení všech odlišných oken v logu.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.event-entrance-window.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Rozšíření vstupního okna Blood Castle na 5 a Devil Square na 2 minuty při každém startu, a hlášení všech odlišných oken v logu.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.event-entrance-window.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 7178,
      "description": "Implementace přechodu rozvrhu miniher PureMU do dalšího dne a její testy.",
      "git_blob_sha1": "15dd8ed118356166014ec188b6f3884cf1f9b9d4",
      "id": "patch.event-rollover.minigamestartbaseplugin",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/PlugIns/PeriodicTasks/MiniGameStartBasePlugIn.cs",
      "sha256": "a7cb0e9bf3f61d801e009d78426ee56b487ca4a770d1acf8e63df143d3f62f42"
    },
    {
      "bytes": 1923,
      "description": "Implementace přechodu rozvrhu miniher PureMU do dalšího dne a její testy.",
      "git_blob_sha1": "d332b73b06b6af85c340ed08ff7be886418e2a58",
      "id": "patch.event-rollover.minigamestartbaseplugintests",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/MiniGameStartBasePlugInTests.cs",
      "sha256": "e41857a78e18fa6389bf80cb06101c980be2720825cdcb5c855699117b29d999"
    },
    {
      "bytes": 1558,
      "description": "Dvouhodinový rozvrh Devil Square v půl a povinný update 142, který stejně přesune uložené rozvrhy už běžícího realmu.",
      "git_blob_sha1": "aba27d4da478a4fe5d07e7a0557275d893108709",
      "id": "patch.event-timetable-migration.devilsquarestartconfiguration",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/PlugIns/PeriodicTasks/DevilSquareStartConfiguration.cs",
      "sha256": "24789b7c647eb0d9bf8d23d9075ea4724f65ca4582dd118abce35d94f1d5e3c7"
    },
    {
      "bytes": 29377,
      "description": "Dvouhodinový rozvrh Devil Square v půl a povinný update 142, který stejně přesune uložené rozvrhy už běžícího realmu.",
      "git_blob_sha1": "2d01ba239849c9a79672cda9e449827dce7bb9e6",
      "id": "patch.event-timetable-migration.updateversion",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/Updates/UpdateVersion.cs",
      "sha256": "e9dfa8274409c0fb3acf999c3d9f413af8920b4fec04e372a73ec122e40a0a7d"
    },
    {
      "bytes": 39673,
      "description": "Dobová Season 6 distribuce excellent options: uniformní první bit, jednorázový reroll bitu číslo 2 a 25% druhý OR hod bez vynucené odlišnosti.",
      "git_blob_sha1": "12a1e154e566466b95a1e1245960b1cd1316ab3f",
      "id": "patch.excellent-option-rolls",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/DefaultDropGenerator.cs",
      "sha256": "7665fbe988a7cfdaa1c5f1cfb9db4cd87a287d6c166d9915cfbc5a0cb753a10d"
    },
    {
      "bytes": 2033,
      "description": "Perzistentní členství v Gens, obsluha požadavků na vstup, odchod a žebříček.",
      "git_blob_sha1": "4844c52264dff713a984e850fde453f85eb69b9e",
      "id": "patch.gens-join",
      "kind": "server_source",
      "path": "server/openmu/src/GameServer/MessageHandler/GensHandlerPlugIn.cs",
      "sha256": "de08afc737924fece3ec57c7c846f122c22581012fb1ea2234abec60b36838cf"
    },
    {
      "bytes": 5912,
      "description": "Odstranění hlášky o nedostupnosti Gens a obrácený regresní test.",
      "git_blob_sha1": "f18ca3e43bf43508f90b4f4bc8275df22eda43ce",
      "id": "patch.gens-steward-dialog",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/TalkNpcActionTest.cs",
      "sha256": "61ae7c1371dfd1c690c5ac66148175971ea3d96e6e400701c31622cdd18eb996"
    },
    {
      "bytes": 227335,
      "description": "Přesun Gens Vanerta v Norii na 167,100 podle návodu i dvou dobových sad, plus regresní test na oba správce.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.gens-vanert-location.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Přesun Gens Vanerta v Norii na 167,100 podle návodu i dvou dobových sad, plus regresní test na oba správce.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.gens-vanert-location.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 227335,
      "description": "Vrácení čísel vln spawnům pevností Imperial Guardian, aby event vůbec něco postavil.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.guardian-waves.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Vrácení čísel vln spawnům pevností Imperial Guardian, aby event vůbec něco postavil.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.guardian-waves.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 227335,
      "description": "Záplata, která dává Gemstonu dobový drop v Kanturu a čtveřici řetězu Jewelu of Harmony prohozenou úroveň a hodnotu.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.harmony-chain-source.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Záplata, která dává Gemstonu dobový drop v Kanturu a čtveřici řetězu Jewelu of Harmony prohozenou úroveň a hodnotu.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.harmony-chain-source.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 14930,
      "description": "Serverová logika Illusion Temple v PureMU: týmy, relikvie, body za doručení a vyhlášení vítěze.",
      "git_blob_sha1": "ddd1dd3000027fb357c231bf78953645d1e6e555",
      "id": "patch.illusion-temple",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/MiniGames/IllusionTempleContext.cs",
      "sha256": "ae06c7d814c4b68b411bd4059c122677bcceecf7b24381bc8939e7f08389f185"
    },
    {
      "bytes": 14930,
      "description": "Pravidla úspěchu a odměny Illusion Temple podle oficiálního korejského průvodce.",
      "git_blob_sha1": "ddd1dd3000027fb357c231bf78953645d1e6e555",
      "id": "patch.illusion-temple-rewards.illusiontemplecontext",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/MiniGames/IllusionTempleContext.cs",
      "sha256": "ae06c7d814c4b68b411bd4059c122677bcceecf7b24381bc8939e7f08389f185"
    },
    {
      "bytes": 55249,
      "description": "Pravidla úspěchu a odměny Illusion Temple podle oficiálního korejského průvodce.",
      "git_blob_sha1": "03972abbd5551339b83772f000bb2e6c8af22f14",
      "id": "patch.illusion-temple-rewards.minigamecorrectnesstests",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/MiniGameCorrectnessTests.cs",
      "sha256": "500d07fa13a622bd4e4c784646ce62138509c1d6243630afcae30187ad0dc172"
    },
    {
      "bytes": 13781,
      "description": "Odpověď v charakteru u NPC, jejichž systém tento realm neprovozuje, a její regresní test.",
      "git_blob_sha1": "7ee788d70a1eb6fe952dff506f972881679b6cae",
      "id": "patch.inert-npc-reply.talknpcaction",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/PlayerActions/TalkNpcAction.cs",
      "sha256": "3ffc7ea06aad7b4edcfe9b77cbe5c77c49c3a5a72ff44a287568d2b4faf6adb1"
    },
    {
      "bytes": 5912,
      "description": "Odpověď v charakteru u NPC, jejichž systém tento realm neprovozuje, a její regresní test.",
      "git_blob_sha1": "f18ca3e43bf43508f90b4f4bc8275df22eda43ce",
      "id": "patch.inert-npc-reply.talknpcactiontest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/TalkNpcActionTest.cs",
      "sha256": "61ae7c1371dfd1c690c5ac66148175971ea3d96e6e400701c31622cdd18eb996"
    },
    {
      "bytes": 26959,
      "description": "Invaze hlásí, kolik potvor si vyžádaly a kolik jich skutečně umístily.",
      "git_blob_sha1": "99ca93839f26a5f06fbc20c6e3ce32d51c6a216b",
      "id": "patch.invasion-logging",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/PlugIns/InvasionEvents/BaseInvasionPlugIn.cs",
      "sha256": "3f0e3a49afec44c2834a8012190306daf6a52b82288485d7a3699183d3165212"
    },
    {
      "bytes": 4894,
      "description": "Red Dragon ID 44 používá dobovou větev 75 % čtyři veřejné hromádky po 10 000 Zen, 1/6 Bless a 1/12 Soul bez Chaosu; itemy z otevřených boxů zároveň dostávají ochranu pro hráče nebo jeho partu.",
      "git_blob_sha1": "a12523f56fb329cde4af06e9d45e1bbcbac47725",
      "id": "patch.invasion-red-dragon-rewards",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/PlugIns/InvasionEvents/RedDragonInvasionPlugIn.cs",
      "sha256": "0279a923bd2a1b53bccccb8c24f908ea0acdab04c5bfcae084e16724a7e76c40"
    },
    {
      "bytes": 7954,
      "description": "Pevná Zen odměna z item boxu zachová rozdělení party, ale v safe zóně nepoužívá bojový filtr; úzká regrese pokrývá pickup v městě.",
      "git_blob_sha1": "0193ee68af57b13fd08541fcd09a8cb8f917d9b2",
      "id": "patch.item-box-money-safezone.droppedmoney",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/DroppedMoney.cs",
      "sha256": "bfda1afa12381e9fd7df355d50a89345c6b665740ec57dc85f491f9895923214"
    },
    {
      "bytes": 13451,
      "description": "Pevná Zen odměna z item boxu zachová rozdělení party, ale v safe zóně nepoužívá bojový filtr; úzká regrese pokrývá pickup v městě.",
      "git_blob_sha1": "2598df399febe9690e471cb18f67d784064136ff",
      "id": "patch.item-box-money-safezone.moneydistributiontest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/MoneyDistributionTest.cs",
      "sha256": "992052cbdd0f4219de0610a8f6cb3dd3aff31ea74bd3710f0e29b93de6082192"
    },
    {
      "bytes": 226476,
      "description": "Socketové zařazení Lilium v PureMU, oprava uložených dat a testy.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.item-lilium.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 4392,
      "description": "Socketové zařazení Lilium v PureMU, oprava uložených dat a testy.",
      "git_blob_sha1": "0e51c93b383c179e851d140402c039eb9a05c42d",
      "id": "patch.item-lilium.seasonsixliliumsocketconfigurationtest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Persistence.Initialization.Tests/SeasonSixLiliumSocketConfigurationTest.cs",
      "sha256": "d647a4e63606615fa3e8c4dd85b26bc3dba776d66a73325370baed09f9fed87c"
    },
    {
      "bytes": 38764,
      "description": "Socketové zařazení Lilium v PureMU, oprava uložených dat a testy.",
      "git_blob_sha1": "a124b77f9c19a4fb1ddc0028b68ef1270f861074",
      "id": "patch.item-lilium.socketsystem",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/VersionSeasonSix/Items/SocketSystem.cs",
      "sha256": "c350da01e9d87c47ffa5f6a580be998ebfbf6528ac2ec947cea1da1f7368e98f"
    },
    {
      "bytes": 227335,
      "description": "Centrální srovnání doložených cenových driftů s přesným klientským item BMD včetně live-realm nosiče; neurčené vyšší socketové tier hodnoty zůstávají bez odhadu.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.item-price-parity",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 3547,
      "description": "Zařazení Phoenix Soul Star v PureMU, oprava uložených dat a testy.",
      "git_blob_sha1": "e160aacf241bd8433dead88d0155d506d5c45b08",
      "id": "patch.item-pss.seasonsixphoenixsoulstardropconfigurationtest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Persistence.Initialization.Tests/SeasonSixPhoenixSoulStarDropConfigurationTest.cs",
      "sha256": "d88efa7aefd3a38928966a5c0d3ad9a8c05820542219c6d7cd7910fa987f0755"
    },
    {
      "bytes": 37350,
      "description": "Zařazení Phoenix Soul Star v PureMU, oprava uložených dat a testy.",
      "git_blob_sha1": "443f64956842529e72e720baccc0064793bbab20",
      "id": "patch.item-pss.weapons",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/VersionSeasonSix/Items/Weapons.cs",
      "sha256": "fb7aa0fac533196b5b385387a6436c9e5b0644cdebd0bc3a3d7cc8898475e081"
    },
    {
      "bytes": 227335,
      "description": "Úroveň dropu Jewel of Creation podle dobových tabulek.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.jewel-of-creation-drop-level.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Úroveň dropu Jewel of Creation podle dobových tabulek.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.jewel-of-creation-drop-level.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 227335,
      "description": "Všech pět Box of Kundun úrovní dostává jistý excellent item roll bez Zen fallbacku; patch nese nosič do existujícího realmu, regresi i omezený záznam komunitní S6 provenance bez tvrzení o přesných poolech a options.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.kundun-box-item-roll.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Všech pět Box of Kundun úrovní dostává jistý excellent item roll bez Zen fallbacku; patch nese nosič do existujícího realmu, regresi i omezený záznam komunitní S6 provenance bez tvrzení o přesných poolech a options.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.kundun-box-item-roll.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 227335,
      "description": "Přesun Lea the Helper do Devias podle dobových spawn souborů a příslušný test.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.leo-the-helper-devias.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Přesun Lea the Helper do Devias podle dobových spawn souborů a příslušný test.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.leo-the-helper-devias.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 227335,
      "description": "Opravy ranků, stropu, požadavku a sedmnácti vzorců master skillů, s nosičem do živé databáze.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.master-skill-tree.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Opravy ranků, stropu, požadavku a sedmnácti vzorců master skillů, s nosičem do živé databáze.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.master-skill-tree.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 21404,
      "description": "Odmítnutý vstup do minihry nesmí stát Zeny ani vstupenku, a přijatý je vezme právě jednou; regresní testy.",
      "git_blob_sha1": "36e2a46b781e2eeb50177ae94cceedb8c2b8cb09",
      "id": "patch.mini-game-entry-fee",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/MiniGameEntryTests.cs",
      "sha256": "46c937acb303073a07495c7dea091772d616b7ad4173ed5d333b76b5e1a933a6"
    },
    {
      "bytes": 7178,
      "description": "Zápis do logu, že minihra otevřela patra a že cyklus doběhl.",
      "git_blob_sha1": "15dd8ed118356166014ec188b6f3884cf1f9b9d4",
      "id": "patch.mini-game-start-log",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/PlugIns/PeriodicTasks/MiniGameStartBasePlugIn.cs",
      "sha256": "a7cb0e9bf3f61d801e009d78426ee56b487ca4a770d1acf8e63df143d3f62f42"
    },
    {
      "bytes": 55249,
      "description": "Běhový důkaz, že ukončení minihry odvede všechny z její mapy a vyprázdní její seznam vstoupivších.",
      "git_blob_sha1": "03972abbd5551339b83772f000bb2e6c8af22f14",
      "id": "patch.mini-game-teardown-proof",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/MiniGameCorrectnessTests.cs",
      "sha256": "500d07fa13a622bd4e4c784646ce62138509c1d6243630afcae30187ad0dc172"
    },
    {
      "bytes": 25218,
      "description": "Průjezd všech tří miniher celým cyklem od oznámení po návrat do města; regresní testy.",
      "git_blob_sha1": "74729f4c9d2021142dade1518d45eba0ebff7180",
      "id": "patch.mini-game-whole-cycle",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/MiniGameFullCycleTests.cs",
      "sha256": "a7d9e1f21a7d722009ddef65f041702d00cd795d59c863b2c01b1e32128db2a5"
    },
    {
      "bytes": 28569,
      "description": "Cena Mossovy bedny srovnaná na 2 000 000 podle přesného launch klienta 1.04C.",
      "git_blob_sha1": "b88a7d527831d58ac24b05b6d228bdf3ce9f9c9a",
      "id": "patch.moss-box-price.itempricecalculator",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/ItemPriceCalculator.cs",
      "sha256": "0bb34f54e66f20cfa45eaa8425b510cfdf0e74ab66c0aa8486fba5261f3d574c"
    },
    {
      "bytes": 4837,
      "description": "Cena Mossovy bedny srovnaná na 2 000 000 podle přesného launch klienta 1.04C.",
      "git_blob_sha1": "85322a8483a649183f663e75a711cbb932f3c599",
      "id": "patch.moss-box-price.mossgambleboxpricetests",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/MossGambleBoxPriceTests.cs",
      "sha256": "e841cffb9556534e6c0cc02e7ffb3da56ca7234ee6e938208a4f4cd989dd7f3f"
    },
    {
      "bytes": 227335,
      "description": "Pět beden Mosse jako ItemCrafting s čísly 60 až 64.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.moss-boxes",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 28443,
      "description": "Obchod v režimu sázky, tři stupně na bednu a los při nákupu.",
      "git_blob_sha1": "ba6109a63300d936780472f9c839f49df0bcbd8c",
      "id": "patch.moss-gamble-shop.buynpcitemaction",
      "kind": "server_source",
      "path": "server/openmu/src/GameLogic/PlayerActions/Items/BuyNpcItemAction.cs",
      "sha256": "6ea1a5548ae572a7863757d75975281fb7e9bfc956a0a79da182957be133a313"
    },
    {
      "bytes": 226476,
      "description": "Obchod v režimu sázky, tři stupně na bednu a los při nákupu.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.moss-gamble-shop.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 1245226,
      "description": "Chybějící okno 0x22 v drátovém i doménovém výčtu a jeho převod.",
      "git_blob_sha1": "8b7fc77c1a506a2d4d971b10ec10882d4c215600",
      "id": "patch.moss-gamble-window",
      "kind": "server_source",
      "path": "server/openmu/src/Network/Packets/ServerToClient/ServerToClientPackets.cs",
      "sha256": "897f0a9b3a27b2c204ed09d0caf38fe2bae420784d5a3dea3c0504815b54b707"
    },
    {
      "bytes": 227335,
      "description": "Obsah beden a sazby Mosse podle jeho vlastních dobových tabulek MossMerchant.dat a ItemOptionRate.txt.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.moss-period-table.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Obsah beden a sazby Mosse podle jeho vlastních dobových tabulek MossMerchant.dat a ItemOptionRate.txt.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.moss-period-table.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 8402,
      "description": "Běhový důkaz, že nákup u Mosse vydá vylosovanou zbraň, obyčejný obchodník bednu, a prázdný los nestojí nic.",
      "git_blob_sha1": "eb988f6cade1718e1a08bc841bd52bbafe97dbec",
      "id": "patch.moss-purchase-proof",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/MossPurchaseTests.cs",
      "sha256": "226dc8311b6dd96319d2edfe9b1a1471250ed54a5fb818bb8a6aff4a2c1a4fb6"
    },
    {
      "bytes": 507545,
      "description": "Bounds-safe parser dynamických 35+effect-count C2:68 target-preview záznamů v MuMain klientu; po zapečení série je to přímo zdroj klienta, ne patch.",
      "git_blob_sha1": "df1de3d830070a54688c916fa991b04b6150d29a",
      "id": "patch.mumain-castle-siege-preview",
      "kind": "client_source",
      "path": "client/mumain/src/source/Network/Server/WSclient.cpp",
      "sha256": "c4f3cda4002c2eff2beb5324821f44bc6b3145d1deb0c99588773efa515c3400"
    },
    {
      "bytes": 227335,
      "description": "Sladění Norie s dobovými spawn soubory: bez prodavačky lahviček, plus test.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.noria-potion-vendor.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Sladění Norie s dobovými spawn soubory: bez prodavačky lahviček, plus test.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.noria-potion-vendor.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 2492,
      "description": "Dostupnost Gens v PureMU, umístění Dupriana a regresní testy.",
      "git_blob_sha1": "83655e93af7d7532b646e23c34ab891527692073",
      "id": "patch.npc-gens.lorencia",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/VersionSeasonSix/Maps/Lorencia.cs",
      "sha256": "39455e93ac77a54867d47ee6bc0693f473a640ee03e2bd02466b0e72d638cfab"
    },
    {
      "bytes": 226476,
      "description": "Dostupnost Gens v PureMU, umístění Dupriana a regresní testy.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.npc-gens.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 227335,
      "description": "Klientské a periodní designation NPC 240/241 s idempotentním přenosem do existujícího realmu bez změny rolí nebo spawnů.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.npc-identities",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Obnovení spawnů čtyř městských NPC Season 6 v PureMU a příslušné testy.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.npc-population-restored",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 7373,
      "description": "Fáze, pásma úrovní a minimum hráčů podle dochovaných datových souborů Season 5/6, plus regresní testy.",
      "git_blob_sha1": "4d56e81652eafd84d0dbe76f58ac01168d63183b",
      "id": "patch.period-event-figures.periodeventfigurestests",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PeriodEventFiguresTests.cs",
      "sha256": "b2e828b9097bfec87fa5299e087154fcaf93a4cf0eaef99884d3978cc483a128"
    },
    {
      "bytes": 227335,
      "description": "Fáze, pásma úrovní a minimum hráčů podle dochovaných datových souborů Season 5/6, plus regresní testy.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.period-event-figures.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Fáze, pásma úrovní a minimum hráčů podle dochovaných datových souborů Season 5/6, plus regresní testy.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.period-event-figures.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 227335,
      "description": "Doplnění osmi požadavků, které předmět dobově žádá a realm nežádal.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.period-item-requirements.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Doplnění osmi požadavků, které předmět dobově žádá a realm nežádal.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.period-item-requirements.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 227335,
      "description": "Dosahy, rychlost útoku a doba respawnu příšer podle dobových tabulek.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.period-monster-behaviour.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Dosahy, rychlost útoku a doba respawnu příšer podle dobových tabulek.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.period-monster-behaviour.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 227335,
      "description": "Návrat čtyřiceti hodnot příšer na dobové figury.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.period-monster-figures.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Návrat čtyřiceti hodnot příšer na dobové figury.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.period-monster-figures.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 227335,
      "description": "Doplnění osmdesáti chybějících řádků odolnosti a osmi opravených hodnot.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.period-monster-resistances.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Doplnění osmdesáti chybějících řádků odolnosti a osmi opravených hodnot.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.period-monster-resistances.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 227335,
      "description": "Přesun pěti NPC na dobovou dlaždici a odstranění dvou deviaských duplikátů.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.period-npc-placement.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Přesun pěti NPC na dobovou dlaždici a odstranění dvou deviaských duplikátů.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.period-npc-placement.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 227335,
      "description": "Přesun třinácti spawnů na dobovou dlaždici a odstranění čtyř bez dobového zdroje.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.period-spawn-squares.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Přesun třinácti spawnů na dobovou dlaždici a odstranění čtyř bez dobového zdroje.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.period-spawn-squares.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 3886,
      "description": "Souběžné první použití stejného perzistentního typu už nevyhazuje výjimku, plus regresní test na studenou cache.",
      "git_blob_sha1": "33f12dc4557c6d88c68da173681c3c7075370eb6",
      "id": "patch.persistent-type-cache-race.persistenttypecacheracetests",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PersistentTypeCacheRaceTests.cs",
      "sha256": "f9db320ddba5801834fdd1fe06145a4de41ff0365fdb239cfe6ce009cd4f75b8"
    },
    {
      "bytes": 5373,
      "description": "Souběžné první použití stejného perzistentního typu už nevyhazuje výjimku, plus regresní test na studenou cache.",
      "git_blob_sha1": "3f52b73e9a6474bb16501765263e759425713c20",
      "id": "patch.persistent-type-cache-race.typehelper",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/TypeHelper.cs",
      "sha256": "bc414a0039167e040a28990274f2b1b524dc30d2dc89d79e225f40e2f1c5edfe"
    },
    {
      "bytes": 170157,
      "description": "Návrat čtyř questových hodnot na ty, na kterých se shodne klientův Quest.bmd a dobová serverová tabulka.",
      "git_blob_sha1": "01de6cb7626cb204d3b42a19c3b8d6958879d7d1",
      "id": "patch.quest-period-figures.quests",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/VersionSeasonSix/Quests.cs",
      "sha256": "1209cbdcdfe1455f6543453c36f4c2d916bc534ee30ef26e41cf2e10de92ee2e"
    },
    {
      "bytes": 7709,
      "description": "Návrat čtyř questových hodnot na ty, na kterých se shodne klientův Quest.bmd a dobová serverová tabulka.",
      "git_blob_sha1": "f4a4d165cdaa9b2d80778725248c56da3d2c0d4c",
      "id": "patch.quest-period-figures.seasonsixprogressionconfigurationtest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Persistence.Initialization.Tests/SeasonSixProgressionConfigurationTest.cs",
      "sha256": "ea6a9645443c934dc6c95939eb700a8cd97b557a31eaa2a0ee5eaa5216743739"
    },
    {
      "bytes": 227335,
      "description": "Oprava překrývajících se položek v obchodech: orby Dark Knighta dostaly volná pole a profil rozestěhuje jakoukoli další kolizi.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.shop-slot-repair.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Oprava překrývajících se položek v obchodech: orby Dark Knighta dostaly volná pole a profil rozestěhuje jakoukoli další kolizi.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.shop-slot-repair.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 227335,
      "description": "Návrat růstu many Summonera na dobovou hodnotu.",
      "git_blob_sha1": "cadc0142fb18753dfdd14d81e6601bdf74628843",
      "id": "patch.summoner-mana-growth.puremugameplayprofile",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/PureMuGameplayProfile.cs",
      "sha256": "c4e52f80dcb1020ee7e6e94a1bff3ad49af13714e9c2971884a65330261fe073"
    },
    {
      "bytes": 226476,
      "description": "Návrat růstu many Summonera na dobovou hodnotu.",
      "git_blob_sha1": "4d1364715b7f474e3d6a0c8f9ce3d56b8d25b035",
      "id": "patch.summoner-mana-growth.puremugameplayprofiletest",
      "kind": "server_source",
      "path": "server/openmu/tests/MUnique.OpenMU.Tests/PureMuGameplayProfileTest.cs",
      "sha256": "aebe76af3eb1fc108ce484440720cd7ec86d8f8d736ffdb2cab16c14d48dedca"
    },
    {
      "bytes": 3711,
      "description": "Oficiální korejský průvodce Webzenu k 환영의사원, záchyt 2010-12-28.",
      "git_blob_sha1": "e403c50d6e60a4acf56ea05d176994e0cda03b24",
      "id": "reference.webzen-kr-illusion-temple-2010",
      "kind": "archived_primary_reference",
      "path": "fidelity/references/archived/webzen-kr-illusion-temple-2010.md",
      "sha256": "e721d1f8df910b20d6f1e4ccfd7808410745fc8d17b3f61b624e40218a51a22b"
    },
    {
      "bytes": 5222,
      "description": "Dobová oficiální stránka Webzenu o Mossovi, obrázky nahrané 2010-02-17.",
      "git_blob_sha1": "f2286497a42e479eea7dc676b91d2ecd40ecec26",
      "id": "reference.webzen-moss-guide-2010",
      "kind": "archived_primary_reference",
      "path": "fidelity/references/archived/webzen-moss-guide-2010.md",
      "sha256": "fa3de11daa43bd7ef545f389c5b4550674fcb293712a4b4d6466ebfb6e6f8048"
    },
    {
      "bytes": 40477,
      "description": "Obchod Pasi the Mage se sedmi pergameny Rage Fightera ve volných polích 23 a 104–109 (vlastní politika RF-SOURCE-001).",
      "git_blob_sha1": "46ef4adc09b3a818fc7da1f669405118f0311b51",
      "id": "server.pasi-parchment-store",
      "kind": "server_source",
      "path": "server/openmu/src/Persistence/Initialization/VersionSeasonSix/MerchantStores.cs",
      "sha256": "3ce1bfd5f69c882ada78eb13d7a75ce7aae90f7c27aa932a15f54bd662407b56"
    },
    {
      "bytes": 4389,
      "description": "Rozdílový build jednoho překladového celku, který ukáže, že klientský patch došel až do objektu.",
      "git_blob_sha1": "49a74666bc981519f69f44c697c4b63d0622db10",
      "id": "tool.client-patch-in-binary",
      "kind": "regression_gate",
      "path": "client-tools/verify-patch-reaches-the-binary.sh",
      "sha256": "b0dbe9a2ea4fac2f04eceb94a11ff624216ff94574e744793c33d62bfbfcec9a"
    },
    {
      "bytes": 26494,
      "description": "Odkazovaný oficiální návod Webzenu k Blood Castle; metadata a parafráze jsou ve veřejném auditním souboru.",
      "git_blob_sha1": "cc9a6cf0afebd94af12237ea067e4ff50a231249",
      "id": "webzen.event.blood-castle.guide",
      "kind": "linked_primary_reference",
      "path": "fidelity/references/webzen-s6e3-v1.json",
      "sha256": "0ff3c9c32472484efd6029f1b8a792cd11f90512436c603871e5d6b2ac1eb84e",
      "url": "https://muonline.webzen.com/en/gameinfo/guide/detail/116"
    },
    {
      "bytes": 26494,
      "description": "Odkazovaný oficiální návod Webzenu k Chaos Castle; metadata a parafráze jsou ve veřejném auditním souboru.",
      "git_blob_sha1": "cc9a6cf0afebd94af12237ea067e4ff50a231249",
      "id": "webzen.event.chaos-castle.guide",
      "kind": "linked_primary_reference",
      "path": "fidelity/references/webzen-s6e3-v1.json",
      "sha256": "0ff3c9c32472484efd6029f1b8a792cd11f90512436c603871e5d6b2ac1eb84e",
      "url": "https://muonline.webzen.com/en/gameinfo/guide/detail/119"
    },
    {
      "bytes": 26494,
      "description": "Odkazovaný oficiální návod Webzenu k Devil Square; metadata a parafráze jsou ve veřejném auditním souboru.",
      "git_blob_sha1": "cc9a6cf0afebd94af12237ea067e4ff50a231249",
      "id": "webzen.event.devil-square.guide",
      "kind": "linked_primary_reference",
      "path": "fidelity/references/webzen-s6e3-v1.json",
      "sha256": "0ff3c9c32472484efd6029f1b8a792cd11f90512436c603871e5d6b2ac1eb84e",
      "url": "https://muonline.webzen.com/en/gameinfo/guide/detail/126"
    },
    {
      "bytes": 1562,
      "description": "Archivovaný výňatek z oficiálního skriptu epizody 18 (2009) s doloženým původem a otiskem.",
      "git_blob_sha1": "e9e7eaf546f605ef6dcbb398293cb00d84a6d1de",
      "id": "webzen.quest-ep18-archived",
      "kind": "archived_primary_reference",
      "path": "fidelity/references/archived/webzen-quest-ep18-repeat.md",
      "sha256": "a30c3aeb08a097a05609b773bac9171c80764bc18985bf861ca730967169c59e"
    },
    {
      "bytes": 26494,
      "description": "Odkazovaný oficiální návod Webzenu s hodnotami původních questů; metadata a parafráze jsou ve veřejném auditním souboru.",
      "git_blob_sha1": "cc9a6cf0afebd94af12237ea067e4ff50a231249",
      "id": "webzen.quest.legacy-values.guide",
      "kind": "linked_primary_reference",
      "path": "fidelity/references/webzen-s6e3-v1.json",
      "sha256": "0ff3c9c32472484efd6029f1b8a792cd11f90512436c603871e5d6b2ac1eb84e",
      "url": "https://muonline.webzen.com/en/gameinfo/guide/detail/83"
    },
    {
      "bytes": 26494,
      "description": "Dobový oficiální seznam změn Webzenu z 21. prosince 2011, který výslovně uvádí Rage Fighter master skill tree v Episode 3.",
      "git_blob_sha1": "cc9a6cf0afebd94af12237ea067e4ff50a231249",
      "id": "webzen.season6-episode3.update",
      "kind": "linked_primary_reference",
      "path": "fidelity/references/webzen-s6e3-v1.json",
      "sha256": "0ff3c9c32472484efd6029f1b8a792cd11f90512436c603871e5d6b2ac1eb84e",
      "url": "https://muonline.webzen.com/en/news/notices/all/668"
    },
    {
      "bytes": 26494,
      "description": "Odkazovaný oficiální návod Webzenu ke Gens, jejich službě a správcům; metadata a parafráze jsou ve veřejném auditním souboru.",
      "git_blob_sha1": "cc9a6cf0afebd94af12237ea067e4ff50a231249",
      "id": "webzen.system.gens.guide",
      "kind": "linked_primary_reference",
      "path": "fidelity/references/webzen-s6e3-v1.json",
      "sha256": "0ff3c9c32472484efd6029f1b8a792cd11f90512436c603871e5d6b2ac1eb84e",
      "url": "https://muonline.webzen.com/en/gameinfo/guide/detail/38"
    }
  ],
  "status_definitions": {
    "implemented_unverified": "Repozitář deterministicky dokazuje současné chování, chybí však odkazovaný oficiální primární důkaz nebo úplný důkaz shody.",
    "known_gap": "Důkazy v repozitáři jednoznačně určují chování, které v posuzované oblasti chybí nebo je záměrně vypnuté.",
    "not_assessed": "Oblast je evidovaná, ale porovnání implementace s referencí ještě nebylo dokončeno.",
    "verified_match": "Dobový oficiální primární zdroj ze Season 6 nebo Episode 3, důkaz současné implementace a regresní test společně dokazují shodu v uvedeném rozsahu."
  },
  "summary": {
    "by_status": {
      "implemented_unverified": 59,
      "known_gap": 14,
      "not_assessed": 1,
      "verified_match": 1
    },
    "by_surface": {
      "classes": 4,
      "events": 25,
      "items": 14,
      "npcs": 19,
      "quests": 4,
      "systems": 9
    },
    "claim_count": 75
  },
  "target": {
    "episode": 3,
    "openmu": {
      "commit": "66fd5f2967ac2edbe92e760e28b056998a7c46f6",
      "lock": {
        "path": "config/openmu.env",
        "sha256": "35cdd7786d93b6b5d7f787982774f3898f3d51054fe47f18da6d88a7c2b0e6ea"
      },
      "repository": "https://github.com/MUnique/OpenMU.git",
      "tree": "a4781338ea616df047f83a509b23dd881e0e4e78"
    },
    "product": "MU Online",
    "season": 6
  },
  "version": 2
}
