Changeset 72d8eff in Klonkt for test/guardian-gate-panel.test.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
  • test/guardian-gate-panel.test.js

    r01fb44f r72d8eff  
    7878});
    7979
     80test('de stand komt uit de BESLUITEN, en zegt of er wel besloten is', () => {
     81  // Er zijn geen lokale accounts: elke ward woont elders, dus de kolom op onze
     82  // eigen sites-tabel is voor iedere ward leeg. Wat een guardian wel heeft is de
     83  // uitslag van wat hij voorstelde.
     84  const aan = gated.gateRows({ settings: { 'shaer:externalEmbeds': { value: true, decided: true } } });
     85  assert.equal(rij(aan, 'shaer:externalEmbeds').value, true);
     86  assert.equal(rij(aan, 'shaer:externalEmbeds').decided, true);
     87});
     88
     89test('nooit besloten is iets anders dan besloten-uit', () => {
     90  // "Uit" en "voor zover wij weten uit" zijn niet hetzelfde. Dat tweede als een
     91  // besluit tonen suggereert dat iemand het genomen heeft.
     92  const r = rij(gated.gateRows({ settings: { 'shaer:externalEmbeds': { value: false, decided: false } } }), 'shaer:externalEmbeds');
     93  assert.equal(r.value, false);
     94  assert.equal(r.decided, false);
     95});
     96
     97test('de trap blokkeert alleen op een BESLOTEN dicht', () => {
     98  // Blokkeren op de standaard zou betekenen dat afspelen nooit als eerste
     99  // voorgesteld kan worden -- en zo ging er ooit een hele voorstelronde de
     100  // verkeerde gate in.
     101  const standaard = gated.gateRows({ settings: { 'shaer:externalEmbeds': { value: false, decided: false } } });
     102  assert.equal(rij(standaard, 'shaer:externalPlayback').adjustable, true);
     103  const beslist = gated.gateRows({ settings: { 'shaer:externalEmbeds': { value: false, decided: true } } });
     104  assert.equal(rij(beslist, 'shaer:externalPlayback').adjustable, false);
     105});
     106
     107test('de oude vorm (kale boolean) blijft werken', () => {
     108  // Backwards: een aanroeper die nog true/false doorgeeft hoort niet om te vallen.
     109  const r = rij(gated.gateRows({ settings: { 'shaer:externalEmbeds': true } }), 'shaer:externalEmbeds');
     110  assert.equal(r.value, true);
     111  assert.equal(r.decided, true);
     112});
     113
    80114test('omkeerbaarheid staat per gate genoteerd', () => {
    81115  // Nu is alles omkeerbaar. Zodra independence erbij komt (shaer-90v) is dat het
Note: See TracChangeset for help on using the changeset viewer.