Changeset 3b43e4c in Klonkt for src/routes/guardian.js


Ignore:
Timestamp:
08/08/2026 02:33:28 AM (5 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
06bae1e
Parents:
50e80ac
Message:

De gate-familie functioneel: acht poorten die echt schakelen (shaer-ahy.1)

Barts opdracht (8-8): "maak ze allemaal maar functioneel." Alle
setting-gates uit de catalogus hebben nu een kolom, zijn voorstelbaar en
beslisbaar via de bestaande tally, en worden ECHT afgedwongen -- bij de
aflevering (wat dicht is wordt nooit geserialiseerd, de regel die de
embeds al hadden) of bij de inname (wat de ward niet mag versturen
weigert de outbox met een eerlijke 403).

externalThreads de thread-kring (shaer-9y2): dicht is de kring van de

guardians met telling, open is alles; per verzoek en
buiten de threadcache om, want een poort die net
dichtging mag niet twee minuten open nawerken

images/music bijlagen gefilterd op mediaType, ook in de thread
quoteCards shaer:quote niet geserialiseerd
customEmoji Emoji-tags en byline-emoji niet geserialiseerd; de

:shortcode: blijft als tekst staan, dat is eerlijk

messages de berichten-poot dicht voor vreemden en vrienden,

maar NOOIT voor het guardian-kanaal, en de outbox
weigert directe berichten -- behalve de reddingsboei:
een poort die het hulpkanaal afsnijdt beschermt
niemand

compose de outbox weigert eigen posts; een antwoord valt

onder het gesprek, niet onder een eigen podium

accountMove de harde weigering van shaer-tge is een gate

geworden met dezelfde standaard: guardians kunnen
hem nu openzetten

De capabilities dragen de hele familie, zodat de app VOORAF weet wat hij
mag aanbieden -- de (+) kaart leest shaer:compose al. De voorstelroute
herschreef een onbekende feature stilletjes naar externalEmbeds; dat is
nu een 400, want een voorstel dat op de verkeerde poort landt mag een
guardian nooit overkomen. Het paneel leest de standen catalogusbreed.

TWEE blijven bewust gepland. publicProfile is niet een veld dat je
wegfiltert maar het hele publieke web-oppervlak (de ontwerpvraag van
shaer-hj0); een half slot leest als een heel slot en dat is gevaarlijker
dan geen. independence draagt gezag over een kind over en zijn vorm
hoort bij shaer-90v beslist te worden, niet hier geimproviseerd.

Zestien nieuwe/aangepaste toetsen, alle 640 groen.

Co-Authored-By: Claude Opus 5 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/guardian.js

    r50e80ac r3b43e4c  
    6060    // Het gate-paneel per ward (shaer-ahy.1): een rij per gate, met het soort en
    6161    // de drempel erbij. De namen volgen de catalogus in gated.js.
    62     'gate_externalEmbeds', 'gate_externalPlayback', 'gate_follows',
     62    'gate_externalEmbeds', 'gate_externalPlayback', 'gate_externalThreads', 'gate_follows',
    6363    'gate_kind_setting', 'gate_kind_perRequest', 'gate_kind_handover',
    6464    'gate_unknown', 'gate_threshold', 'gate_threshold_unknown',
     
    630630    // stond er in het paneel overal "onbekend". Wat een guardian wel heeft is de
    631631    // uitslag van wat hij voorstelde.
    632     settings: {
    633       'shaer:externalEmbeds': Guardianship.gated.knownSetting(mySlug, wardUri, 'shaer:externalEmbeds'),
    634       'shaer:externalPlayback': Guardianship.gated.knownSetting(mySlug, wardUri, 'shaer:externalPlayback'),
    635     },
     632    settings: Object.fromEntries(Guardianship.gated.GATE_CATALOGUE
     633      .filter((g) => g.available !== false && Guardianship.gated.featureColumn(g.feature))
     634      .map((g) => [g.feature, Guardianship.gated.knownSetting(mySlug, wardUri, g.feature)])),
    636635    guardianCount: statuses ? statuses.length : null,
    637636    proposals: Guardianship.gated.listSent(mySlug, wardUri).map((p) => ({
     
    656655// can move, and only a committed guardian of THAT ward may move it.
    657656router.post('/wards/embeds', requireAuth, express.json({ limit: '4kb' }), (req, res) => {
    658   req.body = { ...req.body, feature: req.body?.feature === 'shaer:externalPlayback' ? 'shaer:externalPlayback' : 'shaer:externalEmbeds' };
     657  // Niet meer alleen embeds/playback: elke gate uit de catalogus met een kolom
     658  // is voorstelbaar (8-8, "maak ze allemaal functioneel"). De oude regel
     659  // HERSCHREEF een onbekende feature stilletjes naar externalEmbeds -- een
     660  // voorstel voor de ene poort dat op de andere landt is precies het soort
     661  // fout dat een guardian nooit mag overkomen. Onbekend wordt nu geweigerd.
     662  const feature = String(req.body?.feature || 'shaer:externalEmbeds');
     663  if (!Guardianship.gated.featureColumn(feature)) return res.status(400).json({ error: 'unknown_feature' });
     664  req.body = { ...req.body, feature };
    659665  return proposeGated(req, res);
    660666});
Note: See TracChangeset for help on using the changeset viewer.