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@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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) ─────────────────────────
Note: See TracChangeset for help on using the changeset viewer.