OK, so the problem is that the first digest is synchronizing the `pendingValue` to the value of the model. If you don't have a digest before the first "change" event to update the `pendingValue` then when the first digest is called it doesn't realise that `pendingValue` had already been set and overrides it with `undefined`. See https://github.com/shahata/angular.js/blob/updateOnSubmit2/src/ng/directive/input.js#L1869-L1872

```
if (ctrl.$viewValue !== value) {
  ctrl.$viewValue = pendingValue = value;
  ctrl.$render();
}
```

I think it might be fair to expect a digest always to occur before any "change" event can occur on the input...?