WBML 0.6.0 — Entity Lifecycle Atlas
Финальный статус: CLOSED PASS
Canonical probe: 0.6.0-fix5
Run: d3e2a6ed626f
Final matrix: 34 PASS / 0 FAIL / 0 SKIP, P–F PASS.
Вопрос исследования
Заголовок раздела «Вопрос исследования»Что происходит с Building, Actor, City и Kingdom после их natural high-level lifecycle path, и как ведут себя manager/owner/registry references во время cleanup?
Canonical scenario и pinned sources
Заголовок раздела «Canonical scenario и pinned sources»Выбраны victim kingdom и независимый control kingdom. fix5 закрепил provenance до destructive observation:
actorManager:F:units_only_alivecityManager:F:dictkingdomManager:F:dictbuildingManager:F:dictkingdomCities:F:citiescityActors:P:unitscityBuildings:F:buildingsCanonical result
Заголовок раздела «Canonical result»domains ready/classified 4 / 4full removal verified 2non-terminal windows 2destroy invoked 4manager removed 2owner removed 2still registered 2reintroduced 0same-ID new reference 0stale read failures 0control failures 0cleanup failures 0engine exceptions 0game exceptions 0Outcomes:
- Building:
Building.kill()→VERIFIED-NONTERMINAL-WINDOW, в pinned manager+owner 30 frames. - Actor:
Actor.dieSimpleNone()→VERIFIED-LIFECYCLE, manager+owner+registry removed, 50/50 stale reads. - City:
City.destroyCity()→VERIFIED-LIFECYCLE, manager+owner+registry removed, 50/50 stale reads. - Kingdom: все пять remaining cities уничтожены
City.destroyCity()→5→0; Kingdom ещё 120 frames вKingdomManager F:dict→VERIFIED-EMPTY-REGISTERED-WINDOW.
Methodology history — почему fix5 важен
Заголовок раздела «Methodology history — почему fix5 важен»Initial source
Заголовок раздела «Initial source»Первый package не компилировался (ModDeclare namespace и yield внутри try/catch) — это не research run.
fix1 — rejected unsafe strategy
Заголовок раздела «fix1 — rejected unsafe strategy»Direct BuildingManager.destroyObject, manager removal и Kingdom.Dispose() fallback повредили runtime. Repeated NullReferenceException прошли через KingdomManager.removeObject → WorldLog.logKingdomDestroyed → Kingdom.get_name, Clan/BuildingZone/SimObject-zone paths. В corrupted session перестал работать Escape. Мир был discarded.
Lesson: generic manager destruction/removal и Dispose() — не safe universal lifecycle fallbacks.
fix2 — safe calls, wrong success assumption
Заголовок раздела «fix2 — safe calls, wrong success assumption»Natural entry points убрали corruption, game exceptions мониторились, но harness всё ещё требовал immediate manager removal для каждого valid lifecycle. Building/Kingdom это опровергли.
fix3 — “last city” не был последним
Заголовок раздела «fix3 — “last city” не был последним»Уничтожен один city, но owner count показал 5→4. Kingdom conclusion invalid.
fix4 — floating provenance false reintroduction
Заголовок раздела «fix4 — floating provenance false reintroduction»Membership helper мог между frames переключить collection и ложно увидеть City «removed then returned». Этот result отвергнут.
fix5 — canonical
Заголовок раздела «fix5 — canonical»Manager/owner sources pin один раз. City вернулся к чистому VERIFIED-LIFECYCLE, remaining cities реально исчерпаны, Kingdom дал валидный bounded empty-registered window.
Machine data: /worldbox-modding-docs/data/wbml/0600-entity-lifecycle-atlas.json
Evidence: /worldbox-modding-docs/evidence/wbml-0600-result.txt