README erklärt das Projekt, Zusicherungen unter Nummern

Die README beschrieb das Vorgehen statt der Anwendung. Sie erklärt jetzt, was
das System kann, wie es aufgebaut ist und wie man es lokal und im Betrieb
fährt.

Dazu tragen die acht Zusicherungen dort ihre Nummern - Berechtigungsprüfung in
der Abfrage, kein DELETE im Verlauf, Protokollpflicht ab Stufe 3, Magic Bytes
statt Dateiendungen, Skelette statt Spinner, Existenz als Information, keine
Geheimnisse im Repository, keine Einmal-Container. Achtzehn Dateien verwiesen
für ebendiese Regeln auf eine Datei, die nicht mehr mitverfolgt wird; sie
zeigen jetzt auf die README.

Arbeitsunterlagen bleiben auf der Platte, werden aber nicht mehr verfolgt. Die
Ausschlussregel steht in .git/info/exclude statt in .gitignore, damit sie nicht
selbst im Repository steht.
This commit is contained in:
Harlekin
2026-09-04 08:42:07 +02:00
parent 18c9a71fda
commit 38be773636
20 changed files with 80 additions and 48 deletions
+1 -1
View File
@@ -6,7 +6,7 @@ import type { Prisma } from '@afis/db'
*
* Es ist die einzige Stelle im System, die vollständig Auskunft gibt: wer hat
* wann was getan, und bei Stufe 3 aufwärts auch, wer was nur gelesen hat. Nach
* harter Regel 3 aus CLAUDE.md entsteht diese Spur bei jeder schreibenden
* Zusicherung 3 der README entsteht diese Spur bei jeder schreibenden
* Aktion, ohne Ausnahme und ohne Möglichkeit, sie zu unterdrücken.
*
* Lesen darf sie **nur die Abteilungsleitung**. Das ist keine Bequemlichkeit,
+1 -1
View File
@@ -10,7 +10,7 @@ import type { EffectivePermissions } from '@/lib/auth/permissions'
/**
* Vermerke an einer Abteilung.
*
* Harte Regel 2 aus CLAUDE.md gilt hier genauso wie im Verlauf einer Akte:
* Zusicherung 2 der README gilt hier genauso wie im Verlauf einer Akte:
* **es gibt kein Löschen.** Jede Änderung legt den vorherigen Stand als
* Version ab, jede Zurücknahme lässt einen Grabstein stehen, und beides sieht
* jeder, der den Vermerk sehen darf. Die Regeln stehen in der Datenbank
+1 -1
View File
@@ -363,7 +363,7 @@ export async function finalizeDocument(
/**
* Zurückziehen. Es gibt kein Löschen: das Dokument bleibt als Grabstein
* stehen, mit Datum, Person und Begründung. Siehe CLAUDE.md, harte Regel 2.
* stehen, mit Datum, Person und Begründung. Siehe Zusicherung 2 der README.
*/
export async function retractDocument(
p: EffectivePermissions,
+1 -1
View File
@@ -2,7 +2,7 @@
* Typprüfung über Magic Bytes.
*
* **Die Endung wird nie angesehen**, und der vom Browser gemeldete Typ nur, um
* ihn gegen den erkannten zu prüfen. Siehe CLAUDE.md, harte Regel 4.
* ihn gegen den erkannten zu prüfen. Siehe Zusicherung 4 der README.
*
* Bewusst eine eigene Signaturtabelle statt `file-type`: die Liste der
* erlaubten Typen ist kurz und geschlossen, und was nicht darin steht, wird
+1 -1
View File
@@ -1,5 +1,5 @@
/**
* Alle Oberflaechentexte. Nie deutsche Strings hart ins JSX, siehe CLAUDE.md.
* Alle Oberflaechentexte. Nie deutsche Strings hart ins JSX, siehe README.
* Die Begriffe folgen dem Glossar in docs/01-produkt.md.
*
* Schreibweise nach docs/10-design-system.md:
+1 -1
View File
@@ -1,7 +1,7 @@
/**
* Abteilungen. Die Bezeichnungen der Abteilungen selbst stehen **nicht** hier:
* das sind Daten, im Adminbereich änderbar, so wie die Namen der
* Freigabestufen. Siehe CLAUDE.md, Sprachkonvention.
* Freigabestufen. Siehe die Sprachkonvention: Code englisch, Oberflaeche deutsch.
*/
export const departmentText = {
heading: 'Abteilungen',