It seems like the “public” field has disappeared from the Project API responses. Both for listing projects (when including public in the opt_fields parameter) and for when fetching a single project by id.
I can’t see anything in the changelog, and the field is still listed in the schema.
The changes seems to have happened in the last week or so.
That change was announced here but went out ahead of schedule (you can opt out of the change starting in May). Sorry about that. It’s been rolled back for now, but you can prepare for the upcoming change by:
Migrating to the privacy_setting field
Give yourself more time to make the change (August) by adding the header Asana-Disable: project_privacy_setting