I like the question, but there are two small caveats.
First is that I would have liked the answer to be phrased as "10 in all 10 rows" or something equivalent, to make clear that there is a difference between COUNT with empty OVER() clause and COUNT with no OVER clause at all (which would have returned just a single value 10 if the myid value itself were omitted from the SELECT and a GROUP BY were added).
Second is that the explanation wrongly states that without ORDER BY, the partition is "ordered in natural order, which is however SQL Server reads the data". This is not true. Without ORDER BY, the partition is unordered, and still considered as a SET. In an unordered partition, the aggregate function is applied to the whole partition, and that is why the COUNT result is 10 for each row.
In an ordered partition, the aggregate applies to the result of the ROW or RANGE specfication, which default to RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW. So if the explanation would be right about the partition being "ordered in natural order", then the query would have assigned the values 1 through 10 based on that "natural order".