Index: src/services/guardianship/gated.js
===================================================================
--- src/services/guardianship/gated.js	(revision 23da947db1b7ce09d855eb003b0f28eca19fdfe4)
+++ src/services/guardianship/gated.js	(revision b2646cc028cc25772efce1102dfb213cd88b4e5e)
@@ -207,4 +207,30 @@
 }
 
+/**
+ * Wat er blijft hangen als deze gate opengaat (shaer-nf9).
+ *
+ * BARTS ZIN KLOPT NIET LETTERLIJK, en dat is precies waarom dit hier staat. "Een
+ * geopende poort gaat niet meer dicht" is onwaar over de INSTELLING -- shaer-ahy
+ * eist het tegendeel en de code doet het: een voorstel draagt true of false. Maar
+ * het GEVOLG is wel onomkeerbaar. De poort gaat later weer dicht; wat er in de
+ * tussentijd doorheen kwam komt niet terug. Een kind dat iets gezien heeft, heeft
+ * het gezien.
+ *
+ * Dat verschil moet in de tekst, om twee redenen. Een waarschuwing die aantoonbaar
+ * onwaar is neemt de rest van het scherm mee in zijn val zodra iemand het merkt.
+ * En de ware versie is ZWAARDER: "je kunt dit terugdraaien maar niet ongedaan
+ * maken" zet je harder stil dan een verbod dat niet blijkt te kloppen.
+ *
+ * ONBEKEND KRIJGT DE ZWAARSTE TEKST. Een mede-guardian elders kan een feature
+ * voorstellen die onze catalogus niet kent, en dan weten wij niet wat het doet.
+ * Bij twijfel waarschuwen we zwaarder, niet lichter -- de faalstand die hier pijn
+ * doet is een guardian die iets doorlaat omdat het scherm er licht over deed.
+ */
+export function gateConsequence(feature) {
+  const g = GATE_CATALOGUE.find((x) => x.feature === feature);
+  if (!g) return 'unknown';
+  return g.reversible === false ? 'irreversible' : 'reversible';
+}
+
 /** The open decision for a feature, for showing progress ("1 of 2"). */
 export function gatedProgress(slug, feature) {
@@ -371,5 +397,5 @@
 export default {
   GATE_CATALOGUE, gateRows, knownSetting,
-  tallyGatedSetting, thresholdFor, featureColumn, recordGatedVote, gatedProgress, GATED_WINDOW_MS,
+  tallyGatedSetting, thresholdFor, featureColumn, recordGatedVote, gatedProgress, gateConsequence, GATED_WINDOW_MS,
   parseGatedSetting, buildGatedOffer, rememberGatedOffer, recallGatedOffer,
   recordGatedReview, getGatedReview, listGatedReviews, removeGatedReview, clearGatedReviews,
