Sorry for the alarm, this turned out to be a case of user error. It was that darn triggered data change violation again. Specifically, I was calling acs_permission__add_child multiple times in a single plpgsql function, and somehow didn't notice the error that resulted (
ERROR: triggered data change violation on relation "acs_privilege_hierarchy_index"
). So there were no entries in acs_privilege_hierarchy for the bboard permissions.
After removing the transactional context around my calls to acs_permission__add_child, the data model was set up correctly and both the problems I mentioned above went away.