Text vs. Array merge outcomes

Hello. I was testing some of the more obscure merge cases and was intrigued by the fact that arrays and text seem to behave differently for seems like identical scenarios.
Here’s the test I am running (the test passes):

export const testInsertAfterReplaceBeforeIndexAndIndexAndBeyond = tc => {
  const { testConnector, users, text0: txt0, text1: txt1, array0: arr0, array1: arr1 } = init(tc, { users: 2 })
  txt0.insert(0, 'abc')
  arr0.insert(0, ['a', 'b', 'c'])
  testConnector.flushAllMessages()
  txt0.delete(0, 3)
  arr0.delete(0, 3)
  txt0.insert(0, '1')
  arr0.insert(0, ['1'])
  txt1.insert(1, '2')
  arr1.insert(1, ['2'])
  testConnector.flushAllMessages()
  t.assert(txt0.toString() === '21', 'last-to-first')
  t.compare(arr0.toJSON(), ['1', '2'], 'first-to-last')
}

As you can see the last two lines indicate different resolutions.

My question are:

  1. Are the results meant to be non-deterministic? If that’s the case then my test probably is failing to trigger alternative resolutions and I’d like to know what it takes to make that happen.

  2. If the results are meant to be deterministic, was the choice of different resolution intentional? Is there something about text that makes this resolution better?

Thank you!