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/services/guardianship/gated.js

    r50e80ac r3b43e4c  
    5959  'shaer:externalEmbeds': 'external_embeds',
    6060  'shaer:externalPlayback': 'external_playback',
     61  'shaer:externalThreads': 'external_threads',
     62  'shaer:images': 'gate_images',
     63  'shaer:messages': 'gate_messages',
     64  'shaer:compose': 'gate_compose',
     65  'shaer:music': 'gate_music',
     66  'shaer:quoteCards': 'gate_quote_cards',
     67  'shaer:customEmoji': 'gate_custom_emoji',
     68  'shaer:accountMove': 'gate_account_move',
    6169};
    6270/**
     
    8088export const GATE_CATALOGUE = [
    8189  // Werkend: er is een kolom, de tally kan erover beslissen en de server dwingt
    82   // hem af bij het serveren.
     90  // hem af bij het serveren (of, voor compose/messages/move, bij het INNEMEN:
     91  // wat de ward niet mag versturen wordt aan de outbox geweigerd).
    8392  { feature: 'shaer:externalEmbeds', kind: 'setting', reversible: true },
    8493  { feature: 'shaer:externalPlayback', kind: 'setting', reversible: true, needs: 'shaer:externalEmbeds' },
     94  // Sinds 8-8 ("maak ze allemaal functioneel", Bart): de hele setting-familie
     95  // schakelt echt. De bead-nummers blijven staan, want elk van deze heeft nog
     96  // een app-kant (wat de UI toont als de poort dicht is) en die woont daar.
     97  { feature: 'shaer:externalThreads', kind: 'setting', reversible: true, bead: 'shaer-9y2' },
     98  { feature: 'shaer:images', kind: 'setting', reversible: true, bead: 'shaer-6p5' },
     99  { feature: 'shaer:messages', kind: 'setting', reversible: true, bead: 'shaer-3ow' },
     100  { feature: 'shaer:compose', kind: 'setting', reversible: true, bead: 'shaer-qgev' },
     101  { feature: 'shaer:music', kind: 'setting', reversible: true, bead: 'shaer-rmz' },
     102  { feature: 'shaer:quoteCards', kind: 'setting', reversible: true, bead: 'shaer-mls' },
     103  { feature: 'shaer:customEmoji', kind: 'setting', reversible: true, bead: 'shaer-ytw' },
     104  { feature: 'shaer:accountMove', kind: 'setting', reversible: true, bead: 'shaer-tge' },
    85105  // Altijd aan voor een ward (5.3): niet te verzetten, wel te tonen. Een paneel
    86106  // dat alleen verstelbare dingen laat zien verzwijgt de helft van wat er geldt.
    87107  { feature: 'shaer:follows', kind: 'perRequest', reversible: true, fixed: true },
    88108
    89   // GEPLAND, nog niet afgedwongen. Deze staan in het paneel omdat een guardian
    90   // hoort te zien wat er straks te beslissen valt -- en omdat de SOM van de
    91   // gates iets anders is dan elke gate apart: elf poorten die elk dicht falen
    92   // leveren samen een kind op dat vrijwel niets kan.
     109  // GEPLAND, en dat is bij deze twee geen achterstand maar een besluit.
    93110  //
    94   // available: false is geen detail. featureColumn() kent deze namen niet, dus
    95   // een voorstel zou stranden op unknown_feature. En ze als "uit" tonen zou
    96   // ronduit onwaar zijn: plaatjes werken vandaag gewoon. Ze horen te lezen als
    97   // "hier is nog niets van", niet als een gesloten poort.
     111  // publicProfile is niet een veld dat je wegfiltert: het is het hele publieke
     112  // web-oppervlak van een site (de Krant, de AP-objecten, de scrape-vraag van
     113  // shaer-hj0). Dat dichtzetten zonder dat ontwerp is een half slot, en een
     114  // half slot leest als een heel slot -- gevaarlijker dan geen.
    98115  //
    99   // `kind` is hier voorlopig. Of accountmigratie een stand is of een besluit per
    100   // keer hoort bij het bouwen van shaer-tge beslist te worden, niet hier.
    101   { feature: 'shaer:images', kind: 'setting', reversible: true, available: false, bead: 'shaer-6p5' },
    102   { feature: 'shaer:messages', kind: 'setting', reversible: true, available: false, bead: 'shaer-3ow' },
    103   { feature: 'shaer:compose', kind: 'setting', reversible: true, available: false, bead: 'shaer-qgev' },
    104   { feature: 'shaer:music', kind: 'setting', reversible: true, available: false, bead: 'shaer-rmz' },
    105   { feature: 'shaer:quoteCards', kind: 'setting', reversible: true, available: false, bead: 'shaer-mls' },
    106   { feature: 'shaer:customEmoji', kind: 'setting', reversible: true, available: false, bead: 'shaer-ytw' },
     116  // available: false is geen detail. featureColumn() kent deze naam niet, dus
     117  // een voorstel strandt op unknown_feature, en de rij leest als "hier is nog
     118  // niets van", niet als een gesloten poort.
    107119  { feature: 'shaer:publicProfile', kind: 'setting', reversible: true, available: false, bead: 'shaer-hj0' },
    108   { feature: 'shaer:accountMove', kind: 'setting', reversible: true, available: false, bead: 'shaer-tge' },
    109120  // De enige die gezag OVERDRAAGT, en daarmee de enige die niet terug te draaien
    110121  // is zodra het kind hem gebruikt (shaer-90v). Telt met de lapse-vorm: volle
    111   // set, volle venster.
     122  // set, volle venster. Die vorm hoort daar beslist te worden, niet hier
     123  // geimproviseerd: een verkeerd gemaakte onafhankelijkheid is een kind zonder
     124  // vangnet.
    112125  { feature: 'shaer:independence', kind: 'handover', reversible: false, available: false, bead: 'shaer-90v' },
    113126];
Note: See TracChangeset for help on using the changeset viewer.