You depend on someone else to feed your ASIC work and blocks
Yes, pools feed your miners work.
I guess there's no simple way to filter blocks before they're sent to your ASIC - but the code level action of this is confusing to me.
What do you mean by "filter blocks"? You don't send blocks to your ASIC. In fact, your miners have no concept of a block whatsoever.
I guess I just don't understand how the "block hit" process happens since I don't think a single ASIC can do a whole block calculation (can it?).
The "block hit" process happens if your miner provides a solution to the SHA256d hash which satisfies the network difficulty. There is no such thing as "whole block calculation". There is only SHA256d hashing.
I guess ck gives you a direct connection to the stratum. So it's like you're running your own Btc node. But if so, how can ck siphon off his 0.5% upon success?
Because he's creating the block (just like on my pool, I create the block). As such, I can define what transactions are in the block, including the coinbase transaction (the one that defines how/where the 25
BTC block reward is distributed). On his pool, he defines the coinbase transaction as "99% of the reward + transaction fees goes to address XXXXX and 1% of the reward + transaction fees goes to address YYYY".
So I know there's some aspect I'm not understanding here. (If I understood C I guess I could read the kano code.) For instance, who handles block difficulty if you're "directly connected to stratum" as ck says? I thought difficulty was the number of zeros at the beginning of the hash, and was set by Btc current difficulty. (see? noob.)
The network handles block difficulty. All difficulty means is, "the solution you provide must meet or beat this value in order to accept your block on the chain".