but, think about the champion fighter, they have absolutely no button to press, how can they enjoy the fights ?

for a more more nuanced take, not all class in d&d can use magic and having mundane ways of doing things is good. d&d is the game where you can try anything and, more often than not, it's silly and dumb...

having a bit of unbalance on a solo game might be more fun ? It is definitely a matter of personal opinion, I personally never tried the dip mechanic since I mainly play spellcasters but I must admit that I've had way more fun than it should be allowed since I cloned "create water" to create wine, explosive powder, alien juice or lava (my favorite, who needs fireball when you can melt things ?). same thing with regular water, using shocking grasp, ray of frost or firebolt on it is fun... and most fire spells clearly stipulate that flammable stuff will indeed catch fire.

to go back to the topic at hand, here is the code for the shove spell :
Code
new entry "Target_Shove"
type "SpellData"
data "SpellType" "Target"
data "SpellProperties" "RemoveStatus(SLEEP);RemoveStatus(SLEEPING);"
data "TargetCeiling" "0"
data "TargetFloor" ".25"
data "TargetRadius" "1.5"
data "SpellRoll" "Dead() or SkillCheck(Skill.Athletics,math.max(context.Target.GetPassiveSkill(Skill.Athletics),context.Target.GetPassiveSkill(Skill.Acrobatics)), IsSneakingOrInvisible())"
data "SpellSuccess" "IF(not Ally()):Force(ShoveDistance,OriginToEntity,Aggressive);IF(Ally()):Force(ShoveDistance,OriginToEntity,Friendly)"
data "TargetConditions" "not Self() and CanShoveWeight() and IsMovable() and not Grounded() and not (not Player(context.Source) and Combat(context.Source) and Character() and not (Enemy() or HasStatus('SG_Unconscious')))"
data "Icon" "Action_Shove"
data "DisplayName" "Shared_Target_Shove_DisplayName"
data "Description" "Shared_Target_Shove_Description"
data "ExtraDescription" "Shared_Target_Shove_ExtraDescription"
data "CastSound" "Action_Cast_Shove"
data "PreviewCursor" "Melee"
data "CastTextEvent" "Cast"
data "CycleConditions" "CanShoveWeight() and not Grounded()"
data "UseCosts" "BonusActionPoint:1"
data "SpellAnimation" "0319ca29-4024-4649-9278-3c1f20c5f023,,;a71e11ca-95ab-463d-a4bf-fe8094126b61,,;352c3a89-f99c-4472-8424-58c0ffb15e55,,;a57fc614-ed20-4574-936b-bdcc6cebd36a,,;b24b3f23-6d3a-43ce-ae3a-abfb44d26082,,;200ab854-a989-4a6a-8ac9-4b20aecaccda,,;0b07883a-08b8-43b6-ac18-84dc9e84ff50,,;,,;,,"
data "SpellFlags" "IsMelee;AddFallDamageOnLand;IsHarmful"
data "SpellActionType" "Shove"
data "SpellAnimationIntentType" "Peaceful"
data "PrepareEffect" "c512042e-a04f-4a02-af7a-16f30e11ed95"
data "CastEffect" "3fdf3e73-59a3-4518-9521-35f40374d048"
data "TargetEffect" "5d8c64e3-f9ff-4ee0-b0b6-2a081c7244a8"
data "SpellSoundMagnitude" "Small"
data "Sheathing" "Sheathed"
as you can see (or cannot, I will try to explain anyway), it is an athletics check against the better of acrobatics or athletics with advantage if the character attempting the shove is sneaking or invisible. this is what the rules say.
the conditions for it being possible in the first place are "CanShoveWeight() and not Grounded()" which might be subject to debate as to what weight can be shoved...
and the distance is... "ShoveDistance" which doesn't help much... looking around, I found two values that might or might not be related :
Code
key "ShoveDistanceMin","1"
and
Code
key "ShoveDistanceMax","6"
I guess I found why godlike strength doesn't send people to the moon ^.^'

so, I guess the only thing that is not really consistent with the rules is that fighters should be the ones doing 4 shove actions in one round instead of here being the thief doing it twice... I haven't had the occasion to see how multiple attacks are handled because of all the resetting but I will eventually see it...