Index: src/services/guardianship/delivery.js
===================================================================
--- src/services/guardianship/delivery.js	(revision 1976a10651190870204ece7644503a90a3a47a45)
+++ src/services/guardianship/delivery.js	(revision 3e7dde2b4f2346227507fb54dc8dfc774722b25f)
@@ -42,4 +42,11 @@
 // call-for-help path).
 export async function deliverDirectNote(site, { recipients, text, html, language, inReplyTo, attachments, helpRequest, wave, awayUntil, helpMark, gateRequest }) {
+  // EEN MARKERING IS EEN ANTWOORD op de hulpvraag waar hij over gaat (Barts
+  // vraag, 26-8: "welke context heeft 'Ik kijk hiernaar' als ik erop klik?" --
+  // geen). De verwijzing reisde al mee als shaer:-veld, maar dat veld haalt de
+  // berichtenlezing niet, en de tik-route van de clients volgt inReplyTo.
+  // Dus zeggen we het ook in gewoon AS2: dan opent een tik de draad met de
+  // schermafdruk erbij, en threaden andere fediverse-servers hem net zo goed.
+  if (!inReplyTo && helpMark && helpMark.noteUri) inReplyTo = helpMark.noteUri;
   const { actorId, fetchActor, localActor, deliverTo, deriveHandle, escHtml, linkUrls, linkHashtags,
           getOutboxRow, buildReplyNote, AP_CONTEXT, getOrCreateKeys, deliver, enqueueDelivery } = deps;
Index: src/services/guardianship/help.js
===================================================================
--- src/services/guardianship/help.js	(revision 1976a10651190870204ece7644503a90a3a47a45)
+++ src/services/guardianship/help.js	(revision 3e7dde2b4f2346227507fb54dc8dfc774722b25f)
@@ -136,4 +136,8 @@
   return {
     id, type: 'Note', attributedTo: me, to,
+    // Ook als antwoord, in gewoon AS2 (26-8): de markering gaat ergens over,
+    // en inReplyTo is hoe je dat zegt zonder dialect. Zie deliverDirectNote,
+    // die dit voor de echte bezorging net zo doet.
+    inReplyTo: noteUri,
     [k === 'handled' ? 'shaer:helpHandled' : 'shaer:helpPickup']: noteUri,
     content: k === 'handled'
Index: test/help-marker-context.test.js
===================================================================
--- test/help-marker-context.test.js	(revision 3e7dde2b4f2346227507fb54dc8dfc774722b25f)
+++ test/help-marker-context.test.js	(revision 3e7dde2b4f2346227507fb54dc8dfc774722b25f)
@@ -0,0 +1,79 @@
+// Een markering op een hulpvraag draagt zijn context (26-8).
+//
+// Barts vraag: in Berichten staat "Ik kijk hiernaar." maar een tik erop geeft
+// niets -- welke context heeft dat bericht? Geen, bleek: de verwijzing reisde
+// alleen als shaer:-veld, en dat veld haalt de berichtenlezing niet. De
+// tik-route van de clients volgt inReplyTo, en die stond er niet op.
+//
+// Deze toets legt het contract vast op de plek die alle wegen delen:
+// deliverDirectNote. De guardian-knop en het C2S-pad komen daar allebei doorheen.
+import { test } from 'node:test';
+import assert from 'node:assert/strict';
+
+process.env.DATABASE_PATH = ':memory:';
+process.env.PUBLIC_BASE_URL = 'https://test.example';
+
+const dbMod = await import('../src/config/database.js');
+const db = dbMod.default;
+dbMod.initializeDatabase();
+const AP = (await import('../src/services/ActivityPubService.js')).default;
+const help = (await import('../src/services/guardianship/help.js')).default;
+
+const BASE = 'https://test.example';
+db.prepare('INSERT INTO users (id, username, email, password_hash, role) VALUES (?,?,?,?,?)')
+  .run('u1', 'u1', 'u1@t', 'x', 'god');
+db.prepare('INSERT INTO sites (id, slug, title, owner_id, is_primary) VALUES (?,?,?,?,1)')
+  .run('s1', 'oppas', 'Oppas', 'u1');
+db.prepare('INSERT INTO sites (id, slug, title, owner_id, is_primary) VALUES (?,?,?,?,0)')
+  .run('s2', 'kind', 'Kind', 'u1');
+const site = db.prepare('SELECT * FROM sites WHERE slug = ?').get('oppas');
+
+const HULPVRAAG = 'https://elders.test/notes/help-123';
+
+test('de oppak-markering is een antwoord op de hulpvraag', async () => {
+  // Naar een LOKALE ontvanger: dan loopt de bezorging over de loopback en
+  // raakt deze toets geen netwerk.
+  const r = await AP.deliverDirectNote(site, {
+    recipients: [`${BASE}/ap/users/kind`],
+    text: 'Ik kijk hiernaar.',
+    helpMark: { kind: 'pickup', noteUri: HULPVRAAG },
+  });
+  assert.ok(r && r.id, 'bezorging levert een id');
+
+  // De outbox-rij: inReplyTo hoort op de hulpvraag te staan, ook al gaf de
+  // aanroeper hem niet mee. Dat is de hele reparatie.
+  const rij = db.prepare('SELECT in_reply_to FROM ap_outbox WHERE id = ?').get(r.id);
+  assert.equal(rij.in_reply_to, HULPVRAAG);
+
+  // En de note die de deur uit gaat zegt het in gewoon AS2.
+  const note = AP.buildReplyNote(BASE, site, db.prepare('SELECT * FROM ap_outbox WHERE id = ?').get(r.id));
+  assert.equal(note.inReplyTo, HULPVRAAG);
+});
+
+test('een meegegeven inReplyTo wint van de markering', async () => {
+  // Wie expliciet ergens op antwoordt, antwoordt daarop. De markering vult
+  // alleen het gat.
+  const r = await AP.deliverDirectNote(site, {
+    recipients: [`${BASE}/ap/users/kind`],
+    text: 'Deze hulpvraag is afgehandeld.',
+    inReplyTo: 'https://elders.test/notes/iets-anders',
+    helpMark: { kind: 'handled', noteUri: HULPVRAAG },
+  });
+  const rij = db.prepare('SELECT in_reply_to FROM ap_outbox WHERE id = ?').get(r.id);
+  assert.equal(rij.in_reply_to, 'https://elders.test/notes/iets-anders');
+});
+
+test('een gewoon bericht krijgt er geen inReplyTo bij', async () => {
+  const r = await AP.deliverDirectNote(site, {
+    recipients: [`${BASE}/ap/users/kind`],
+    text: 'gewoon een berichtje',
+  });
+  const rij = db.prepare('SELECT in_reply_to FROM ap_outbox WHERE id = ?').get(r.id);
+  assert.equal(rij.in_reply_to, null);
+});
+
+test('markerNote zelf draagt de verwijzing ook als inReplyTo', () => {
+  const n = help.markerNote({ id: 'x', me: 'https://g/u/a', noteUri: HULPVRAAG, kind: 'pickup', to: ['https://w/u/k'] });
+  assert.equal(n.inReplyTo, HULPVRAAG);
+  assert.equal(n['shaer:helpPickup'], HULPVRAAG);
+});
