Ignore:
Timestamp:
08/08/2026 08:42:09 PM (4 weeks ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
29eb745
Parents:
3a0ca0f
git-author:
Robin <roboburr@…> (08/08/2026 08:41:47 PM)
git-committer:
roboburr <roboburr@…> (08/08/2026 08:42:09 PM)
Message:

Je hoort te weten dat je de doorslag geeft (shaer-8vt)

De telling is een race naar de drempel: zodra het aantal gehaald is, is het
besluit gevallen. Bij 2 van 3 is de tweede ja meteen de beslissing -- en sinds
Barts meerderheidsbesluit van vandaag is bij een volgverzoek met twee guardians
de EERSTE ja dat al. Wie antwoordde wist dat niet, en het scherm zei het nergens.

Dat kon niet, en waarom niet was de vondst bij shaer-nf9: gatedProgress werkt op
een LOKALE slug en er zijn geen lokale wards. De telling loopt op de server van
het kind, en die stuurde hem niet mee. Nu wel: shaer:decisive reist mee met de
doorgestuurde Offer, voor gate-voorstellen en voor volgverzoeken in beide
richtingen.

EEN JA/NEE, GEEN TELLING, en dat is een besluit. Een getal ("1 van 2") reist mee,
veroudert onderweg en leest daarna als een feit; de beschikbare set schuift met
3.6 bovendien mee. En hoeveel guardians een kind heeft, en wie er al gestemd
heeft, is niet vanzelf iets dat elke mede-guardian hoort te zien. Een
waarschuwing veroudert ook, maar hij CLAIMT niets -- en dat scheelt.

BIJ TWIJFEL WAARSCHUWEN. Ontbreekt het veld (een oudere server), dan zeggen we
dat je beslist. De twee fouten zijn niet gelijk: zeggen dat je beslist terwijl
dat niet zo is maakt iemand voorzichtiger dan nodig; niets zeggen terwijl hij wel
beslist laat hem het onwetend doen. Daar staat een toets op, en de mutatie die
ertoe doet -- onbekend als "je beslist niets" lezen -- maakt hem rood.

Eerlijk over de mutatietest: mijn eerste poging (de Number.isFinite-guards
weghalen) gaf nul fouten, want die geven voor undefined dezelfde uitkomst. De
regel bijt wel tegen de realistische verkeerde versie.

Zes toetsen, drie talen. Suite 747/747.

File:
1 edited

Legend:

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

    r3a0ca0f rea211b9  
    428428            // the same way. Who proposed it rides along separately, for the
    429429            // guardian's screen.
     430            // Zou DIT antwoord het besluit afmaken (shaer-8vt)? De telling loopt
     431            // hier, op de server van het kind, en nergens anders -- zonder dit
     432            // veld kan een guardian elders onmogelijk weten dat hij de doorslag
     433            // geeft. Een ja/nee en geen getal: zie isDecisive.
     434            const p = gated.gatedProgress(site.slug, gs.feature);
    430435            deps.deliverTo(site, g, {
    431436              id: offerId, type: 'Offer', actor: me, to: [g], object: activity.object,
    432437              'shaer:proposer': actor,
     438              'shaer:decisive': gated.isDecisive(p.votes, p.need),
    433439            }).catch(() => { /* the delivery queue retries */ });
    434440          }
     
    450456          proposer: (typeof activity['shaer:proposer'] === 'string' ? activity['shaer:proposer'] : actor),
    451457          feature: gs.feature, value: gs.value,
     458          // Ontbreekt het veld (een oudere server), dan WAARSCHUWEN we: niets
     459          // zeggen terwijl je beslist is de gevaarlijke kant (shaer-8vt).
     460          decisive: activity['shaer:decisive'] !== false,
    452461        });
    453462        notify(site.slug, { kind: 'gated_review', feature: gs.feature, value: gs.value, ward: gs.ward });
Note: See TracChangeset for help on using the changeset viewer.