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?).

Schema Version: 1.0.0 Keine Projektion ohne Manifest (P-PROJ-007) Unklassifizierte Objekte = BLOCK (P-PROJ-003) content-autodiscovery erfordert Policy Gate

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 archive
Unklassifiziert = 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.

state_hash = SHA-256(
    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:

KlasseBedeutungBeispiele
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 ModeProduktions-StatusKlassifizierungs-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.

P-PROJ-003 P-PROJ-004 P-PROJ-006 P-PROJ-007 P-PROJ-008 P-REVW-001