He may well have. Facing the deadline for submitting his deal with Mexico to Congress on Friday, he did so. However, he did so without Canada signed on, the apparently intense negotiations in Washington between Canadian Foreign Minister, Chrystia Freeland and US Trade Representative, Robert Lighthizer having failed to come to an agreement. With both the Mexican leaders and major Republican senators saying they will not approve without Canada on board, this makes for a very dicey situation. There is still time: the ultimate deadline for having a fully detailed agreement to the Senate in time for it to approve it prior to the change of Mexican government on Dec. 1 is Sept. 29. So if US and Canadian leaders can come to an agreement by then in full details, it might still fly.
Needless to say, it looks like the giant fly in the ointment is Donald Trump. Lighthizer is hardline, but experienced in trade negotiations, and Freeland is highly competent by all accounts. There is even an obvious deal to be made if each side is willing to give. The two hardest issues seem to involve the dairy industry and the lumber industry. Dairy has always been outside of NAFTA because it is so difficult, and Trump has made demands on the Canadians to loosen and let in more US dairy products. OTOH, lumber involves the dispute resolution mechanism, which is easy to invoke, and the US regularly does so to block Canadian imports on grounds of alleged dumping. There have been rumbles of possible give on each side, Canadians give some on dairy and US gives some on lumber. It is just obvious (there are also issues of patents and the steel and aluminum tariffs, but these seem minor compared to the politically fraught dairy and lumber issues).