Changeset 72d8eff in Klonkt for src/assets/js/guardian.js


Ignore:
Timestamp:
08/07/2026 07:16:27 PM (5 weeks ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
a66266d
Parents:
01fb44f
git-author:
Robin <roboburr@…> (08/07/2026 07:16:25 PM)
git-committer:
roboburr <roboburr@…> (08/07/2026 07:16:27 PM)
Message:

De gate-stand komt uit de besluiten, want er zijn geen lokale accounts

Barts correctie, en hij raakt twee dingen die ik fout had.

ER ZIJN GEEN LOKALE ACCOUNTS. wardGateSetting() leest de kolom alleen als de ward
op onze eigen base staat, en met een Klonkt per gebruiker woont elke ward elders.
Die functie gaf dus voor IEDERE ward null, en het gate-paneel toonde overal
"onbekend". Ik noemde dat een randgeval terwijl het het enige geval is.

EN DE GUARDIAN WEET HET WEL: hij kreeg de uitslag van het besluit door.
ap_gated_sent bewaart per voorstel de feature, de waarde en de uitkomst, dus een
geaccepteerd voorstel met waarde true IS de stand. knownSetting() leest dat.

Drie standen in plaats van twee. "Uit" en "voor zover wij weten uit" zijn niet
hetzelfde: dat tweede betekent dat niemand er ooit over besloot, en dat hoort
niet te lezen als een genomen besluit. De rij draagt nu decided en het scherm
zegt "uit (nog niets over besloten)".

Daarmee vervalt ook het gat dat ik een commit eerder noteerde: de richting van de
voorstelknop volgt nu een BEKENDE stand, dus voor een ward elders kun je ook
DICHTZETTEN voorstellen. Dat was precies de veilige richting die ontbrak.

De trap blokkeert alleen op een BESLOTEN dicht, niet op de standaard. Anders kan
afspelen nooit als eerste voorgesteld worden, en zo ging er ooit een hele
voorstelronde de verkeerde gate in.

BEKEND GAT, in het commentaar bij knownSetting gezet en niet hier opgelost: dit
ziet alleen onze EIGEN voorstellen. Antwoordde je op dat van een mede-guardian,
dan komt de uitslag wel binnen (gated_outcome) maar wordt hij niet bewaard --
handshake.js legt alleen vast voor sent-rijen die van ons zijn. Een gate die een
ander heeft geopend leest hier dus als uit, en dat is de onveilige kant.

4 tests erbij, waaronder de terugval op de oude kale-boolean vorm. Suite 599/599.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/assets/js/guardian.js

    r01fb44f r72d8eff  
    492492    // De stand. NULL is onbekend en dat is iets anders dan uit: bij een ward op
    493493    // een andere server wordt die kolom daar bijgehouden.
     494    // Drie standen, niet twee. "Uit" en "voor zover wij weten uit" zijn niet
     495    // hetzelfde: dat tweede betekent dat niemand er ooit over besloot, en dat
     496    // hoort niet te lezen als een genomen besluit.
    494497    var stand = g.value === null || g.value === undefined
    495498      ? (T.gate_unknown || 'unknown')
    496499      : (g.value ? (T.prop_on || 'on') : (T.prop_off || 'off'));
     500    if (!g.decided && g.value === false) stand = T.gate_default_off || stand;
    497501    var meta = el('div', 'g-gate-meta small');
    498502    meta.appendChild(el('span', null, stand));
     
    526530      // dichtzetten, en dat hoort op de knop te staan voordat je klikt.
    527531      //
    528       // Bij een ONBEKENDE stand (een ward op een andere server) kun je alleen
    529       // 'openzetten' voorstellen -- gateButton stuurt dan allow: true. Dat is een
    530       // gat aan de veilige kant: een guardian elders kan niet voorstellen iets
    531       // DICHT te zetten. Op te lossen zodra de catalogus de huidige waarde
    532       // meestuurt (shaer-b78), niet hier.
     532      // De richting volgt de stand die we uit de besluiten kennen, dus ook voor
     533      // een ward elders kun je nu DICHTZETTEN voorstellen. Dat was de veilige
     534      // richting die eerder ontbrak toen de stand altijd onbekend was.
    533535      var openzetten = T.gate_propose_open || T.gate_propose || 'Propose';
    534536      var dichtzetten = T.gate_propose_close || T.gate_propose || 'Propose';
Note: See TracChangeset for help on using the changeset viewer.