TLDR (of just the opening sections, which I think/hope I have summarised here):
- Add a new a SegData section of the block, which can be ignored by nodes that don't understand or enforce this section
- data can be referenced by a 32-byte identifier: sha256(sha256(the_data)
- op_returns with exactly 32 bytes of data, referencing that data as above, will continue to be accepted as usual
- larger op-returns will be punished heavily (or banned entirely?) via an increase in the weight of those outputs. Similarly, "complex" witness scripts and data will be punished via removing the witness discount
- it's a soft fork
It seems easy too complex to be practical, and it very very explicitly adds file storage which could be controversial. And I don't think we can rely on being able to identify correctly which witness uses are too "complex"; it just means the "whack a mole" game continues. And I don't know enough about the SegData section as a whole, will it also be hashed as a single unit and it's hash included somewhere in the block (in the coinbase?)