Index: src/routes/guardian.js
===================================================================
--- src/routes/guardian.js	(revision abbb72a2d108bc5a3d5d84e3ddb6f81ca6a51427)
+++ src/routes/guardian.js	(revision 26b1848308ffb57c42a26f8fb51f9337e6ed001c)
@@ -431,5 +431,9 @@
   // Onze eigen kopie meteen, zonder op bezorging te wachten: het scherm van
   // degene die klikt hoort niet te liegen omdat een andere server traag is.
-  Guardianship.help.record(noteUri, me, kind, null);
+  // MET onze eigen handle. Die stond hier op null, en "door wie" was juist de
+  // hele vraag van deze bead: een binnengekomen markering draagt de handle van
+  // de afzender wel, dus onze EIGEN rij was de enige zonder naam. Op het scherm
+  // viel dat terug op de kale URI.
+  Guardianship.help.record(noteUri, me, kind, AP.deriveHandle(me));
 
   // DE MEDE-GUARDIANS, en dit ging mis (shaer-lgo, gevonden 11-8 met @mee).
Index: src/services/ActivityPubService.js
===================================================================
--- src/services/ActivityPubService.js	(revision abbb72a2d108bc5a3d5d84e3ddb6f81ca6a51427)
+++ src/services/ActivityPubService.js	(revision 26b1848308ffb57c42a26f8fb51f9337e6ed001c)
@@ -1338,5 +1338,5 @@
   return m ? decodeURIComponent(m[1]) : null;
 }
-function deriveHandle(actorUri) {
+export function deriveHandle(actorUri) {
   try { const u = new URL(actorUri); const seg = u.pathname.split('/').filter(Boolean).pop() || ''; return `@${seg}@${u.host}`; } catch { return String(actorUri || ''); }
 }
@@ -3204,5 +3204,10 @@
           if (mark) {
             const base2 = (process.env.PUBLIC_BASE_URL || '').replace(/\/+$/, '');
-            Guardianship.help.record(mark.noteUri, actorId(base2, site.slug), mark.kind, `@${site.slug}`);
+            // Met de VOLLEDIGE handle. Hier stond `@${site.slug}` -- zonder host,
+            // dus een derde vorm naast de kale URI van de PWA-route en de echte
+            // handle die een binnengekomen markering draagt. Drie spellingen van
+            // dezelfde naam, en "door wie" was de hele vraag van shaer-lgo.
+            const mij = actorId(base2, site.slug);
+            Guardianship.help.record(mark.noteUri, mij, mark.kind, deriveHandle(mij));
           }
           const r = await deliverDirectNote(site, { recipients, text: plain, language: object.language || null, inReplyTo: typeof object.inReplyTo === 'string' ? object.inReplyTo : null, attachments: atts, helpRequest: help, awayUntil, gateRequest: gateReq && gateReq.feature, helpMark: mark });
Index: test/help-c2s.test.js
===================================================================
--- test/help-c2s.test.js	(revision abbb72a2d108bc5a3d5d84e3ddb6f81ca6a51427)
+++ test/help-c2s.test.js	(revision 26b1848308ffb57c42a26f8fb51f9337e6ed001c)
@@ -58,4 +58,15 @@
   // markering.
   assert.equal(h.state.open, true);
+});
+
+test('onze EIGEN markering draagt onze eigen handle', () => {
+  // "Door wie" was de hele vraag van deze bead. Een binnengekomen markering
+  // draagt de handle van de afzender wel; onze eigen rij stond op null en viel
+  // op het scherm terug op de kale URI. Gezien op 11-8 in de echte data naast
+  // een rij van boiert.eu, die zijn handle wel had.
+  const coll = queues.helpCollection('https://x/queues/help', 'oma');
+  const item = coll.orderedItems.find((i) => i.id === BOEI);
+  assert.deepEqual(item['shaer:pickedUpBy'], ['@oma@oma.test'],
+    'een handle en geen URI');
 });
 
