I've proposed my implementation for this bug and discussed it with bigjools on #launchpad-dev.
The basic strategy is to make the 'private' attribute on IArchivePublic read-only and create a mutator for it (e.g. setPrivate) which will replace the current validator ( _validate_archive_privacy) and add the logic to set 'private' and, if set to True, generate and set the value of the 'buildd_secret' attribute if it does not yet exist.
I've proposed my implementation for this bug and discussed it with bigjools on #launchpad-dev.
The basic strategy is to make the 'private' attribute on IArchivePublic read-only and create a mutator for it (e.g. setPrivate) which will replace the current validator ( _validate_ archive_ privacy) and add the logic to set 'private' and, if set to True, generate and set the value of the 'buildd_secret' attribute if it does not yet exist.