Did you create a new __GLO_Shovel goal? Because if so, that will hide the __GLO_Shovel goal from Shared, and hence the dirt pile functionality will be deactivated. Or did you indeed create a goal called _GLO_Shovel (with one _ at the start)?
If you create _GLO_Shovel, then the issue is probably that your goal initialises before the shared module's __GLO_Shovel. In that case it won't work. The reason is that the event handlers from __GLO_Shovel that normally trigger when you add a DB_ShovelArea() fact won't be active yet, so your declaration will be ignored.
__GLO_Shovel is a subgoal Shared's __Start goal. Shared's __Start goal completes after "GAMEEVENT_GameStarted" GameEvent. So until that point, no DB_ShovelArea() declarations will have any effect.
In practice, a dirt pile will always be part of a level. Just like we do for the main game, it's best to create top level goals that initialise the first time a level is loaded (that happens much later than the above GameEvent). Then create subgoals for those top level goals that contain level-specific logic, like dirt piles.
I.e., create a top level goal that only contains something like this in the KB:
IF
RegionStarted("MyLevel")
THEN
GoalCompleted;
And then subgoals that contain story code specific to MyLevel