Changeset 7e53594 in Klonkt for src/services/guardianship


Ignore:
Timestamp:
08/10/2026 03:53:26 AM (4 weeks ago)
Author:
Bart <bart@…>
Branches:
main
Children:
0db3c72
Parents:
f06ed56
Message:

shaer:log: het logboek staat naast de wachtrijen, niet erin

De apps konden er niet bij. Het logboek zat achter /guardian/api/events, een
PWA-route, dus een ward kon niet lezen waarom haar eigen aanbod geweigerd was --
en dat is precies de helft die §4.2 eist.

Eigen sleutel op de actor, GET /ap/users/:slug/log, dezelfde eigenaar-only
bearer als de wachtrijen. Bewust niet onder shaer:queues: alles daar wacht op
een antwoord en dit is wat er al besloten is. Geschiedenis onderbrengen bij een
woord dat "wachtend" betekent maakt van twee dingen één, en dat is de fout die
deze module vandaag drie keer heeft opgeruimd.

type is 'shaer:Event' en geen AS2-werkwoord. De meeste soorten zijn er geen: een
lapse-stem of een opgepakte hulpvraag is geen Accept, en het zo noemen zou
netter lezen dan het is.

Clients vinden hem via het actor-document, niet via een pad dat ze zelf
verzinnen (shaer-qa0). De AS2-test viel netjes om tot shaer:log was aangemeld --
tweede keer vandaag dat die het vangt.

De daemon volgt (shaer-6d9): zolang die geen shaer:log serveert, liegt een
client die tegen beide praat over een van de twee.

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

Location:
src/services/guardianship
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/services/guardianship/index.js

    rf06ed56 r7e53594  
    1919export { wireDelivery, c2sVisibility, deliverDirectNote } from './delivery.js';
    2020export { wireHandshake, handleOutbox as handleGuardianshipOutbox, handleInbox as handleGuardianshipInbox, parseRelationship, parseUndoRelationship, endGuardianship } from './handshake.js';
    21 export { offersCollection, followsCollection, outgoingFollowsCollection, wardsCollection, guardiansCollection, helpCollection } from './queues.js';
     21export { offersCollection, followsCollection, outgoingFollowsCollection, logCollection, wardsCollection, guardiansCollection, helpCollection } from './queues.js';
    2222export * as availability from './availability.js';
    2323export { wireAvailability } from './availability.js';
  • src/services/guardianship/queues.js

    rf06ed56 r7e53594  
    118118}
    119119
    120 export default { offersCollection, followsCollection, outgoingFollowsCollection, wardsCollection, guardiansCollection, helpCollection, helpItemsFor, wardGates, wardGuardianStatuses };
     120/**
     121 * Het logboek (§4.2): wat er is besloten, en waarom.
     122 *
     123 * Geen wachtrij, en daarom een eigen sleutel op de actor. Elk item draagt zijn
     124 * soort en, als die er was, de REDEN -- want zonder die reden merkte een ward
     125 * een weigering alleen doordat er iets uit een lijst verdween.
     126 *
     127 * `type` is geen AS2-werkwoord: de meeste soorten zijn er geen. Een lapse-stem
     128 * of een opgepakte hulpvraag is geen Accept, en het zo noemen zou netter lezen
     129 * dan het is.
     130 *
     131 * De lezer levert `listEvents` aan; deze module kent ActivityPubService niet en
     132 * houdt dat zo (zie de kop van delivery.js).
     133 */
     134export function logCollection(id, slug, listEvents) {
     135  const items = (typeof listEvents === 'function' ? listEvents(slug) : []).map((e) => {
     136    const { id: n, kind, created, ...rest } = e;
     137    const item = { id: `${id}/${n}`, type: 'shaer:Event', 'shaer:kind': kind, published: created };
     138    for (const [k, v] of Object.entries(rest)) {
     139      if (v === undefined || v === null) continue;
     140      item[k.startsWith('shaer:') ? k : `shaer:${k}`] = v;
     141    }
     142    return item;
     143  });
     144  return collection(id, items);
     145}
     146
     147export default { offersCollection, followsCollection, outgoingFollowsCollection, wardsCollection, guardiansCollection, helpCollection, helpItemsFor, wardGates, wardGuardianStatuses, logCollection };
    121148
    122149// ── Wat er voor een ward gated is (shaer-ahy.1) ─────────────────────────
  • src/services/guardianship/relations.js

    rf06ed56 r7e53594  
    8282      help: `${id}/queues/help`,
    8383    },
     84    // NAAST de wachtrijen, niet erin. Alles onder shaer:queues wacht op een
     85    // antwoord; dit is wat er al besloten is, met de reden erbij (§4.2).
     86    // Geschiedenis onderbrengen bij een woord dat "wachtend" betekent maakt van
     87    // twee dingen één, en dat is precies de fout die de rest van deze module
     88    // net heeft opgeruimd.
     89    'shaer:log': `${id}/log`,
    8490  };
    8591  const guardians = listGuardians(slug).map((r) => r.other_uri);
Note: See TracChangeset for help on using the changeset viewer.