Every md member carries a superblock, at the start or the end of the partition depending on the metadata version, recording the array's UUID, its level, chunk size and layout, the member's role, and an event counter incremented on every write to the array. At boot, mdadm reads the superblocks, groups members by UUID, and assembles each array from the members whose event counts agree. A member whose count is lower missed writes: it dropped out during a power cut or a cable fault and came back later, and its copy of the data is older than the others'. The kernel says so, kicking non-fresh, and assembles without it, leaving the array degraded and correct.
Read error corrected is a different message. It means the array is healthy enough to compute the right data from the other members, that it met a sector on one member it could not read, and that it wrote the correct data back over that sector so the drive could reallocate it. It is md doing what RAID is for, and it is also a drive with a growing defect list; several in a day means that drive should be imaged before it is the one being rebuilt from.
The commands that turn a recoverable set into a reconstruction are --assemble --force, which tells mdadm to include the stale member as if it were current, and --create, which writes brand-new superblocks with new UUIDs and, if the layout guessed differs from the original, a geometry that reads the data wrongly. --create does not write to the data area, so the data survives it; what is lost is the description, and on a set with mixed metadata versions, sometimes a few kilobytes at the start of each member. The bench reads the original superblocks from the images, or, where they were overwritten, recovers the geometry from the parity arithmetic across the images.