Glad to have helped. I enjoy answering some of the more "how stuff works" questions on the general level. Especially compared to my normal daily pool support questions

.
This post was a very interesting read for me too.
I think, but I'm not sure, that I am somewhat familiar with the basic concepts of PoW in solo mining:
- Your mempool contains unconfirmed transactions, that makes the content for the next block being "generated"
- In order to have this block accepted as the next one in the chain, you need to find an SHA256d hash for this content + a nonce
- The hash is used in the header, and it needs to be below a defined target, i.e. difficulty, for the pushed block to be accepted by other nodes
Now I'm more confused about pooled mining. I admit that I never took the time to read the Stratum protocol RFC, spec or whatever.
What I'm not understanding here is how the pool manages to hide block content from pool miner (that's something I'm used to read when starting the miner, i.e. something like "pool is hiding block contents from us"). I understand that the hiding is necessary to prevent the pool miner from pushing the block solo, bypassing the pool and getting the block reward for himself instead of the pool. But then what exactly is the (partial?) content that is used to hash, and more importantly, how can it be useful to the pool, since the hash sent by the miner will not be block_content + nonce but other_content + nonce (+ extra nonce etc?).
In short: how can sha256d(block_content + nonce) = jackpot_hash be derived from sha256d(f(block_content) + nonce and/or whatever) = jackpot_hash? Most likely, it isn't and I'm asking the wrong question, and you're gonna explain to me why

I'm not sure that I've made myself clear, but I promise that I've tried to... I can rephrase the question if necessary.
Thank you in advance for your enlightenment!