feat: Pass 0b prompt v2 — container detection, merge-key, evidence separation, actionable titles
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -394,18 +394,40 @@ ANALYSE-SCHRITTE (intern durchfuehren, NICHT im Output!):
|
|||||||
4. Bestimme den Nachweis (welches Dokument/Artefakt belegt Compliance?)
|
4. Bestimme den Nachweis (welches Dokument/Artefakt belegt Compliance?)
|
||||||
|
|
||||||
WICHTIGE REGELN:
|
WICHTIGE REGELN:
|
||||||
- Ein Control = EINE pruefbare Handlung. Nicht mehrere Handlungen mischen.
|
|
||||||
- Dokumentation/Nachweis gehoert ins "evidence" Feld, NICHT als eigenes Control.
|
1. ATOMARITAET: Ein Control = EINE pruefbare Handlung. Nicht mehrere mischen.
|
||||||
FALSCH: "SBOM fuehren" + "SBOM dokumentieren" = 2 Controls
|
|
||||||
RICHTIG: "SBOM fuehren" = 1 Control, Dokumentation = Evidence
|
2. EVIDENCE ≠ CONTROL: Dokumentation, Nachweis, Auditbericht, Zertifizierung,
|
||||||
- Zertifizierung, Abdeckungspruefung, Audit-Berichte = Evidence, KEIN eigenes Control.
|
Screenshot, Export = Evidence-Feld. KEIN eigenes Control daraus machen.
|
||||||
- Security-Lifecycle sauber trennen: identifizieren, bewerten, beheben, ueberwachen
|
FALSCH: "SBOM fuehren" + "SBOM dokumentieren" = 2 Controls
|
||||||
sind je EIGENE Controls (verschiedene Handlungen, verschiedene Verantwortliche).
|
RICHTIG: "SBOM fuehren" = 1 Control, Dokumentation im Evidence-Feld.
|
||||||
- "Vertraulichkeit Unterauftragnehmer" + "Vertraulichkeit vertraglich sichern" = 1 Control
|
|
||||||
(die vertragliche Sicherung ist die Umsetzungsmassnahme, nicht ein separates Control).
|
3. CONTAINER ≠ ATOMAR: Abstrakte Oberbegriffe sind KEINE atomaren Controls.
|
||||||
- Der Titel muss die HANDLUNG enthalten, nicht nur den Gegenstand.
|
FALSCH als atomares Control: "Sichere Sitzungsverwaltung", "Token-Schutz",
|
||||||
FALSCH: "Vertraulichkeit Mitarbeiter"
|
"Sorgfaltspflicht Drittkomponenten", "Umfassendes Risikomanagement".
|
||||||
RICHTIG: "Mitarbeiter zur Vertraulichkeit verpflichten"
|
Wenn die Pflicht ein Container ist, zerlege sie in die konkreten Massnahmen.
|
||||||
|
|
||||||
|
4. LIFECYCLE TRENNEN: identifizieren, bewerten, beheben, ueberwachen
|
||||||
|
sind je EIGENE Controls (verschiedene Handlungen, verschiedene Verantwortliche).
|
||||||
|
|
||||||
|
5. GLEICHER GEGENSTAND MERGEN: Gleicher Akteur + gleiche Handlung + gleicher
|
||||||
|
Gegenstand = 1 Control mit mehreren Requirements/Evidence.
|
||||||
|
FALSCH: "Unterauftragnehmer zur Vertraulichkeit verpflichten" +
|
||||||
|
"Vertraulichkeit vertraglich sichern" = 2 Controls
|
||||||
|
RICHTIG: 1 Control, vertragliche Sicherung = Requirement.
|
||||||
|
|
||||||
|
6. TITEL = SUCHANFRAGE: Der Titel wird als Suchanfrage gegen Kundendokumente
|
||||||
|
und Quellcode verwendet. Er muss die HANDLUNG enthalten.
|
||||||
|
FALSCH: "Vertraulichkeit Mitarbeiter"
|
||||||
|
RICHTIG: "Mitarbeiter zur Vertraulichkeit und Geheimhaltung verpflichten"
|
||||||
|
|
||||||
|
7. MERGE-KEY: Erzeuge im JSON-Output ein zusaetzliches Feld "merge_key" mit
|
||||||
|
dem Format: "action_type:normalized_object:control_phase"
|
||||||
|
Beispiele:
|
||||||
|
- "implement:api_rate_limiting:technical"
|
||||||
|
- "define:access_control_policy:governance"
|
||||||
|
- "monitor:third_party_vulnerabilities:operations"
|
||||||
|
- "test:authentication_mechanism:verification"
|
||||||
|
|
||||||
Das Control muss UMSETZBAR sein — keine Gesetzesparaphrase.
|
Das Control muss UMSETZBAR sein — keine Gesetzesparaphrase.
|
||||||
Antworte NUR als JSON. Keine Erklaerungen."""
|
Antworte NUR als JSON. Keine Erklaerungen."""
|
||||||
@@ -2077,13 +2099,14 @@ Quellreferenz: {source_ref}
|
|||||||
|
|
||||||
Antworte als JSON:
|
Antworte als JSON:
|
||||||
{{
|
{{
|
||||||
"title": "Kurzer Titel (max 80 Zeichen, deutsch)",
|
"title": "Kurzer Titel (max 80 Zeichen, deutsch, HANDLUNG enthalten)",
|
||||||
"objective": "Was muss erreicht werden? (1-2 Sätze)",
|
"objective": "Was muss erreicht werden? (1-2 Sätze)",
|
||||||
"requirements": ["Konkrete Anforderung 1", "Anforderung 2"],
|
"requirements": ["Konkrete Anforderung 1", "Anforderung 2"],
|
||||||
"test_procedure": ["Prüfschritt 1", "Prüfschritt 2"],
|
"test_procedure": ["Prüfschritt 1", "Prüfschritt 2"],
|
||||||
"evidence": ["Nachweis 1", "Nachweis 2"],
|
"evidence": ["Nachweis/Dokument/Artefakt 1", "Nachweis 2"],
|
||||||
"severity": "critical|high|medium|low",
|
"severity": "critical|high|medium|low",
|
||||||
"category": "security|privacy|governance|operations|finance|reporting"
|
"category": "security|privacy|governance|operations|finance|reporting",
|
||||||
|
"merge_key": "action_type:normalized_object:control_phase"
|
||||||
}}"""
|
}}"""
|
||||||
|
|
||||||
|
|
||||||
@@ -2168,13 +2191,14 @@ Antworte als JSON-Objekt. Fuer JEDE Pflicht ein Key (die Pflicht-ID):
|
|||||||
|
|
||||||
Jedes Control hat dieses Format:
|
Jedes Control hat dieses Format:
|
||||||
{{
|
{{
|
||||||
"title": "Kurzer Titel (max 80 Zeichen, deutsch)",
|
"title": "Kurzer Titel (max 80 Zeichen, deutsch, HANDLUNG enthalten)",
|
||||||
"objective": "Was muss erreicht werden? (1-2 Sätze)",
|
"objective": "Was muss erreicht werden? (1-2 Sätze)",
|
||||||
"requirements": ["Konkrete Anforderung 1", "Anforderung 2"],
|
"requirements": ["Konkrete Anforderung 1", "Anforderung 2"],
|
||||||
"test_procedure": ["Prüfschritt 1", "Prüfschritt 2"],
|
"test_procedure": ["Prüfschritt 1", "Prüfschritt 2"],
|
||||||
"evidence": ["Nachweis 1", "Nachweis 2"],
|
"evidence": ["Nachweis/Dokument/Artefakt 1", "Nachweis 2"],
|
||||||
"severity": "critical|high|medium|low",
|
"severity": "critical|high|medium|low",
|
||||||
"category": "security|privacy|governance|operations|finance|reporting"
|
"category": "security|privacy|governance|operations|finance|reporting",
|
||||||
|
"merge_key": "action_type:normalized_object:control_phase"
|
||||||
}}"""
|
}}"""
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user