Hi Dave,
Below is my understanding of this issue:
In ALTER DEFAULT PRIVLEGES statement, "FOR ROLE <target_name> "part is missing.
as per postgresql documentation target_name should follow below rule:
target_name:
The name of an existing role of which the current role is a member. If FOR ROLE is omitted, the current role is assumed.
So target_name should be owner of this schema which is "foo".
Please let me know if I am right in my understanding or something is missing.