Changeset abbb72a in Klonkt


Ignore:
Timestamp:
08/11/2026 04:20:01 PM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
26b1848
Parents:
8b83cba
Message:

De markering bereikte de mede-guardian nooit (shaer-lgo)

Gevonden door met de ECHTE relatie te kijken in plaats van met een test.
dev.klonkt.com is guardian van @mee@…, en zij heeft er
nog een: boiert.eu. In ap_help_state staan vier afgehandelde hulpvragen van haar
-- en elke markering is van dev zelf. Nooit een van boiert, en dev heeft er ook
nooit een naartoe gestuurd.

De oorzaak stond in de markeerroute:

listGuardians(wardUri.replace(/.*\/ap\/users\, ))

De staart van de URI als slug. listGuardians kent alleen relaties van LOKALE
sites, dus voor een ward elders was dat altijd een lege lijst. Nagemeten op dev:
de regex geeft "mee", er is geen site "mee", de lijst is leeg. De markering ging
dus alleen naar het kind.

En juist die ward is het hele punt: een ward op je eigen instance heeft geen
federatie nodig. Dit is precies de faalstand waar deze bead voor bestaat --
iedereen denkt dat de ander het oppakt -- en hij was stil, want er komt geen
fout uit een lege lijst.

Erger nog: had er toevallig een lokale site met die naam bestaan, dan waren het
DIENS guardians geweest.

existingGuardiansOf in handshake.js kende de goede weg al: lokaal opzoeken, en
anders shaer:guardians uit de actor van de ward. Die stond alleen niet aan deze
route vast. Nu geexporteerd en aangesloten -- geen tweede afleiding erbij, de
bestaande gebruikt.

Drie tests, met de oude fout als eerste erin vastgelegd zodat hij niet
terugsluipt. De actor wordt met een nepversie opgehaald: anders test het of de
testmachine internet heeft.

Co-Authored-By: Claude Opus 5 <noreply@…>

Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • src/routes/guardian.js

    r8b83cba rabbb72a  
    433433  Guardianship.help.record(noteUri, me, kind, null);
    434434
    435   const anderen = Guardianship.listGuardians(wardUri.replace(/.*\/ap\/users\//, '')) || [];
    436   const ontvangers = [wardUri, ...anderen.map((g) => g.other_uri)].filter((u) => u && u !== me);
     435  // DE MEDE-GUARDIANS, en dit ging mis (shaer-lgo, gevonden 11-8 met @mee).
     436  //
     437  // Hier stond listGuardians(wardUri.replace(/.*\/ap\/users\//, '')): de staart
     438  // van de URI als slug. listGuardians kent alleen relaties van LOKALE sites,
     439  // dus voor een ward elders leverde dat altijd een lege lijst -- en juist die
     440  // ward is het hele punt, want een ward op je eigen instance heeft geen
     441  // federatie nodig. De markering ging dus alleen naar het kind en nooit naar
     442  // de andere guardian. Precies de faalstand waar deze bead voor bestaat:
     443  // iedereen denkt dat de ander het oppakt.
     444  //
     445  // Erger nog: had er toevallig een lokale site met die naam bestaan, dan
     446  // waren het DIENS guardians geweest.
     447  //
     448  // existingGuardiansOf kende de goede weg al -- lokaal opzoeken, en anders
     449  // shaer:guardians uit de actor van de ward. Die stond alleen niet aan deze
     450  // route vast.
     451  const anderen = await Guardianship.existingGuardiansOf(wardUri).catch(() => []);
     452  const ontvangers = [wardUri, ...anderen].filter((u) => u && u !== me);
    437453  const r = await AP.deliverDirectNote(site, {
    438454    recipients: ontvangers,
  • src/services/guardianship/handshake.js

    r8b83cba rabbb72a  
    8787}
    8888
    89 /** The existing guardians of a ward: local list, or the remote actor's shaer:guardians. */
    90 async function existingGuardiansOf(wardUri) {
     89/**
     90 * The existing guardians of a ward: local list, or the remote actor's
     91 * shaer:guardians.
     92 *
     93 * Geexporteerd sinds shaer-lgo: de markeerroute had zijn EIGEN afleiding, en
     94 * die was fout voor precies het geval dat telt (zie routes/guardian.js).
     95 */
     96export async function existingGuardiansOf(wardUri) {
    9197  const local = deps.localSlug(wardUri);
    9298  if (local) return relations.listGuardians(local).map((r) => r.other_uri);
     
    627633}
    628634
    629 export default { wireHandshake, handleOutbox, handleInbox, parseRelationship, parseUndoRelationship, endGuardianship, retryDeferred };
     635export default { wireHandshake, handleOutbox, handleInbox, parseRelationship, parseUndoRelationship, endGuardianship, retryDeferred, existingGuardiansOf };
  • src/services/guardianship/index.js

    r8b83cba rabbb72a  
    1818export { helpRequestProps, isHelpRequest, waveProps, isWave, awayProps, hasGuardiansProps, objectHasGuardians, externalEmbedsAllowed, externalPlaybackAllowed, wardGateAllowed } from './notes.js';
    1919export { wireDelivery, c2sVisibility, deliverDirectNote } from './delivery.js';
    20 export { wireHandshake, handleOutbox as handleGuardianshipOutbox, handleInbox as handleGuardianshipInbox, parseRelationship, parseUndoRelationship, endGuardianship } from './handshake.js';
     20export { wireHandshake, handleOutbox as handleGuardianshipOutbox, handleInbox as handleGuardianshipInbox, parseRelationship, parseUndoRelationship, endGuardianship, existingGuardiansOf } from './handshake.js';
    2121export { offersCollection, followsCollection, outgoingFollowsCollection, logCollection, wardsCollection, guardiansCollection, helpCollection } from './queues.js';
    2222export * as availability from './availability.js';
Note: See TracChangeset for help on using the changeset viewer.