Gamestarted is probably too early for your script to work. As per the notes in its documentation https://docs.larian.game/Osiris/API/GameStarted, the level isn't ready on the server side until the RegionStarted event.

As a more general problem:
Is this your level wrapper goal?
It should close when the level is loaded (as per the very first lines you quoted,
IF
DB_CheckLevelStart("TheOldRuin")
AND
DB_CurrentLevel("NorthHall")
THEN
GoalCompleted;),
so that all of the level-specific goals, which should be parented to it, activate. This means that placing the logic here can't work: either the level isn't ready, or the logic is inactive.

As per the documentation for that call, https://docs.larian.game/Osiris/API/TemporaryCharacterCreateAtPosition, TemporaryCharacterCreateAtPosition returns the character being summoned, as you may want to perform actions on it when it is spawned.