Changeset 3a0ca0f in Klonkt for src/services/guardianship/follows.js
- Timestamp:
- 08/08/2026 08:27:03 PM (4 weeks ago)
- Branches:
- main
- Children:
- ea211b9
- Parents:
- d1075a1
- git-author:
- Robin <roboburr@…> (08/08/2026 08:27:01 PM)
- git-committer:
- roboburr <roboburr@…> (08/08/2026 08:27:03 PM)
- File:
-
- 1 edited
-
src/services/guardianship/follows.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/guardianship/follows.js
rd1075a1 r3a0ca0f 50 50 * send the Accept/Reject. A single reject denies; approvals meet the quorum. 51 51 */ 52 /** 53 * Hoeveel guardians moeten ja zeggen voor een volgverzoek (Barts besluit, 8-8). 54 * 55 * EENVOUDIGE MEERDERHEID: 1 van 1, 1 van 2, 2 van 3, 2 van 4. Bart: "1/2 is 56 * voldoende." 57 * 58 * BEWUST SOEPELER DAN DE POORTDREMPEL, en dat verschil hoort uitgelegd. Een gate 59 * opent een deur voor alles wat daarna komt; die vraagt om een STRIKTE 60 * meerderheid (thresholdFor in gated.js: 2 van 2, 3 van 4). Een volgverzoek gaat 61 * over een persoon, is met ontvolgen terug te draaien, en stond hier tot vandaag 62 * op 'any' -- een enkele ja, hoeveel guardians er ook waren. Dit is dus geen 63 * versoepeling maar een AANSCHERPING voor iedereen met drie of meer guardians. 64 * 65 * De 'all'-stand die hier stond is weg. Hij werd nergens gezet -- elke schrijver 66 * gaf 'any' mee -- dus het was een keuze die niemand kon maken en die alleen in 67 * de weg stond bij het lezen van deze regel. 68 */ 69 export function followThreshold(setSize) { 70 return Math.max(1, Math.ceil(setSize / 2)); 71 } 72 73 /** 74 * Een race naar de drempel, net als de poorttelling: zodra het aantal gehaald 75 * is, is het besluit gevallen. 76 * 77 * TODO (shaer-8vt): wie antwoordt weet niet dat hij de doorslag geeft. Bij 1 van 78 * 2 is de eerste ja meteen de beslissing, en het scherm zegt dat nergens. Dat is 79 * hetzelfde gat als bij de gate-voorstellen en het hoort daar samen opgelost. 80 */ 52 81 export function decide(id, guardianUri, decision, guardiansOfWard) { 53 82 const follow = stmts().get.get(id); … … 61 90 const approvers = new Set(rows.filter((r) => r.decision === 'approve').map((r) => r.guardian_uri)); 62 91 const guardians = (guardiansOfWard || []).filter(Boolean); 63 const enough = follow.quorum === 'all' 64 ? guardians.length > 0 && guardians.every((g) => approvers.has(g)) 65 : approvers.size >= 1; // 'any' (default) 92 const enough = approvers.size >= followThreshold(guardians.length); 66 93 if (enough) { 67 94 stmts().setStatus.run('accepted', id);
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)