f451 1.1: Vertraulichkeitsstufen und festgeschriebene Releases

Einen Tag nach Version 1.0.0 ist f451 1.1.0 erschienen. Seiten bekommen eine Vertraulichkeitsstufe, und freigegebene Fassungen lassen sich als schreibgeschützte Kopie in Git festschreiben. Das Update ist abwärtskompatibel. Wer keine der beiden Funktionen einschaltet, merkt keinen Unterschied.
Vier Stufen, die steuern, wohin Inhalte wandern
Jede Seite kann eine von vier Stufen tragen: öffentlich, intern, vertraulich und streng vertraulich. Die Stufe erscheint als Chip auf der Seite, bei streng vertraulichen Seiten zusätzlich als Banner mit dem Hinweis, den Inhalt nicht weiterzugeben.
| Stufe | Wirkung |
|---|---|
| Öffentlich | Chip auf der Seite |
| Intern | Chip auf der Seite |
| Vertraulich | Chip, die Suche zeigt den Treffer ohne Textausschnitt |
| Streng vertraulich | Chip und Banner, taucht nie in der Suche auf und nicht als verwandte Seite im Graphen |
Leserechte vergibt die Stufe nicht, und sie entzieht auch keine. Wer eine Seite lesen darf, entscheidet weiterhin das Repository, so wie in f451 von Anfang an. Die Stufe sagt Lesern, wie sie mit dem Inhalt umgehen sollen, und hält ihn aus Kanälen heraus, über die er sich weiterverbreiten würde. Das sind Suchausschnitte, Listen verwandter Seiten und KI-Agenten.
Eingeschaltet wird das pro Space in _meta/schema.yaml.
classification:
default: internal
max: confidential
Entscheidend ist max. Ein Space, den die ganze Firma lesen kann, bekommt max: internal. Eine vertrauliche Seite lässt sich dort weder speichern noch freigeben, weil der Editor nichts oberhalb der Grenze anbietet und die API eine höhere Stufe ablehnt. Ohne den Block verhält sich ein Space genau wie vorher.
Eine Obergrenze für KI-Agenten
Bisher las ein Agent über den MCP-Dienst mit dem persönlichen API-Token seines Nutzers alles, was dieser lesen darf. Ab 1.1 hat jedes API-Token eine Obergrenze, die beim Anlegen gewählt wird, standardmäßig „intern“. Liegt eine Seite darüber, sieht das Token nur Titel und Stufe. Inhalt, Markdown-Quelle und jede Schreibaktion werden verweigert, und der Agent meldet dem Nutzer, dass das Token zu eng ist.
In einem Space mit Stufen lässt sich ein Agent damit auf Betriebsdokumentation ansetzen, ohne dass der Inhalt vertraulicher Seiten in seinem Modellkontext landet. Titel und Stufe sieht er weiterhin. Bestehende Tokens bekommen per Migration die Grenze „intern“. Das wirkt sich nur in Spaces aus, die Stufen einschalten. Browser-Sitzungen haben keine Obergrenze, denn wer ein Repository lesen darf, liest jede Seite darin.
Festgeschriebene Releases neben der Seite
In einem versionierten Space (versioning: true) bekommt jede Freigabe seit 1.0 eine Versionsnummer. Das Release-Archiv baut darauf auf, denn die Nummer benennt die Kopie. Wer im Review „Als Release festschreiben“ ankreuzt, erzeugt eine vollständige Kopie der Seite samt referenzierter Anhänge direkt neben ihr im Repository.
<seitenordner>/
index.md
_media/
_releases/
1.2.0/
page.md
_media/
Die Kopie entsteht im selben Commit wie die neue Versionsnummer. Es gibt also nie eine Version ohne ihre Kopie. Ein festgeschriebenes Release öffnet sich schreibgeschützt, mit eigener Stufe, eigenen Tags und eigenen Metadaten aus dem Moment der Freigabe. Es bleibt als ganze Seite lesbar, auch wenn die Seite danach oft geändert, die Git-Historie umgeschrieben oder die Datenbank verloren wurde. Agenten lesen ein Release über read_page mit Versionsangabe.
Schreibgeschützt heißt hier schreibgeschützt durch f451. Keine Route schreibt nach _releases/. Wer Schreibrechte am Repository hat, kann die Dateien in Git trotzdem ändern. f451 bemerkt das beim nächsten Reindex und markiert das Release sichtbar als nachträglich verändert. Für ein Audit heißt das: Eine nachträgliche Änderung an einer Release-Datei bleibt nicht unbemerkt.
Eine Grenze gibt es. Wer eine Seite löscht, löscht ihre Releases mit. Wer sie behalten will, archiviert die Seite, statt sie zu löschen.
Ausprobieren
Im Playground der Live-Demo sind Versionierung und Stufen eingeschaltet. Anmeldung über Forgejo mit writer / 43dc099d5da028f4. Eine Seite auf „streng vertraulich“ setzen und danach suchen zeigt den Unterschied sofort. Ebenso lässt sich eine Freigabe als Release festschreiben, die Seite danach ändern und das Release über die Kopfzeile öffnen. Es zeigt weiter die alte Fassung. Die Demo wird jede Nacht zurückgesetzt.
Die vollständige Beschreibung steht im Admin Guide unter Classifications und Releases sowie im Changelog.
Quellen
- f451 1.1.0, Release Notes: github.com/rotecodefraktion/f451/releases/tag/v1.1.0
- Changelog 1.1.0: CHANGELOG.md
- Admin Guide, Classifications: classifications/index.md
- Admin Guide, Releases: releases/index.md
- Live-Demo: f451.rotecodefraktion.de