Temporal Tables Granularity
The documentation says:


  ⓘ Note
  
  FOR SYSTEM_TIME filters out rows that have period of validity with zero duration (SysStartTime = SysEndTime). Those rows will be
  generated if you perform multiple updates on the same primary key
  within the same transaction. In that case, temporal querying surfaces
  only row versions before the transactions and ones that became actual
  after the transactions. If you need to include those rows in the
  analysis, query the history table directly.


You have typed SysStartTime and SysEndTime as datetime2 with no fractional seconds. This increases the chance they will compare equal, giving a "period of validity with zero duration".

You can see the history rows exist by looking in the history table directly:

SELECT * FROM [dbo].[MyTable_History];


The only issue is that the FOR SYSTEM_TIME query does not show rows where SysStartTime and SysEndTime are equal.

db&lt;>fiddle demo