Changeset 7c38a09 in Klonkt for tools


Ignore:
Timestamp:
08/08/2026 09:40:15 PM (4 weeks ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
f3c7a05
Parents:
a4b903a
git-author:
Robin <roboburr@…> (08/08/2026 09:40:13 PM)
git-committer:
roboburr <roboburr@…> (08/08/2026 09:40:15 PM)
Message:

De testkudde mag zelf geen bron van twijfel zijn (shaer-6wt)

Barts opdracht: zoeken aan de kant van de daemon. Dat leverde geen fout in de
handshake op, maar wel twee dingen die het ONDERZOEK onbetrouwbaar maakten.

HET BEWIJS KLOPTE ZELF NIET. /log toonde een Follow die state.json niet kende: er
werd alleen weggeschreven in takken die toch al iets bewaarden. Bij een kudde die
je gebruikt om een fout te vinden is dat het ergste wat er is -- dan zoek je in
bewijs dat zelf niet deugt. Elke regel gaat nu meteen naar schijf.

En UITGAAND wordt nu ook genoteerd, met de statuscode erbij. "Hij stuurde een
Accept" was tot dat moment een aanname; nu staat er dat dev er 202 op gaf, en pas
daarmee is de daemon-kant echt uitgesloten.

MIJN ACCEPT WEEK AF VAN KLONKT: ik stuurde het hele Offer als object, Klonkt
stuurt daar een id-string. Het gedrag verandert er niet van, maar een testkudde
die er anders uitziet dan een echte implementatie laat je een verschil
onderzoeken dat je zelf hebt gemaakt.

Wat het spoor nu zegt, en dat is nog een LEAD en geen conclusie: dev commit wel
(het volgt de ward) maar stuurt zijn afsluitende Accept niet, dus de ward houdt
een lege shaer:guardians. In handshake.js doet de uitgaande accept-tak een
recordAccept EN een fanout; de inkomende tak op regel 600 alleen recordAccept en
maybeCommit. Waarom het bij @mee wel lukte is nog onverklaard, en zonder die
verklaring is een fix een gok.

Los daarvan: er staat nu een start.sh. De farm stierf drie keer mee met mijn
ssh-sessie, en twee van die keren zocht ik naar een fout terwijl er domweg niets
draaide.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/ward-farm/farm.mjs

    ra4b903a r7c38a09  
    124124// bij zodat deze code nooit ergens anders terechtkomt.
    125125
     126/**
     127 * Alles wat er gebeurt, en meteen naar schijf.
     128 *
     129 * Stond eerst los: een push in het geheugen, en wegschrijven alleen in de takken
     130 * die toch al iets bewaarden. Gevolg: /log en state.json spraken elkaar tegen --
     131 * de een had een Follow die de ander niet kende. Bij een testkudde die je gebruikt
     132 * om een fout te vinden is dat het ergste wat je kunt hebben: dan zoek je in
     133 * bewijs dat zelf niet klopt.
     134 */
     135function noteer(w, regel) {
     136  w.log.push({ at: new Date().toISOString(), ...regel });
     137  if (w.log.length > 80) w.log = w.log.slice(-80);
     138  bewaarStaat(staat);
     139}
     140
    126141async function verwerkInbox(w, activity) {
    127142  const type = Array.isArray(activity.type) ? activity.type[0] : activity.type;
    128143  const actor = typeof activity.actor === 'string' ? activity.actor : (activity.actor && activity.actor.id);
    129   w.log.push({ at: new Date().toISOString(), type, actor });
    130   if (w.log.length > 50) w.log = w.log.slice(-50);
     144  noteer(w, { type, actor });
    131145
    132146  const o = activity.object;
     
    146160      try {
    147161        const inbox = await inboxVan(doel);
    148         await bezorg(w, inbox, {
     162        const code = await bezorg(w, inbox, {
    149163          '@context': ['https://www.w3.org/ns/activitystreams', { shaer: 'https://shaer.klonkt.com/ns#' }],
    150164          id: `${uriVan(w.naam)}/accepts/${crypto.randomUUID()}`,
    151           type: 'Accept', actor: uriVan(w.naam), to: aan, object: activity,
     165          // `object` is de OFFER-ID, niet het hele Offer. Zo stuurt Klonkt hem
     166          // ook (fanout in handshake.js), en een testkudde die er net anders
     167          // uitziet dan een echte implementatie laat je een verschil onderzoeken
     168          // dat je zelf gemaakt hebt.
     169          type: 'Accept', actor: uriVan(w.naam), to: aan, object: activity.id,
    152170        });
    153       } catch (e) { w.log.push({ at: new Date().toISOString(), fout: String(e.message) }); }
     171        // De statuscode erbij. "Hij stuurde een Accept" is een aanname zolang je
     172        // niet weet wat de andere kant ervan vond.
     173        noteer(w, { verstuurd: 'Accept', naar: doel, code });
     174      } catch (e) { noteer(w, { fout: String(e.message), naar: doel }); }
    154175    }
    155176    bewaarStaat(staat);
     
    250271    let uit = 'onleesbaar';
    251272    try { uit = await verwerkInbox(w, JSON.parse(body)); }
    252     catch (e) { w.log.push({ at: new Date().toISOString(), fout: String(e.message) }); }
     273    catch (e) { noteer(w, { fout: String(e.message) }); }
    253274    // 202 hoe dan ook: een inbox die 4xx geeft op iets dat hij niet kent laat de
    254275    // afzender eindeloos opnieuw proberen.
Note: See TracChangeset for help on using the changeset viewer.