đŹ Befund â â27 von 27": jede Fertigkeit ist als Klassenraum-Auftrag lösbar
[!danger] Kurzfassung Die Behauptung hÀlt. Alle 27 Fertigkeiten aus
DATEN.skillssind als Klassenraum-Auftrag adressierbar, haben einen Fehlerinjektor, sind im Startnetz wirklich gebrochen und mit der hinterlegten Lösung wirklich heilbar â gemessen ĂŒber den vertraglichen Weg (432/432 ĂŒber Seeds 1..16; 1728/1728 ĂŒber das volle Kanonisierungsfenster 1..64) und ĂŒber den echten Weg der Lehrkraft mit Code (54/54 bestanden, bei Wahl E und AP2). Die frĂŒhere Angabe â24 von 27" ist ĂŒberholt; sie stammt aus der Zeit vor den drei Injektorenportsec-fremde-mac,stp-doppelkabelundnas-ohne-adresse(Ausbau 1.3 / task-5). FĂŒnf Befunde betreffen nur das Drumherum (§ 5): das BeweismittelA-codec-probe.jsrechnete noch mit 24 (wĂ€hrend dieser Arbeit behoben â es leitet die Zahl jetzt aus der Messung ab), der eingefrorene BelegA-codec.jsontrĂ€gt den alten Stand, die Dokumente A/D nennen 24 (bewusst Protokolle), der Vertragsanker fehlt (Architektur § 12.2 hat keinen Tauglichkeits-Punkt), und drei eingefrorene Indizes haben ihre Bedeutung gewechselt (24/25/26: von âabgelehnt" zu âechter Auftrag"). Keiner dieser fĂŒnf Punkte berĂŒhrt die Zahl selbst.
1 · Die Frage
Zwei Aussagen stehen gegeneinander:
| Quelle | Aussage |
|---|---|
| Fahrplan 1.3/2.0, Umsetzung | alle 27 Fertigkeiten sind tauglich, weil lab.portsec, lab.stp und lab.storage seit task-5 Injektoren haben |
| FrĂŒhphase (Spezifikation, A â Codec, Werkzeugliste) | 24 von 27 â drei Fertigkeiten sind nicht adressierbar |
âAdressierbar" heiĂt im Vertrag nicht âkommt in der Liste vor", sondern: es gibt einen Code, aus dem auf jedem GerĂ€t derselbe spielbare Auftrag entsteht. Der Weg dahin ist gemessen nachlesbar:
src/spiel/klassenraum.js:50-65â die eingefrorene Fertigkeitstabelle (TABELLE_SKILLS), 27 EintrĂ€ge inDATEN.skills-Reihenfolge.src/spiel/klassenraum.js:146-151âerzeugen({skill})lehnt ab, wenn die Tabelletauglich: falsesagt oderhatInjektor(skill)(:79) keinen Injektor findet.src/spiel/klassenraum.js:100-110(kanonGeneriert) â sucht im Kanonisierungsfenster (KANON_FENSTER = 64,src/spiel/klassenraum-codec.js:255-259) nach einem Seed, dessen FallSpiel.ticketGueltig(d)besteht (src/spiel/generator.js:126-151). Findet sie keinen, lautet die Antwort{fehler:"auftrag"}.src/spiel/postfach.js:62-111â der ĂffnungswegSpiel.instanzErstellen({gen:{skill,seed}, âŠ});Spiel.abnahme(src/spiel/abnahme.js:13-45) prĂŒft am Ende Ziele, Regression und Neustart.
Die eine Frage dieses Befunds: Gibt es fĂŒr jede der 27 Fertigkeiten einen Fall, der baubar ist, einen Injektor hat, gĂŒltig ist und lösbar ist? Und stimmt die eingefrorene Tabelle mit dem ĂŒberein, was messbar ist?
2 · Die Antwort in vier Messungen
| # | Behauptung | Wie geprĂŒft | Ergebnis | Restzweifel |
|---|---|---|---|---|
| 1 | Jede Fertigkeit liefert ĂŒber den vertraglichen Weg einen echten, gĂŒltigen, lösbaren Auftrag | 27 Fertigkeiten Ă Seeds 1..16 = 432 Instanzen ĂŒber Spiel.instanzErstellen({gen:{skill,seed}, quelle:"klassenraum", ohneFlow:true}) | 432/432 in Ordnung, 27/27 Skills mit vollem Feld, 0 Befunde | nur Seeds 1..16, nicht 1..256 (Messung 2 deckt das Fenster ab) |
| 2 | In keinem Fall des Kanonisierungsfensters scheitert die Suche | 27 Ă Seeds 1..64 (genau KANON_FENSTER) | 1728/1728 in Ordnung, 0 Befunde | Fenster fĂŒr Varianten > 0 beginnt spĂ€ter (variante + 1 + k); gemessen ist das Basisfenster 1..64 |
| 3 | Der echte Weg der Lehrkraft fĂŒhrt bis zur Abnahme | erzeugen({skill}) â Code â ausCode(code) â instanzErstellen â Spiel.loesung + arbeitszieleErfuellen â Spiel.abnahme â ergebnisCode; je Fertigkeit 2 Varianten, einmal mit Wahl E, einmal mit Wahl AP2 | 54/54 bestanden, 0 Befunde, in allen 54 FĂ€llen schritte = 0 (kein Kanonisierungsschritt nötig) | 2 Varianten je Fertigkeit, nicht alle 256 |
| 4 | Die eingefrorene Tabelle sagt die Wahrheit | Spiel.klassenraum.tabellen() und tauglicheFertigkeiten() gegen hatInjektor je Fertigkeit | 27 EintrĂ€ge, Reihenfolge = DATEN.skills, tauglich â Injektor (0 ohne Deckung, 0 unnötig gesperrt), ersterSeed: 1 bestĂ€tigt | die Tabelle ist ein Literal; der Test wacht ĂŒber Reihenfolge und Merker |
Was je Fall in Messung 1 geprĂŒft wurde (fĂŒnf Zusicherungen, jede einzeln):
Spiel.instanzErstellenwirft nicht undSpiel.defVon(inst)liefert eine Definition.def.injektoren.length â„ 1â es gibt einen Fehlerinjektor, sonst gĂ€be es nichts zu finden.def.ziele.length â„ 1und mindestens ein erwartetes Ziel ist im Startnetz wirklich gebrochen (Sim.pruefeZiel(inst.netz, ziel).ok === false) â der Fehler wirkt, er steht nicht nur im Feld.Spiel.ticketGueltig(def) === trueâ das Haus-Gate: Start bricht, Lösung heilt, die gesunden Ziele der Vorlage gelten danach weiter.- UnabhĂ€ngig davon nachgerechnet: auf einer Netzkopie heilt
Spiel.loesungAnwenden(kopie, def.loesung)jedes Netz-Ziel (Sim.pruefeZiel). Punkt 4 und Punkt 5 sind zwei verschiedene Rechenwege (Gate gegen eigene Kopie) â beide grĂŒn.
In Messung 3 kommen die Teile hinzu, die das Gate nicht prĂŒft: Arbeitsziele (befehl/antwort), Regression (Spiel.basisMessen/regressionPruefen), der Neustart-Test und der Ergebnis-Code.
3 · Die Tabelle aller 27 Fertigkeiten
Reihenfolge wie DATEN.skills. âGrundcodes" = alle im Startnetz gebrochenen erwarteten Ziele, vereinigt ĂŒber Seeds 1..16 (Messung 1); OFFEN ist der Grundcode eines blockiert-Ziels, das aufgeht.
| # | Skill | Injektor | lösbar | gemessene Grundcodes |
|---|---|---|---|---|
| 1 | lab.link | ja | ja | PORTSHUTDOWN, LINKDOWN, ARPNOREPLY, DNSNOSERVER, DHCPNOOFFER, NO_ROUTE |
| 2 | lab.ip | ja | ja | GWWRONGSUBNET, ARPNOREPLY, DUPIP, NOIP, OFFEN, PORTCLOSED, NOROUTE |
| 3 | lab.netz | ja | ja | WRONGMASK, GWWRONGSUBNET, NOROUTE, NO_IP |
| 4 | lab.gateway | ja | ja | GWUNREACHABLE, NOGATEWAY, PORTSHUTDOWN, NOROUTE, DHCPNOOFFER |
| 5 | lab.arp | ja | ja | ARPNOREPLY, DUPIP, PORTCLOSED |
| 6 | lab.ping | ja | ja | GWUNREACHABLE, NOROUTE |
| 7 | lab.switch | ja | ja | PORTSHUTDOWN, PORTSECVIOLATION, STORM, DHCPNOOFFER |
| 8 | lab.subnetz | ja | ja | WRONGMASK, DROPVLAN |
| 9 | lab.dhcp | ja | ja | NOROUTE, DHCPNO_OFFER |
| 10 | lab.dns | ja | ja | DNSFAIL, DNSNO_SERVER |
| 11 | lab.ports | ja | ja | FWDENY, SERVICEOFF |
| 12 | lab.tcp | ja | ja | SERVICE_OFF |
| 13 | lab.cli | ja | ja | NOROUTE, PORTSHUTDOWN, DHCPNOOFFER, NATMISSING, TRUNKNOTALLOWED, GWUNREACHABLE, OFFEN |
| 14 | lab.speichern | ja | ja | NO_ROUTE |
| 15 | lab.vlan | ja | ja | DROPVLAN, GWUNREACHABLE |
| 16 | lab.trunk | ja | ja | TRUNKNOTALLOWED, DROP_VLAN |
| 17 | lab.rostick | ja | ja | DROP_VLAN |
| 18 | lab.acl | ja | ja | NATMISSING, OFFEN, ACLDENY |
| 19 | lab.route | ja | ja | NOROUTE, TIMEOUT, NORETURNROUTE, PORTSHUTDOWN |
| 20 | lab.ttl | ja | ja | PORT_SHUTDOWN |
| 21 | lab.nat | ja | ja | NAT_MISSING |
| 22 | lab.portfwd | ja | ja | FW_DENY |
| 23 | lab.fw | ja | ja | FW_DENY |
| 24 | lab.dmz | ja | ja | FW_DENY |
| 25 | lab.portsec | ja | ja | PORTSEC_VIOLATION |
| 26 | lab.stp | ja | ja | STORM |
| 27 | lab.storage | ja | ja | NO_IP |
Die letzten drei Zeilen sind die des Ausbaus 1.3: portsec-fremde-mac (Port geht wirklich in err-disabled), stp-doppelkabel (Lauf bricht wirklich mit abbruch === "STORM" ab), nas-ohne-adresse (das NAS steht wirklich ohne Adresse da) â ihre Wirkung ist in tests/injektoren-neu.test.js im Netz nachgewiesen, nicht nur im Ticket.
4 · Zwei AuffÀlligkeiten ohne Defektcharakter
Beides sind Beobachtungen, keine Fehler â sie stehen hier, damit niemand sie spĂ€ter fĂŒr einen Befund hĂ€lt:
[!note]
lab.ttlmeldet als ersten GrundPORT_SHUTDOWN, nichtTTL_EXPIREDDer Injektorschleife(src/spiel/injektoren.js, skills["lab.ttl","lab.route"]) schaltet die LAN-Schnittstelle des Filial-Routers ab; das Paket lĂ€uft danach im Kreis. Der erste gebrochene Ziel meldet deshalb die abgeschaltete Schnittstelle, nicht den TTL-Ablauf. Die Fertigkeit ist adressiert (Ziel, Titel und ErklĂ€rung gehören zu TTL/Traceroute), nur der sichtbare Erstgrund ist ein anderer. Ăber Seeds 1..16 warPORT_SHUTDOWNder einzige beobachtete Code.
[!note]
lab.cliundlab.aclmelden in manchen SeedsOFFENOFFENist kein Fehlercode im engeren Sinn, sondern der erwartete Zustand einesblockiert-Ziels, das im Startnetz aufgeht (âetwas ist erreichbar, das es nicht sein darf"). Genau das ist der Fehler der ACL-Injektoren (acl-reihenfolge,acl-zu-streng,acl-richtung): Die Sperre wirkt nicht. Dass der Erstgrund je Seed zwischenACL_DENY/NAT_MISSINGundOFFENwechselt, ist die Auswahl der Fehlerstelle â kein Widerspruch zur Tauglichkeit.
5 · FĂŒnf Befunde zum Drumherum
| # | Befund | Wie geprĂŒft | Ergebnis |
|---|---|---|---|
| B1 | Das Beweismittel rechnete noch mit der alten Welt â behoben | tools/klassenraum-probe/A-codec-probe.js gelesen (zuerst :722-725, nach der Korrektur :730-742) | Vorher: zaehl.tauglicheIndizes = tab.skills.length - 3 â 24, untauglicheIndizes = 3, unerreichbareCodesFertigkeit = 3 * 32 * 256 â 24.576. Jetzt (Auftrag determinismus, noch wĂ€hrend dieser Arbeit): die drei Felder werden aus messFertigkeitstauglichkeit abgeleitet, mit dem Kommentar âDie frĂŒhere Annahme â3 untauglich, also 24 von 27' war der Stand VOR den drei Injektoren aus task-5 ⊠Ohne Messung wird NICHT geraten: dann bleibt das Feld null." Gemessen ist: 27 tauglich, 0 untauglich, 0 unerreichbare Codes. Von mir gelesen, nicht nachgerechnet â der Probelauf dauert laut Haus ~250 s und schreibt nach Nachweise/ |
| B2 | Der eingefrorene Beleg trĂ€gt den Stand vor task-5 | Nachweise/Klassenraum/A-codec.json gelesen; Dateidatum geprĂŒft | messungen.fertigkeitstauglichkeit: 24/27; die Datei ist zuletzt 07.10.2026, 00:29:47 geschrieben â also vor den Injektoren aus task-5. Das Review nennt ihn korrekt âStand vor task-5" (docs/entwicklung/Review â Klassenraum A+B.md:65), die Datei selbst sagt es nicht. Nicht angefasst â Belege sind datierte Momentaufnahmen |
| B3 | Dokumente nennen weiter 24 | Textstellen gesucht | docs/entwicklung/Klassenraum â Umsetzungsreife Spezifikation.md:138,159 · docs/entwicklung/Klassenraum/A â Codec und Determinismus.md:220,258,271-274,354-357,499,511,758 · tools/auftraege/KLASSENRAUM-umsetzungsreif.md:55. Laut docs/Architektur.md:871-873 sind AâD bewusst Protokolle und werden nicht nachgezogen â dann ist es ein Preis, kein Fehler |
| B4 | Der Vertragsanker fehlt | docs/Architektur.md:869-901 (§ 12.2) und :903-928 (§ 12.3) gelesen | § 12.2 enthĂ€lt L1âL5 (Postfach, plaetze, ohneFlow, B gilt, Ergebnis-Toast) â keinen Tauglichkeits-Punkt. § 12.3 sagt nur, dass der Kommentar â24 von 27" richtiggestellt ist (:927). Die 27 stehen im CHANGELOG (:94), in den Kommentaren src/spiel/klassenraum.js:28-32 und src/spiel/klassenraum-codec.js:297-300 sowie in tests/klassenraum-codec.test.js:251-262 â nicht im Vertragsabschnitt. Wird nachgezogen (Leitung) |
| B5 | Drei eingefrorene Indizes haben ihre Bedeutung gewechselt | KlassenraumCodec.auftragBauen({sitzung:5, art:"generiert", index, variante:3}) + Spiel.klassenraum.ausCode(code) | Index 23 â lab.dmz · 24 â lab.portsec · 25 â lab.stp · 26 â lab.storage (vorher {fehler:"auftrag"}) · Index 27 und 63 â {fehler:"fassung"}. Die AnhĂ€ngeregel ist nicht verletzt (kein Index rĂŒckt), aber ein alter Code mit Index 24..26 liefert jetzt einen echten Auftrag. Die Aussage der A-Spezifikation (â24.576 Codes aus 3 untauglichen Fertigkeiten ergeben auftrag") ist damit messbar falsch: 0 |
6 · Der Test im Haus
tests/klassenraum-loesbarkeit.test.js (neu) hĂ€lt die Behauptung dauerhaft fest â schlank, damit die Suite nicht minutenlang lĂ€uft:
| Fall | Umfang | Laufzeit |
|---|---|---|
alle 27 Fertigkeiten: Injektor + Ziel, wirklich gebrochen, ticketGueltig, Lösung heilt | 27 à Seeds 1,2 = 54 Instanzen | 6 609 ms |
eingefrorene Tabelle gegen Messung (27, Reihenfolge, tauglich â Injektor, ersterSeed 1) | rein lesend | < 1 s |
der echte Weg der Lehrkraft: erzeugen â Code â ausCode â lösen â Abnahme â Ergebnis-Code | 27 LĂ€ufe | 3 411 ms |
Die vollen Messungen (432 · 1728 · 54) laufen bewusst nicht in der Suite, sondern nur in diesem Befund â sie sind zu langsam fĂŒr jeden Testlauf. Die drei FĂ€lle arbeiten mit einer Kapsel (eigener Speicherstand, eigener Store, vollstĂ€ndige RĂŒckgabe danach), damit erzeugen keine Sitzung hinterlĂ€sst.
[!warning] Was unterwegs schiefging Die Testdatei ging in einem ersten Zwischenstand mit zwei Fehlern in den Schwarm: eine Klammer zu viel (
}));statt});) erzeugte einenLADEFEHLER, der den ganzen Lauf anhielt, und die Kapsel gab das Ergebnis statt einer HĂŒlle zurĂŒck (t.fn is not a function). Beides ist behoben und belegt:node --check tests/klassenraum-loesbarkeit.test.jsâ Syntax OK, danach 688/690 grĂŒn, und die zwei roten Zeilen waren die beidenDoku: Markdown-Konverter und Seitenbau-Zeilen (ZĂ€hlung nach dem Doku-Neubau), nicht die neuen FĂ€lle.
7 · Nicht geprĂŒft
- Die 32 à 256-Matrix ist nicht einzeln durchgemessen. Der Pfad hÀngt nur am Tabellenmerker (
tauglichje Eintrag), nicht an Sitzung oder Variante â geprĂŒft wurden die Indizes 24, 25, 26, 27 und 63 mit Variante 3. Dass jede der 256 Varianten jeder der 27 Fertigkeiten einen Auftrag ergibt, ist damit nicht einzeln belegt; belegt ist das volle Fenster 1..64 (Messung 2) und Variante 0/1 (Messung 3). - Die vollen Messungen laufen nicht in der Suite (§ 6). Die 432/1728/54 sind EinzellĂ€ufe dieser Sitzung, kein Testlauf-Artefakt; ein spĂ€terer Testlauf kann sie nicht reproduzieren, ohne die Laufzeit zu sprengen.
- Kein Browser. Alle Messungen laufen ĂŒber
tests/run.jsin einem vm-Zusammenhang. Ob die Ansichtklassenraumin einem echten Browser dieselben FĂ€lle öffnet, ist nicht gemessen. - Die gebaute Fassung ist nicht geprĂŒft.
bauen.py,tools/seite.pyundtools/einfach.pywurden nicht ausgefĂŒhrt; obweb/index.html,Netzwerk-Labor.htmlunddocs/doku/nach diesem Befund nachgezogen sind, ist offen. Dieses Dokument zĂ€hlt beim nĂ€chsten Seitenbau eine Karte mehr â die Zahl wird dort gezĂ€hlt, nicht geschrieben (tests/doku-seite.test.js:116-126). A-codec-probe.jswurde nicht ausgefĂŒhrt (B1): die Zeilen sind gelesen, nicht nachgerechnet â vor und nach der Korrektur. Dass die abgeleiteten ZĂ€hler im echten Probelauf wirklich 27 / 0 / 0 ergeben, ist damit nicht von mir gemessen. Der Lauf dauert laut Haus ~250 s und schreibt nachNachweise/; das ist Sache des Auftragsdeterminismus.- Der eingefrorene Beleg wurde nicht neu erzeugt (B2): nur die Zahl
24/27und das Dateidatum gelesen. Ob die ĂŒbrigen Zahlen inA-codec.json(RundlĂ€ufe ĂŒber 2ÂČâ° bzw. 2ÂČâ” Nutzlasten) noch zum heutigen Code passen, ist nicht geprĂŒft. - Der neue Befund ist noch nicht in die Doku-Seite gebaut.
python tools/seite.pywurde nicht ausgefĂŒhrt (fremder Schreibbereich). Gemessen: Quelle 42 Dokumente (README.md,AGENTS.md,docs/**/*.md), gebautdocs/doku/**/*.html42 â die Seitenbau-PrĂŒfung erwartet42 + 1 = 43. Bis zum nĂ€chsten Seitenbau sind die zweiDoku: Markdown-Konverter und Seitenbau-FĂ€lle deshalb rot; die Zahl wird dort gezĂ€hlt, nicht geschrieben (tests/doku-seite.test.js:116-126). - Andere Rechner sind nicht gemessen. Ob dort dieselbe Tabelle und dieselben Injektoren liegen, ist hier nicht feststellbar.
- Der fremde Zwischenstand: WĂ€hrend dieser Arbeit waren zwei Roten auĂerhalb meines Auftrags zu sehen (
Doku: Markdown-Konverter und Seitenbau,Wiki: Klassenraum) und ein fremderLADEFEHLERaus einer parallel bearbeiteten Testdatei. Sie gehören nicht zu diesem Befund; der letzte eigene Lauf vor Abgabe war 688/690 grĂŒn mit genau den zwei Doku-Zeilen rot.
8 · Belege (in dieser Sitzung ausgefĂŒhrt)
| Zweck | Befehl / Handlung | Ergebnis |
|---|---|---|
| Messung 1 | Node-Lauf mit dem Ladepfad aus tests/run.js (alle src/-Schichten), 27 Skills Ă Seeds 1..16 | 432/432 in Ordnung, 27/27 Skills mit vollem Feld, 0 Befunde, 41,1 s |
| Messung 2 | derselbe Aufbau, 27 Ă Seeds 1..64 (KANON_FENSTER) | 1728/1728 in Ordnung, 0 Befunde, 261,3 s |
| Messung 3 | erzeugen({skill, seed}) â ausCode â instanzErstellen â lösen â Spiel.abnahme â ergebnisCode, je Skill mit Wahl E und AP2 | 54/54 bestanden, 0 Befunde, 24,5 s |
| Messung 4 | Spiel.klassenraum.tabellen() / tauglicheFertigkeiten() gegen hatInjektor | 27 tauglich, Indizes 0..26, ohneDeckung = [], unnoetigGesperrt = [] |
| B5 | KlassenraumCodec.auftragBauen + ausCode fĂŒr Index 23/24/25/26/27/63 | 24/25/26 liefern lab.portsec/lab.stp/lab.storage; 27 und 63 â fassung |
| B1 | tools/klassenraum-probe/A-codec-probe.js gelesen â vorher :722-725, nach der Korrektur :730-742 | - 3 / 3 / 3 * 32 * 256 gegen gemessen 27 / 0 / 0; danach Ableitung aus messFertigkeitstauglichkeit mit Kommentar zur ĂŒberholten Annahme |
| B2 | Nachweise/Klassenraum/A-codec.json gelesen, Dateidatum geprĂŒft | fertigkeitenTauglich: 24/27, zuletzt geschrieben 07.10.2026, 00:29:47 |
| Testdatei | node --check tests/klassenraum-loesbarkeit.test.js | Syntax OK (Exit 0); Zeilenenden LF, wie die ĂŒbrigen Testdateien |
| Testlauf | node tests/run.js (voller Lauf) | 688/690 grĂŒn, 2 rot (beide Doku: Markdown-Konverter und Seitenbau), 0 ĂŒbersprungen |
| Randbedingung | node tools/sim-stand.js (vor diesem Befund, nach den Injektoren aus task-5) | âSimulation unverĂ€ndert gegenĂŒber dem Referenzstand" â src/sim/ blieb unangetastet |
9 · Was aus diesem Befund folgt
- Die 27 bleiben stehen. Keine Fertigkeit muss auf
tauglich: falsezurĂŒckgesetzt werden; die Tabelle ist gedeckt. - B1 ist behoben (Auftrag
determinismus): die drei ZĂ€hler im Beweismittel werden jetzt ausmessFertigkeitstauglichkeitabgeleitet (A-codec-probe.js:730-742) â ein fester Wert veraltet wieder. Nachgerechnet habe ich das nicht (der Probelauf schreibt nachNachweise/); der nĂ€chste Beleg sollte 27 / 0 / 0 tragen. - B4 ist nachzuziehen (Leitung): ein Tauglichkeits-Punkt in
docs/Architektur.md§ 12.2 â sonst hĂ€ngt die Entscheidung â27 von 27" an Kommentaren, einem Test und dem CHANGELOG, nicht am Vertrag. - B5 ist zu benennen, wenn je ein alter Auftragscode mit Index 24..26 auftaucht: er ist nicht mehr ungĂŒltig, sondern liefert jetzt einen Auftrag. Wer alte Codes ausgestellt hat, sollte das wissen.
- B2 und B3 bleiben, wie sie sind â datierte Belege und bewusste Protokolle â, solange niemand sie als aktuellen Stand liest. Dieser Befund ist die Stelle, an der der aktuelle Stand steht.