UEFN VerseBuild fails with “File path did not pass sanitization check” when a public struct contains message fields initialized from same-module localized messages

Summary

UEFN fails VerseBuild with:

VerseBuild: File path did not pass sanitization check.

The Verse compile output shows 0 errors / 0 warnings, but UEFN still marks the build as failed.

I isolated this to a specific Verse pattern: a public data struct containing message fields where the localized message constants are declared at the same module/file level and then used as default values or struct literal values.

Moving those localized message constants into a nested module fixes the issue without changing the data model or runtime behavior.

Please select what you are reporting on:

Unreal Editor for Fortnite

What Type of Bug are you experiencing?

Verse

Steps to Reproduce

  1. Create a Verse file in a public module.
  2. Add a localized message constant at the module/file level.
  3. Add a public struct with a message field initialized from that localized message.
  4. Add a public constant instance of that struct.
  5. Compile Verse / push changes in UEFN.

Minimal repro:

using { /Verse.org }

TestUnitName<public><localizes> : message = "Test Unit"

unit_model_data<public> := struct<computes>:
    Name<public> : message = TestUnitName
    BaseIncomePerSecond<public> : int = 1

DefaultUnitModelData<public> : unit_model_data = unit_model_data:
    Name := TestUnitName
    BaseIncomePerSecond := 1

This passes normal Verse checking with 0 errors / 0 warnings, but UEFN VerseBuild fails with:

VerseBuild: File path did not pass sanitization check.

Moving the localized messages into a nested module makes the same data structure compile successfully.

Working version:

using { /Verse.org }

UnitDataText<public> := module:
    TestUnitName<public><localizes> : message = "Test Unit"

unit_model_data<public> := struct<computes>:
    Name<public> : message = UnitDataText.TestUnitName
    BaseIncomePerSecond<public> : int = 1

DefaultUnitModelData<public> : unit_model_data = unit_model_data:
    Name := UnitDataText.TestUnitName
    BaseIncomePerSecond := 1

This version compiles and works in UEFN.

Expected Result

UEFN should either compile this Verse code successfully or report a clear Verse compiler error pointing to the invalid message usage.

The current error looks unrelated to the actual cause and does not point to the file, line, struct, or message field that triggers the failure.

Observed Result

UEFN reports a build failure with:

VerseBuild: File path did not pass sanitization check.

The compile output still shows 0 errors / 0 warnings, so the project appears valid from the Verse compiler output, but UEFN refuses to complete the build.

Platform(s)

Windows