You misunderstood what you are doing traits => ['Array']. This allows you to customize methods handles. This prevents you from directly accessing type methods push. To do this, you need use Moose::Autobox(and you do not need an array trait).
Or you could do:
has 'tid_stack' => (
traits => ['Array'],
is => 'rw',
isa => 'ArrayRef[Str]',
default => sub { [] },
handles => {
push_tid => 'push',
},
);
...
$self->push_tid( get_hrtid( $template ) );