docs(16): close Phase 16 UAT with A1 accepted as an open assumption
Tessera CI/CD / Lint & Type Check (push) Successful in 46s
Tessera CI/CD / Tests (push) Successful in 52s
Tessera CI/CD / Build & Publish Images (push) Successful in 7s

The user has no write access to the company AD, so tests 1, 3, 4 and 8 cannot
be run there, and building a throwaway domain controller for them was judged
disproportionate now that the one substantive defect at this spot is found and
fixed (UAT test 2 -> quick task 260811-f9i).

Recorded rather than hidden: A1 (objectGUID survives a rename) now rests on
Microsoft's documentation, not on our own measurement. The Tessera-side rename
and delete logic stays covered by unit tests against fixtures. If a rename ever
fails to propagate in production, 16-VERIFICATION.md names that as the starting
point.

Phase 16 marked complete in STATE.md.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-11 13:21:21 +02:00
parent f0c763d3e2
commit 234f80b4fb
3 changed files with 90 additions and 33 deletions
@@ -1,8 +1,10 @@
---
phase: 16-ad-gruppen-synchronisation
verified: 2026-08-06T15:07:32Z
status: human_needed
score: 5/5 must-haves (code-level) — 2 davon PRESENT_BEHAVIOR_UNVERIFIED wegen ungeprüfter Live-AD-Annahmen
status: accepted_with_open_assumptions
accepted_at: 2026-08-11
accepted_by: user
score: 5/5 must-haves (code-level) — 2 davon PRESENT_BEHAVIOR_UNVERIFIED wegen ungeprüfter Live-AD-Annahmen; A2 am 2026-08-11 geprüft, widerlegt und der gefundene Fehler behoben (260811-f9i)
behavior_unverified: 2
overrides_applied: 0
human_verification:
@@ -37,6 +39,40 @@ behavior_unverified_items:
# Phase 16: AD-Gruppen-Synchronisation Verification Report
## Nachtrag 2026-08-11 — Abschluss der offenen Punkte
Die sechs `human_verification`-Punkte unten sind am 2026-08-11 abgearbeitet
worden, mit einem substanziellen Fund und einer bewussten Entscheidung:
**Geprüft und bestanden (Browser, alpha.tessera.ctl.de, Playwright):** die
Import-Sektion, der Gruppen-Dialog in allen drei Zuständen, der Fehlerpfad des
Sync-Berichts und die Spaltensuche der Freigabe-Matrix unter internem wie
AD-Namen. Details in `16-UAT.md`, Tests 5 bis 7.
**Geprüft und WIDERLEGT — Annahme A2:** der binäre `(objectGUID=...)`-Filter
wurde als escapter String gebaut und fand am echten AD nie etwas, auch nicht für
existierende Objekte. Beide Suchen der Existenzprüfung teilten sich diesen
Filter, also hätte der erste echte Sync-Lauf jede AD-gebundene Gruppe samt
Mitgliedschaften und Modulfreigaben gelöscht. Behoben in Quick-Task 260811-f9i
(Commit `d2019dc`): `EqualityFilter` über den rohen Buffer, gegengeprüft am
echten Verzeichnis, plus zwei Regressionstests. Damit ist SC-4 nicht mehr
`PRESENT_BEHAVIOR_UNVERIFIED`, sondern in seiner kritischen Mechanik belegt.
**Bewusst nicht geprüft — Annahme A1 und die End-to-End-Läufe (Tests 1, 3, 4, 8):**
der User hat keine Schreibrechte im AD, und der Ersatzweg über einen eigenen
Wegwerf-Domänencontroller wurde als unverhältnismäßig verworfen, nachdem der eine
substanzielle Fehler bereits gefunden war. A1 (objectGUID übersteht eine
Umbenennung) stützt sich damit auf die Microsoft-Dokumentation, nicht auf eine
eigene Messung. Die Tessera-seitige Umbenennungs- und Löschlogik ist durch
Unit-Tests gegen Testdaten belegt. Fällt im Betrieb auf, dass eine Umbenennung
nicht nachzieht, ist das der Ansatzpunkt — siehe `16-UAT.md`, Abschnitt
"Entscheidung 2026-08-11".
Ebenfalls offen und bewusst so belassen: die Zahlenzeilen eines ERFOLGREICHEN
Sync-Laufs (Test 7, zweiter Teil). Die lassen sich ohne AD-Rechte nachholen,
sobald einmal ein Sync mit eng gesetztem Filter auf alpha läuft.
**Phase Goal:** Ausgewählte AD-Gruppen werden als Tessera-Gruppen angelegt und dauerhaft nachgeführt, statt jede Gruppe von Hand anzulegen und zu binden. Der Admin wählt aus der AD-Gruppenliste aus, welche Gruppen übernommen werden; der bestehende Benutzer-Sync hält Bestand, Namen und Mitgliedschaften danach aktuell.
**Verified:** 2026-08-06T15:07:32Z
**Status:** human_needed