In my testing, I had to use action=discard and use the invert-match on the outbound. Trying to phrase it correctly:
IF Prefix IS NOT EQUAL TO 63.249.32.0/20
THEN DISCARD
And then apply that to the outgoing filter. Does that clear up why I did it that way? In my test situation here, that did work correctly as long as I statically routed it.
Regarding the Cogent link, we are going through another provider for that which already terminates the connection for us with Cogent to make it simple. We wanted to keep everything weighted evenly, so it made plenty of sense (almost too much sense!) to go ahead with the partner agreement with another provider that already had a single Cogent link. That way it does already look like a Tier 2 provider. Also, I don't want the incoming routes filtered, and I see that happening with the rule that you supplied - I want everything on this one to come in and end up in the routing table.
I hope it doesn't sound like I am preaching because obviously you know a lot more about bGP than myself, but at the same time I want to understand why not to do the things that I did.