Cross-instance follow-goedkeuring, gemodelleerd op de guardian-offer (§5.3)
Guardians die op een andere instance wonen kunnen nu een gated follow goedkeuren.
Zelfde gedistribueerde patroon als de adoptie-offer: de ward forwardt de follow
naar z'n guardians als een Offer(Follow); elke guardian houdt een kopie en ziet
'm in /guardian2; de guardian antwoordt met Accept/Reject naar de ward; de ward
telt quorum (bestaande follows.decide) en stuurt de gewone Accept(Follow) naar de
volger. Lokale guardians blijven zoals ze waren (push + lokale beslissing, geen
forwarding). Alles achter de shaer:followApproval-marker, dus normaal verkeer
onaangeroerd.
Changed files:
src/services/ActivityPubService.js
- gate: remote guardian krijgt Offer(Follow) (leg 1); lokale guardian push
- handleFollowApprovalInbox: Offer(Follow) -> review (leg 2), Accept/Reject -> decide+commit (leg 4)
- sendFollowDecision: guardian stuurt beslissing naar de ward (leg 3)
- dispatch-tak op shaer:followApproval vóór de handshake-dispatch
src/services/guardianship/follows.js
- guardian-side review-store (recordReview/getReview/listReviews/removeReview)
src/config/database.js
- ap_follow_reviews (PK slug,id): de guardian-kopie van een remote-ward-follow
src/routes/guardian2.js
- follow-requests toont ook reviews (remote); approve op een review = sendFollowDecision
test/follow-gating.test.js
remarks: npm test 171/171. Spec-clausule §5.3 toegevoegd (forwarding gemodelleerd
op §3). Lokale/co-located flow ongewijzigd.
-robo
Co-Authored-By: Claude Opus 4.8 <noreply@…>