Skip to content

Nullable Blueprint entry cleanup ​

A final entry-contract audit found that Initialize Entry accepted None data, but release inferred lifecycle ownership from a non-null model pointer. A static/default entry could run its initialization hook and then miss Blueprint cleanup.

The actual saved WBP_JournalEntry reproduces the problem. An opt-in source fixture initializes it with None, writes a visible-state sentinel into EntryTitle, calls Release Entry and expects its saved cleanup graph to clear the title. The pre-fix run logs IF_ENTRY_REVIEW FAIL Null-data initialization still executes Blueprint release cleanup. Its process nevertheless exits0; the strict launcher rejects the missing PASS. This is retained under Evidence/Logs/NullableEntry-BeforeFix-UE56.log and its console record, after a4.78s successful probe build. No failure was suppressed.

The core now tracks initialized context separately from model presence. Release marks that context released before calling its Blueprint hook, so None data still receives cleanup and a repeated Release does not repeat it. The automatic initial refresh also respects a context released by its initialization hook. Public function/event names and saved widget assets are unchanged. Two core source files changed; no inventory/backend/material/asset changes.

The fixed UE5.6.1 Win64 real-RHI source run passes allfive additional assertions: actual saved entry, None cleanup, repeated-release idempotence, real-model reassignment and replacement cleanup. Its existing1,000-model pooled-list regression also passes:3displayed/6observed rows, no violations; whole-scene frame observations are not an isolated widget benchmark. Build14.69s. Commands: Tools/run_nullable_entry_check.ps1 -Prefix NullableEntry-AfterFix, and Tools/verify_entry_review.py for the full list result. Pipeline56494 is terminal exit0.

Strict new-core Editor/Game Development/Shipping builds, independent module/content loads and native progress arithmetic regressions across5.6.1/5.7.4/5.8.3 pass. Pipeline49927 is terminal exit0; python Tools/summarize_progress_core.py --suite Entry verifies all64current core hashes,23native types/16distinct packages in each host and exact strict logs. Current example proof now adds66source/exact Development cases, including nullable source/cooked checks on allthreeengines,32cleanBPs and full-menu/custom/card regressions. Pipeline8012 and cooked nullable handles are terminal exit0. Current EB binary installs also pass separately; M4 optional/current Shipping/final delivery remain pending. Prior IF3/BI archives retain their pre-fix scope. Full goal remains active.

UIForge v0.1.0 · Blueprint and C++ development documentation.

Enlarged documentation image

Enlarged documentation image