Deep investigation (three parallel traces) overturned the domain-claim
hypothesis. The claim/proof is persisted and converges (and the group
proof is Nothing anyway), so it cannot cause a perpetual repeat. By
elimination the only non-convergent Eq field is publicGroupId:
updateGroupProfile omits public_group_id from its UPDATE (unlike the two
INSERT paths and updateRelayGroupKeys), so a directory whose stored
public_group_id is NULL can never converge with the link's populated
publicGroupId -> groupUpdated true every 30 min -> re-approval on repeat.
Fix: add public_group_id = COALESCE(public_group_id, ?) to
updateGroupProfile (populate-if-null, never change/erase an immutable
identity). Converges the profiles, stopping re-approval, as a general
core completeness fix. Alternative (scope the moderation comparison) only
hides the symptom.