Projection Manifest
Schema-Referenz für das Projection Manifest (v1.0.0). Jede Seed→Node Projektion muss ein vollständiges, valides Manifest produzieren — 15 Pflichtfelder, State-Hash-Verifikation, deterministische Kompatibilität.
1. Zweck & Kontext
Das Projection Manifest ist die kanonische Aufzeichnung jeder Seed→Node Projektion. Es dient als Verifikations-Artefakt (Deterministik), als Review-Gate-Input (RG-006) und als Audit-Grundlage (Wer hat wann was projiziert?).
Manifest im Workflow
# Projektion Flow:
1. source-lane-discovery → Quellen klassifizieren
2. selected_paths → explizit deklarieren (P-PROJ-006)
3. Manifest befüllen (alle 15 Pflichtfelder)
4. state_hash berechnen
5. Review Gate RG-006 durchlaufen (blocking=true)
→ state_hash_pre + state_hash_post beide erforderlich
6. Projektion ausführen → Node entsteht
7. Manifest in Node archivieren
2. Pflichtfelder (alle 15)
| Feld | Typ | Constraint | Pflicht |
|---|---|---|---|
| id | string (UUID) | Eindeutige Manifest-ID, nicht wiederverwendbar | REQUIRED |
| schema_version | semver | Muss exakt 1.0.0 sein (oder aktuell gültige Version) |
REQUIRED FC |
| status | enum | draft active archived |
REQUIRED |
| created_at | ISO-8601 | Zeitpunkt der Manifest-Erstellung | REQUIRED |
| master_ref | git ref | Exakter Git-Ref (commit SHA oder tag) des Seed-Stands | REQUIRED |
| profile | enum / custom | base research cosmic + custom prefix erlaubt |
REQUIRED |
| local_context | object | Node-spezifischer Kontext (Org, Region, Custom Config). Muss vollständig sein. | REQUIRED |
| governance_rules | list[ref] | Referenzen auf angewandte Governance-Premises/Regeln | REQUIRED |
| discovery_mode | enum |
explicit-path-selection (Production OK)hybrid-candidate-report (Production OK)content-autodiscovery (→ Policy Gate erforderlich)
|
REQUIRED |
| selected_paths | list[path] | Alle projizierten Pfade explizit aufgeführt. Kein Implizit-Include. | REQUIRED FC |
| classification_map | map[path→class] |
Klassen: own reference generated imported archiveUnklassifiziert = BLOCK (P-PROJ-003) |
REQUIRED FC |
| output_node | string (path/id) | Ziel-Node-Identifikation (Repo-URL oder absoluter Pfad) | REQUIRED |
| produced_at | ISO-8601 | Zeitpunkt der tatsächlichen Projektion (≥ created_at) | REQUIRED |
| state_hash | SHA-256 hex | Deterministischer Hash über Input-Kombination (Formel unten) | REQUIRED FC |
| actor | actor_id | Wer die Projektion ausgeführt hat (Composite oder Individual Actor) | REQUIRED |
| evidence | list[artefact_ref] | Mindestens workspace-verified. model-only → explizite menschliche Freigabe nötig. | REQUIRED |
| review_gate | gate_ref | RG-006 Referenz — wenn profile in [research, cosmic] OR risk path OR content-autodiscovery | CONDITIONAL |
3. State Hash (P-PROJ-008)
Der State Hash beweist die deterministische, unmanipulierte Projektion. Gleiche Inputs = gleicher Hash. Abweichung = potenzielle Manipulation oder undokumentierte Änderung.
master_ref // exakter Git commit SHA
+ profile // base | research | cosmic | custom-*
+ local_context // serialisiert, kanonische Reihenfolge
+ classification_map // serialisiert, kanonische Reihenfolge
+ selected_paths // sortiert, normalisiert
)
Verwendung im Review Gate RG-006
RG-006 (Seed-to-Node Projection) erfordert sowohl state_hash_pre (vor Projektion) als auch
state_hash_post (nach Projektion). Der Reviewer verifiziert, dass beide konsistent sind
und keine nicht-dokumentierten Änderungen vorgenommen wurden.
# In RG-006 Artefakt:
review_gate_artefact:
gate: RG-006
manifest_id: <manifest_id>
state_hash_pre: <sha256-before> # Zustand des Seed vor Projektion
state_hash_post: <sha256-after> # Zustand des Node nach Projektion
reviewer: <actor_id> # Menschlicher Actor
timestamp: <ISO-8601>
decision: GO | NO-GO
notes: "..."
4. Classification Map
Jeder projizierte Pfad muss genau einer Klasse zugeordnet sein:
| Klasse | Bedeutung | Beispiele |
|---|---|---|
own |
IIO-eigener Content — vollständige Kontrolle | specs/, base/, Kern-Dokumente |
reference |
Extern referenziert, nicht modifiziert | External Libraries, Read-only Imports |
generated |
Auto-generierte Dateien (Build-Outputs, etc.) | Compiled assets, schema-generated files |
imported |
Aus anderen IIO-Spaces importiert (mit Consent) | Shared governance files, federated docs |
archive |
Historisch, nicht aktiv — read-only | Legacy Docs, abgeschlossene Specs |
| unclassified | VERBOTEN — Projektion wird geblockt | Jeder Pfad ohne Klasse → BLOCK (P-PROJ-003) |
Discovery Mode und Klassifizierung
| Discovery Mode | Produktions-Status | Klassifizierungs-Pflicht |
|---|---|---|
explicit-path-selection |
Production OK | Alle Pfade manuell deklariert + klassifiziert |
hybrid-candidate-report |
Production OK | Kandidaten-Report generiert, dann manuell selektiert + klassifiziert |
content-autodiscovery |
Policy Gate Required | Automatische Entdeckung → Policy-Gate-Freigabe + vollständige Nachklassifizierung |
5. Vollständiges Manifest-Beispiel
id: proj-manifest-2024-001-uuid
schema_version: "1.0.0"
status: active
created_at: "2024-01-15T09:00:00Z"
master_ref: "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"
profile: base
local_context:
org_id: example-org
region: eu-west
node_type: production
governance_rules:
- P-PROJ-001
- P-PROJ-002
- P-PROJ-006
- P-PROJ-007
- P-PROJ-008
discovery_mode: explicit-path-selection
selected_paths:
- specs/
- base/
- manual/
- theme/
classification_map:
specs/: own
base/: own
manual/: own
theme/: own
output_node: "git@gitlab.example.com:example-org/production-node.git"
produced_at: "2024-01-15T10:30:00Z"
state_hash: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
actor: hitl-operator-001
evidence:
- ref: workspace-verification-001
class: workspace-verified
review_gate: null # base profile, no risk path, explicit-path only
6. Versionskompatibilität
✓ Rückwärts-kompatibel (kein Version Bump)
- Neue optionale Felder hinzufügen
- Erlaubte Werte für ein Enum-Feld erweitern
- Dokumentation/Beschreibung klarstellen
- Patch-Level Fixes: 1.0.0 → 1.0.1
⚠ Breaking Change (Version Bump erforderlich)
- Pflichtfeld hinzufügen oder entfernen
- Feld umbenennen
- Enum-Wert entfernen oder umbenennen
- State-Hash-Formel ändern: 1.0.x → 1.1.0 (minor)
- Schema umstrukturieren: 1.x.y → 2.0.0 (major)
Manifeste mit schema_version != aktuell werden gegen die archivierte Version validiert.
Migration Guide muss bei jedem Major/Minor-Bump bereitgestellt werden.