App.vue

<template>
    <div class="container">
        <button @click="onClick"/>
            Click
        </button>
    </div>
</template>

<script>
import Vue from 'vue';
import { mapGetters } from 'vuex';

export default {
    methods: {
        onClick() {
            this.sample.values.push(1);
        }
    },
    computed: {
        ...mapGetters({
            sample: 'sample/getSample'
        })
    },
    watch: {
        sample: {
            handler: function(newVal, oldVal) {
                console.log(JSON.stringify(val));
                console.log(JSON.stringify(newVal));
            },
            deep: true
        }
    }
};

/stores/sample/index.js

export const state = () => ({
    sample: {
        id: '',
        values: [1, 2, 3, 4, 5]
    }
});

const actions = {};
const getters = {
    getSample: state => {
        return state.sample;
    }
};
const mutations = {};

export default {
    namespaced: true,
    state,
    actions,
    getters,
    mutations
};

上記のような実装をしていて、App.vueはsampleの変更を検知した場合に、watchが走り、newVal、oldValをそれぞれ受け取ります。という想定でいたのですが、実際にこのコードを実行しても、

{"id":"","values":[1,2,3,4,5,1]}
{"id":"","values":[1,2,3,4,5,1]}

というような表示しかされず、deepオプションを付与しても有効化されません。
どのようにしたら良いか、ご教授お願いします。