First of all, if you’re going to use push, which is an array method, you want $head to be an array:
<<set $head to []>>
Then you add new elements with <<set $head.push()>>
<<set $head.push({
gear: "Leather Cap",
details: {
equipped: false,
description: "A gift from side character A",
stats: "<<set $armor +=1>>",
undostats: "<<set $armor -=1>>"
}
})>>
That said, if the stats don’t change throughout the game, it’s best to use the setup object instead of story variables, as Greyelf explained here.