2 points I'd like to make on this:
1 - Treaties are undemocratic. The idea that one legislature can sign an agreement that ties all future legislatures is democratically wrong. It is legislation without representation (as the current legislature have only been voted for by the current population, they can not represent the future). Treaties should only be on one-off instances (like a peace treaty, or something), or severely time limited (like a cap of 5 years)... and even then, a new legislature should be able to block the treaty, if they so wish.
2 - Neither the USA nor Canada should partake in trade for political reasons. Canada should not sell oil to America to support their interests (indeed, the entire oil market should be private, anyway, I don't see why the Canadian government should be getting involved), nor should the USA institute a "Buy American" clause, it should just look for deals that are most cost-effective, particularly when having a $1.2tn deficit.