WBML-0003 — Persistence & Party Lifecycle Suite
✅ Verified — выполненные ветки WBML-0003 PARTIAL PASS: 119 / 0 / 1
Вопросы исследования
Заголовок раздела «Вопросы исследования»WBML-0003 проверял одну связанную область:
- переживают ли kingdom и party typed values save/reload и полный restart процесса WorldBox;
- может ли сам harness доказать прошлые фазы после restart, не полагаясь на RAM;
- что делают party getters/setters для missing party ID;
- остаются ли данные доступными у inactive party;
- сохраняются ли они после reactivate.
Окружение
Заголовок раздела «Окружение»WorldBox 0.51.2 build 719Git build-719@5decNeoModLoader 1.2.0.1PoliticalWorldAPI 1.14.0WBML 0.0.3-fix1Почему понадобился fix1
Заголовок раздела «Почему понадобился fix1»В первом harness после полного restart итоговые counters учитывали только новые фазы: старые PASS/FAIL/SKIP жили в памяти старого процесса.
fix1 сохранил в world state:
Phase A gatePhase B gatePASS/FAIL/SKIP до restartrun markerphase stateПосле запуска нового процесса Lab сначала восстановил доказательную матрицу:
RESTORED PRE-RESTART MATRIX: PASS=76 FAIL=0 SKIP=1Методологическое правило:
Если после restart нам нужен факт о предыдущих шагах, доказательство этого факта тоже должно пережить restart.
Full process restart
Заголовок раздела «Full process restart»После нового запуска WorldBox без повторной записи вернулись kingdom:
markerintUnicode stringboolfloatprivate kingdom tagshared kingdom tagи party:
intUnicode stringboolfloatВсе выполненные assertions прошли. Дополнительно marker проверили на отсутствие дубликата у другого kingdom.
Phase C:
PASS=93 FAIL=0 SKIP=1RESULT: PASSMissing party
Заголовок раздела «Missing party»Для несуществующего party ID:
Get int/string/bool/float → точный переданный fallbackSet int/string/bool/float → falseLifecycle
Заголовок раздела «Lifecycle»Lab нашёл активную, не правящую партию и выполнил:
seed typed data→ deactivate→ active=False подтверждено→ чтение всех typed values во время inactive→ reactivate→ active=True восстановленВсе выполненные lifecycle assertions прошли.
PASS=119FAIL=0SKIP=1A=PASS B=PASS C=PASS D=PASSSUITE RESULT: PARTIAL PASSОдин SKIP — это environmental gap: в исходной фазе не было подходящей второй партии для same-kingdom party-to-party isolation.
Точная граница:
✅ выполненные persistence/restart/lifecycle ветки verified🧪 party-to-party isolation пока не доказанНе доказано этим suite
Заголовок раздела «Не доказано этим suite»- физический формат save storage;
- изоляция party A от party B;
- другие версии;
- все возможные hard-delete/removal сценарии партий;
- безопасность изменения ruling party.