There's a lot of information in that blog post, and it looks like you've mixed up a couple of the sections.
The query_thread_profile
XE available on SQL Server 2014 SP2 and higher puts the actual runtime metrics in the event output. The cached plan is just a normal, cached (estimated) plan.
Pedro points out that you are responsible for the tedious task of mapping execution plan nodes (and their estimated rows) to runtime stats stored in the extended event output:
And now comparing with the XE output, I can see the graphical plan and the actual and estimated rows that were read by that Index Scan:
...
It can be an arduous task to do the above...
Later in the blog post, when discussing other XE available in newer versions (query_plan_profile
and query_post_execution_plan_profile
), Pedro mentions being able to get plans with a subset of the "Actual Plan" runtime metrics in them. However, these aren't stored back in the plan cache - they are stored in the XE events.