This was broken back in 4.0.x, new regression in 4.2.0. 'internalId' is not set on a newly created Record. This breaks nodeHash when removing a record later.

Code:
Ext.onReady(function() {
    Ext.define('Task', {
        extend: 'Ext.data.Model',
        idProperty : 'Id',
        fields: [
            {name: 'Id' },
            {name: 'task',     type: 'string'},
            {name: 'user',     type: 'string'},
            {name: 'duration', type: 'string'},
            {name: 'done',     type: 'boolean'}
        ]
    });

    var store = Ext.create('Ext.data.TreeStore', {
        model: 'Task',
        proxy: {
            type: 'ajax',
            //the store will get the content from the .json file
            api: {
                create : 'treecreate.json'
            }
        },
        root : {},
        listeners : {
            write : function() {
                  console.log(this.getRootNode().firstChild.internalId) // SHOULD BE 111
            }
        }
    });

    store.getRootNode().appendChild(new Task({}));
    store.sync();
});
Server responds:
Code:
[{
    task:'Project: Shopping',
    Id : 111,
    user:'Tommy Maintz',
    iconCls:'task-folder'
}]