docs(spec): move Journey model spec to repo-root docs-src/architecture (correct location, fixes ADR links)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
# Journey Model — specification (PROPOSAL v1, decision pending)
|
||||
|
||||
- **Status:** PROPOSAL / draft — to be VALIDATED before any code. Not an accepted ADR yet.
|
||||
- **Datum:** 2026-06-28
|
||||
- **Typ:** Konzeptionelles Datenmodell (KEIN Runtime-Modul, KEINE neue Architektur)
|
||||
- **Bezug:** [ADR-003](adr/ADR-003-capability-delta-engine-with-renderers.md), [ADR-004](adr/ADR-004-implementation-playbooks.md), [ADR-009](adr/ADR-009-domain-knowledge-program.md), [ADR-010](adr/ADR-010-operational-knowledge-transition-unit.md), [[transition-reasoning]]
|
||||
|
||||
## 1. Problem
|
||||
|
||||
Wir produzieren drei Artefakte je Transition: **Transition Pattern**, **Playbook**, **Reference
|
||||
Scenario**. Alle drei beschreiben dieselbe Geschichte aus verschiedenen Blickwinkeln. Wird derselbe
|
||||
Übergang (z. B. ISO 9001 → MaschinenVO) in Pattern + Playbook + Szenario + Interview je separat
|
||||
modelliert, **duplizieren wir die Transition** — genau das Problem, das wir bei Controls/Capabilities/
|
||||
Requirements mit der Identitätsmaschine gelöst haben.
|
||||
|
||||
> Damals: *Controls nicht duplizieren.* Heute: **Transitionen nicht duplizieren.**
|
||||
|
||||
## 2. Hypothese
|
||||
|
||||
Es gibt unter den Artefakten ein gemeinsames Objekt — die **Journey** — als Wissenseinheit; alles
|
||||
andere ist ein **Renderer** (*rendered, not modeled*). Diese Spezifikation **prüft die Hypothese an der
|
||||
vorhandenen Transition ISO 27001 → CRA**, bevor irgendetwas gebaut wird.
|
||||
|
||||
## 3. Die Wissenseinheit: Journey (Vorschlag)
|
||||
|
||||
```
|
||||
Journey
|
||||
identity: from (Ausgangszustand) → to (Zielzustand) # = transition_goal
|
||||
source_variants: certified | introduced | expired | limited_scope # Start-Zustands-Varianten
|
||||
likely_covered[]: { capability, relationship, confidence_source, verification, rationale, reviewable_claim, expected_evidence }
|
||||
delta[]: { capability, why_missing, needed_information, expected_evidence, priority, dropped_if }
|
||||
rejected_assumptions[]
|
||||
# ── alles darunter ist ABGELEITET, nicht gespeichert ──
|
||||
(derived) questions ← delta (RS-005)
|
||||
(derived) measures ← delta × leverage (Optimization)
|
||||
(derived) evidence_needs ← likely_covered.expected_evidence + delta.expected_evidence
|
||||
(derived) verification ← evidence × Reality (Vision V2, künftig)
|
||||
```
|
||||
|
||||
**Wahrheits-Hierarchie:** `Atomic Requirement → Capability → Journey (× Company-Kontext bei Instanz)`.
|
||||
Alles andere wird gerendert.
|
||||
|
||||
## 4. Renderer (rendered, not modeled)
|
||||
|
||||
| Renderer | Was er zeigt | Quelle |
|
||||
|---|---|---|
|
||||
| **Transition Pattern** | die KURATIERTE generische Journey (likely_covered + delta + rationale) | = der **authored core** der Journey (gespeichert/kuratiert) |
|
||||
| **Interview** | fehlende Informationen → Fragen | `Journey.delta` (RS-005) |
|
||||
| **Roadmap** | Maßnahmen nach regulatorischem Hebel | `Journey.delta` × Leverage (Optimization) |
|
||||
| **Reference Scenario** | erwartetes Ergebnis für ein Referenz-Unternehmen | **`Journey × Company/Product-Kontext`** + Expected Outcome |
|
||||
| **Evidence-View** | welche Nachweise erfüllen die Anforderung | `Journey.evidence_needs` × Reality |
|
||||
| **Rollen-Views** | Sales→Executive Summary · Auditor→Capability Delta · Developer→Evidence · GF→Roadmap | gefilterte Projektionen DER EINEN Journey |
|
||||
|
||||
Vier Rollen-Views, aber **nur eine Journey**.
|
||||
|
||||
## 5. Validierung an ISO 27001 → CRA (grounded, nicht hypothetisch)
|
||||
|
||||
Geprüft gegen die echten Artefakte: `TP-ISO27001-CRA-v1.yaml`, die Playbooks `sbom_creation`/
|
||||
`coordinated_vulnerability_disclosure`, die Reference Scenarios `RTS-001/002/003`.
|
||||
|
||||
| Artefakt | Felder | projiziert aus der Journey? |
|
||||
|---|---|---|
|
||||
| **Transition Pattern** | `transition_goal`, `source_state_variants`, `likely_covered[]` (relationship/rationale/reviewable_claim/expected_evidence), `delta_requirements[]` (why_asked/needed_information/expected_evidence/priority/dropped_if), `rejected_assumptions` | **JA — IST der authored core der Journey** (1:1). |
|
||||
| **Interview** (RS-005) | `question_requests` aus `delta` | **JA — derived.** Kein eigenes Primärdatum. |
|
||||
| **Roadmap** (Optimization) | Maßnahmen nach Leverage aus `delta` | **JA — derived.** |
|
||||
| **Reference Scenario** | `reference_company{sector, certs, product_traits}` + `expected_outcome{cra, maschinenvo, data_act, convergence}` | **TEILWEISE — Journey × Company-Kontext.** Die Transition-Erkenntnis (likely_covered/delta) ist DIESELBE wie im Pattern; NEU ist nur der gebundene **Company/Product-Kontext** + die Expected-Outcome-Assertion (Regression). Kein dupliziertes Transitionswissen. |
|
||||
| **Playbook** | `capability_id`, `why`, `tools`, `process_steps`, `expected_evidence`, `how_others_do_it` | **NEIN — pro CAPABILITY, nicht pro Journey.** `sbom_creation` wird von JEDER Journey wiederverwendet, deren Delta SBOM enthält. Bleibt capability-owned (ADR-004); die Journey **aggregiert** die Playbooks ihrer Delta-Capabilities, besitzt sie nicht. |
|
||||
|
||||
## 6. Befund (ehrlich)
|
||||
|
||||
**Die Vereinheitlichung HÄLT — mit zwei Präzisierungen, die eine voreilige Abstraktion VERMEIDEN:**
|
||||
|
||||
1. **Pattern · Interview · Roadmap · Evidence · Rollen-Views = dieselbe Journey** (Pattern = kuratierter
|
||||
Kern; der Rest derived). → *rendered, not modeled* gilt für die abgeleiteten Sichten.
|
||||
2. **Reference Scenario = `Journey × Company-Kontext` + Expected Outcome** — kein zweites
|
||||
Transitionsmodell, sondern die Journey instanziiert für ein Referenz-Unternehmen (Regression).
|
||||
3. **Playbook = Capability-Renderer, NICHT Journey-Renderer** (andere Achse: Capability, nicht
|
||||
Transition). Die Journey aggregiert, besitzt nicht. → das ist die früh erkannte Grenze, die
|
||||
verhindert, dass wir Playbooks fälschlich in die Journey zwingen.
|
||||
|
||||
**Konsequenz:** Die Transition wird genau EINMAL kuratiert (heute „Transition Pattern" = der Journey-
|
||||
Kern). Interview/Roadmap/Reference-Outcome/Rollen-Views werden daraus gerendert. Playbooks bleiben
|
||||
capability-owned und werden referenziert. Damit ist `ISO 9001 → MaschinenVO` (und jede weitere
|
||||
Transition) ein EINZIGES kuratiertes Objekt, kein vierfach gepflegtes.
|
||||
|
||||
## 7. Neues Prinzip (Vorschlag)
|
||||
|
||||
Neben **computed, not stored** und **derived, not curated**:
|
||||
|
||||
> **rendered, not modeled** — Transition Pattern, Playbook-Aggregat, Roadmap, Interview, Rollen-View
|
||||
> sind keine eigenständigen Modelle, sondern Sichten auf Journey (+ Capability + Company-Kontext).
|
||||
|
||||
## 8. Was das NICHT ist / nächste Schritte
|
||||
|
||||
- **Kein Code, kein Runtime-Modul, keine neue Architektur** (Freeze unberührt). Diese Spec ist ein
|
||||
konzeptionelles Datenmodell zur Entscheidung.
|
||||
- **Wenn akzeptiert:** der „Transition Pattern" wird zum *Journey-Dokument* (gleiche YAML-Struktur,
|
||||
präziserer Name); Renderer bleiben abgeleitet; Playbook bleibt capability-owned. Dann ggf. ADR-011.
|
||||
- **Wenn verworfen:** die drei Artefakte bleiben getrennt — aber dieser Befund zeigt, dass sie sich zu
|
||||
~90 % aus einer Journey ergeben; das Risiko liegt nur bei der Company-Kontext-Bindung (RTS) und der
|
||||
Capability-Achse (Playbook), die ohnehin schon getrennt sind.
|
||||
- Non-runtime → kein Deploy (ADR-001).
|
||||
Reference in New Issue
Block a user