Assessor_2.0/.claude/skills/assessor-ui/references/state-model.md

9.5 KiB
Raw Blame History

Zustandsmodell

Vor jeder Arbeit an Badges, Status, Filtern oder Zeilendarstellung lesen.

Der haeufigste Fehler in Security-Oberflaechen: mehrere fachlich verschiedene Zustaende werden in ein Badge oder eine Farbe gepresst. In ASSESSOR sind sie getrennt und formal unterscheidbar.

Inhaltsverzeichnis

  1. Die sieben Dimensionen
  2. Formfamilien
  3. Severity
  4. IOE
  5. Outcome
  6. Confidence
  7. Review State und Action State
  8. Data Completeness
  9. Bookmark, Auswahl, Fokus
  10. Kombination an einem Objekt
  11. Farbrollenmatrix

1. Die sieben Dimensionen

Dimension Fachliche Frage Wertebereich
Severity Wie schwer waere die Ausnutzung? critical, high, medium, low, info, unknown
IOE Wurde der problematische Zustand festgestellt? gefunden, nicht gefunden
Outcome Was meldet das Quellwerkzeug? pass, fail, warning, not_run, not_applicable, execution_error
Confidence Wie belastbar ist die Aussage? hoch, mittel, niedrig
Review State Wie wurde fachlich bewertet? unreviewed, in review, bestaetigt, verworfen, Risiko akzeptiert
Action State Welche Massnahme laeuft? offen, in Arbeit, blockiert, erledigt
Data Completeness Sind alle Pflichtfelder vorhanden? vollstaendig, unvollstaendig

Severity und Outcome sind nicht dasselbe. Ein Finding mit severity=critical und outcome=pass ist eine bestandene Pruefung eines kritischen Kriteriums. Das darf nie wie ein kritischer Befund aussehen.

Entscheidend fuer die Priorisierung ist die Kombination IOE gefunden plus Severity. Der Standardfilter in Work bildet genau das ab.


2. Formfamilien

Die Form traegt die Bedeutung. Farbe ist immer nur das zweite Signal.

Familie Form Reserviert fuer
Severity-Badge gefuellt, rechteckig, Versalien, 18 px hoch ausschliesslich Severity
Meta-Badge neutral gefuellt, 1-px-Rahmen, Versalien IOE, Kategorie, Tool, MITRE, Weight, Score, Confidence
Workflow-Chip Outline, 6-px-Punkt, 20 px hoch Review State, Action State
Outcome-Text Textfarbe plus Glyph, kein Hintergrund ausschliesslich Outcome
Kante 3-px-Inset links oder rechts links Severity, rechts Bookmark
Rahmenstil durchgezogen oder gestrichelt gestrichelt = unvollstaendig oder Risiko akzeptiert

Wer eine gefuellte Farbflaeche fuer etwas anderes als Severity verwendet, bricht das System.


3. Severity

Darstellung: .sev[data-sev="..."] plus .sev-edge[data-sev="..."] am umgebenden Objekt.

  • Das Badge zeigt immer den Textwert in Versalien. Nie nur ein Farbpunkt.
  • Die linke Kante wiederholt die Information ohne Farbabhaengigkeit fuer die Zeilenposition.
  • In Tabellen steht Severity in einer eigenen Spalte als Badge, nicht als Klartext.
  • unknown wird als eigenes Badge dargestellt, nie weggelassen und nie zu info umgedeutet.
  • Sortierreihenfolge immer: critical, high, medium, low, info, unknown.

Der bestehende sechseckige Severity-Glyph darf als Signaturelement erhalten bleiben. Er ist 12 px gross, uebernimmt die Severity-Farbe und ersetzt weder Badge noch Kante.


4. IOE

IOE FOUND ist ein neutrales Meta-Badge, kein Severity-Badge. Es bekommt keine Signalfarbe, weil die Signalfarbe bereits von der Severity belegt ist.

Ist kein IOE gefunden, erscheint kein Badge. Ein Badge IOE NOT FOUND erzeugt visuelles Rauschen in einer Liste, die zu 73 Prozent aus Nichtbefunden besteht. Die Information kommt ueber den Filter und ueber Outcome.


5. Outcome

Darstellung ausschliesslich .outcome[data-outcome="..."]: Glyph plus Textfarbe, nie gefuellt.

Wert Glyph Farbrolle
fail ● --outcome-fail
pass ○ --outcome-pass
warning ◐ --outcome-warning
execution_error ✕ --outcome-error
not_run – --outcome-idle
not_applicable – --outcome-idle

pass ist bewusst neutral eingefaerbt, nicht gruen. Gruen ist der Severity-Stufe low und dem Action State erledigt vorbehalten. Ein bestandener Test ist der Normalfall und braucht keine Erfolgsfarbe. Das entfernt die haeufigste Farbkollision in Scannerdaten.

not_run und not_applicable teilen sich Glyph und Farbe, unterscheiden sich aber im Text.


6. Confidence

Meta-Badge mit Text: CONF: HOCH, CONF: MITTEL, CONF: NIEDRIG.

Bei niedrig erhaelt das Objekt zusaetzlich einen gestrichelten Rahmen. Ein Finding mit niedriger Confidence darf nie so aussehen wie ein belastbarer Befund derselben Severity. Das ist eine Audit-Anforderung, keine Stilfrage.


7. Review State und Action State

Beide als .chip[data-state="..."]. Sie stehen nebeneinander und tragen jeweils ein Praefix, damit die Dimension eindeutig ist.

Chip data-state Punktfarbe
REVIEW: OFFEN (Standard) --state-open
REVIEW: IN PRUEFUNG progress --state-progress
REVIEW: BESTAETIGT done --state-done
REVIEW: VERWORFEN accepted --state-accepted, gestrichelt
RISIKO AKZEPTIERT accepted --state-accepted, gestrichelt
AKTION: OFFEN (Standard) --state-open
AKTION: IN ARBEIT progress --state-progress
AKTION: BLOCKIERT blocked --state-blocked
AKTION: ERLEDIGT done --state-done

erledigt darf die Severity nicht optisch entwerten. Das Severity-Badge bleibt unveraendert, das Objekt wird nicht ausgegraut. Ein erledigtes kritisches Finding bleibt kritisch.


8. Data Completeness

Unvollstaendige Datensaetze erhalten .is-incomplete (gestrichelter Rahmen) plus im Inspector eine Liste der fehlenden Pflichtfelder. Keine Ausblendung, keine stille Vorbelegung. Fuer Auditierbarkeit muss sichtbar sein, dass Daten fehlen.


9. Bookmark, Auswahl, Fokus

Drei verschiedene Mechanismen mit drei verschiedenen Farbrollen und drei verschiedenen Formen. Sie treten gleichzeitig auf und duerfen sich nie gegenseitig verdecken.

Zustand Traeger Farbrolle Form
Bookmark Nutzermarkierung, persistent --state-bookmark gefuelltes Icon plus rechte 3-px-Kante
Auswahl aktuelles Arbeitsobjekt --selection-border 2-px-Rahmen plus --surface-selected
Fokus Tastaturposition --focus-ring 2-px-Outline mit Offset

Die Fokusfarbe ist bewusst ein eigenstaendiges Cyan beziehungsweise Blau und mit keiner Severity-, Akzent- oder Bandfarbe verwechselbar.


10. Kombination an einem Objekt

Ein kritisches, mit Bookmark markiertes, ausgewaehltes und fokussiertes Finding zeigt gleichzeitig:

┌ 3 px Severity-Kante links (critical)
│ ┌ 2 px Auswahlrahmen, Flaeche --surface-selected
│ │ ┌ 2 px Fokus-Outline aussen
│ │ │
│ │ │  ⬢  Permission changes on AdminSDHolder object          ⚑│
│ │ │     [CRITICAL] [IOE FOUND] [AD DELEGATION] [WEIGHT: 10]  │
│ │ │     ● fail   REVIEW: OFFEN   AKTION: OFFEN               │
│ │ │                                        3 px Bookmark-Kante┘

Reihenfolge der Badges ist fest und ansichtsuebergreifend identisch:

  1. Severity
  2. IOE
  3. Kategorie
  4. Tool beziehungsweise Quelle
  5. Weight
  6. Score
  7. MITRE-Zuordnungen
  8. Confidence

Passt die Reihe nicht in die verfuegbare Breite, wird von hinten abgeschnitten und mit +n zusammengefasst. Nie umbrechen, nie neu sortieren, nie Severity abschneiden.


11. Farbrollenmatrix

Eine Farbe hat genau eine Zustaendigkeit.

Rolle Token Ausschliesslich fuer
Akzent Violett --accent Primaeraktion, aktive Ansicht, Auswahl
Band Bernstein --band-surface Controls im Command Band
Severity --sev-* gefuellte Severity-Badges und -Kanten
Outcome --outcome-* Outcome-Text und -Glyph
Workflow --state-open/progress/done/blocked/accepted Punkte in Workflow-Chips
Bookmark Teal --state-bookmark Bookmark-Icon und -Kante
Fokus --focus-ring Tastaturfokus
Systemstatus --state-online, --state-offline Verbindungsanzeige in der Status Bar
Datenvisualisierung --viz-1 bis --viz-6 kategoriale Diagrammserien
Struktur --surface-*, --border-*, --text-* Chrome und Flaechen

Eine Farbe darf niemals gleichzeitig Auswahl, Severity, Erfolg und Markenakzent ausdruecken. Genau dieser Fehler erzeugt den Eindruck einer uneinheitlichen Applikation.