Transaction Atlas

Vollständige Referenz des IIO Transaction Layers — TX-Struktur, Typen, Audit-Trail, Status-Modell und Reversibilität.

1. Was ist eine Transaction?1. What is a Transaction?

Eine Transaction (TX) ist eine kontrollierte, zustandsverändernde Aktion, die von einem Actor (Individual oder Composite) ausgeführt wird, ein oder mehrere Targets betrifft und mit vollständigem Evidence und Audit-Trail aufgezeichnet wird.

Universal: Transactions folgen dem identischen Format — unabhängig ob Human, Agent oder Team ausführt. Keine Sonderbehandlung nach Actor-Typ.

actor-agnostic format full audit trail evidence-required reversibility declared fail-closed gates state-hash verified

2. Transaction-Struktur (10 Required Fields)2. Transaction Structure (10 Required Fields)

idtxn-<uuid> — globally unique
actorid + type + role (+ composite detail)
contextspace_id / plan_id / story_id / composition_id
intentNarrativer Begründungstext
targettype + id + description (was ändert sich?)
pre_stateSnapshot + aktive Constraints
operationtype + instructions + deterministic flag
post_stateSnapshot + state_hash
evidencemin. 1 Eintrag mit type/id/link/verified_by
auditGates + Constraints + TX-Hash

Vollständige YAML-AnatomieComplete YAML Anatomy

id: txn-a1b2c3d4-e5f6-7890-abcd-ef1234567890
kind: transaction
timestamp: 2024-01-20T14:30:00Z

actor:
  id: agent-copilot-001
  type: individual
  role: contributor
  # wenn composite:
  if_composite:
    composite_id: team-backend-core
    member_detail:
      executing_member: agent-copilot-001
      member_role: executor

context:
  space_id: iio-seed
  plan_id: plan-manual-build-2024
  story_id: story-skill-atlas-001
  composition_id: null     # optional

intent: >
  Erstelle den Skill Atlas als neue Manual-Seite
  im Rahmen von Story skill-atlas-001.

target:
  type: artifact
  id: iio/manual/skill-atlas.html
  description: "Neue HTML-Seite für Skill-Registry-Referenz"

pre_state:
  snapshot: {file_exists: false}
  constraints: [story_must_be_active, actor_must_have_role]

operation:
  type: create
  instructions: "create_file skill-atlas.html mit 9 sections"
  deterministic: true

post_state:
  snapshot: {file_exists: true, sections: 9, wired: false}
  state_hash: "sha256:abc123..."

evidence:
  - type: artifact_sample
    id: ev-skill-atlas-file-001
    link: iio/manual/skill-atlas.html
    verified_by: operator-alice
    verified_at: 2024-01-20T14:35:00Z

approvals:
  - actor_id: operator-alice
    role: reviewer
    signature: "hitl-sign-001"
    timestamp: 2024-01-20T14:36:00Z
    comment: "Content verified against SKILL-REGISTRY-LAYER.md"

audit:
  recorded_by: system
  timestamp_recorded: 2024-01-20T14:36:10Z
  fail_closed_gates: [actor_exists, role_resolved, permission_check]
  constraints_checked: [story_active, no_conflict]
  role_conflict_check: passed
  story_consistency: consistent
  transaction_hash: "sha256:def456..."

reversibility:
  can_reverse: true
  reversal_cost: "Datei löschen; Revisions-Index anpassen"
  auto_rollback_on_error: false

related_transactions: []
status: committed

3. Operation-Typen3. Operation Types

Sieben gültige operation.type-Werte — jede TX muss genau einen tragen:

create modify approve reject delegate escalate archive
TypTypeWannWhenMin. approvalsReversibel?
createNeues Artefakt / Zustand / Plan erzeugen0 (single actor)Ja (delete)
modifyBestehendes Artefakt oder Zustand verändern0 (bei contributor)Ja (restore pre_state)
approvePending-TX oder Gate bestätigen (GO)1 qualifizierter ReviewerSchwer (Kette)
rejectTX oder Gate ablehnen (NO-GO)1 qualifizierter ReviewerNein (immutable record)
delegateRole oder TX-Verantwortung übertragenBoth parties consentJa (re-delegate)
escalateTX an HITL oder höhere Instanz übergeben0 (auto-trigger)Nein (audit record)
archiveArtefakt/Zustand schreibschützen + einfrieren1 ownerNein (immutable)

4. TX-Typen (5 kanonische Fälle)4. TX Types (5 Canonical Cases)

Artifact Operation

Human oder Agent erstellt / modifiziert ein konkretes Artefakt (Code, Dokument, Konfiguration).

actor: alice (Contributor)
target: artifact-api-handler
operation: create
evidence: [code file, tests passing]
approvals: [qa-bot as Reviewer]

Role Assignment

Composite Actor weist einem Member eine neue Role zu (z.B. Promotion zu Architect).

actor: composite-team-backend (via alice)
target: role-assignment
operation: modify
context: bob bekommt role "Architect"
evidence: [vote result, consent]
approvals: [team-lead alice]

State Transition

Agent oder System aktualisiert geteilten Zustand (z.B. Story-Status, Build-State).

actor: validator-bot (Validator)
target: shared_state
operation: modify
pre_state: {status: "building"}
post_state: {status: "testing-gate-passed"}
evidence: [test results, logs]

Story Consistency Check

Prüft, ob Member-Stories innerhalb einer Composition konsistent sind (P-STORY-003).

actor: composition-safety-monitor
target: story-consistency
operation: verify
context: P-STORY-003 compliance
evidence: [both stories analyzed]
status: consistent | inconsistent_fail_closed

Boundary Access

Externer Actor beantragt Zugang zur Composition — genehmigt oder abgelehnt.

actor: external-actor-org-x
target: boundary-access-request
operation: request
context: composition-team-backend
evidence: [access request, auth]
approvals: [team-lead alice]
status: granted | denied

5. TX Status-Modell5. TX Status Model

StatusBadgeBedeutungMeaningNächster SchrittNext Step
committed committed TX vollständig abgeschlossen, Zustand gespeichert Keine (Endstatus)
pending_approval pending TX wartet auf Reviewer-Genehmigung oder HITL-Gate approve / reject
failed failed TX-Ausführung gescheitert (Gate fail, Constraint violated) error_reason lesen, neu versuchen oder eskalieren
rolled_back rolled back TX zurückgesetzt; pre_state wiederhergestellt Ursache analysieren, neue TX erstellen

Status-ÜbergängeStatus Transitions

                ┌─────────────┐
                │  executing  │
                └──────┬──────┘
         gates OK?     │        gates FAIL?
              ┌────────┴────────┐
              ▼                 ▼
    ┌──────────────────┐   ┌─────────┐
    │ pending_approval │   │  failed │
    └────────┬─────────┘   └─────────┘
    approved?│  rejected?
      ┌──────┴──────┐
      ▼             ▼
┌──────────┐  ┌──────────┐
│committed │  │  failed  │
└──────────┘  └──────────┘
      │ auto_rollback_on_error=true
      ▼
┌─────────────┐
│ rolled_back │
└─────────────┘

6. Audit Trail Anatomie6. Audit Trail Anatomy

Jede TX schreibt automatisch in den Audit-Log. Der Log ist append-only, nie editierbar.

TX Initiierung

Actor sendet TX-Request. System prüft: actor_exists, role_resolved, permission_check, story_active.

Gate-Cascade

fail_closed_gates werden der Reihe nach geprüft. Erster Fail → TX sofort gestoppt, reason geloggt.

Pre-State Snapshot

Aktueller Zustand der Targets wird gespeichert. Basis für späteres Rollback.

Operation Execution

Deterministisch: gleiche Instruktionen → gleicher Endzustand. Non-deterministic: muss explizit geflaggt werden.

Post-State Snapshot + Hash

Neuer Zustand wird gespeichert + kryptographisch gehasht (state_hash). Manipulations-Nachweis.

Evidence & Approvals Attached

Evidence-Links werden gespeichert. Approval-Signaturen hängen an TX.

TX-Hash committed

Gesamter TX-Record wird gehasht (transaction_hash). Eintrag ist ab hier unveränderlich.

Audit-Felder im DetailAudit Fields in Detail

FeldFieldWert / TypValue / TypeBedeutungMeaning
recorded_bysystemImmer system — nicht überschreibbar
timestamp_recordedISO8601Wann TX in Log geschrieben wurde
fail_closed_gatesListeAlle geprüften Gates (auch die bestandenen)
constraints_checkedListeAktive Constraints zum Ausführungszeitpunkt
role_conflict_checkpassed / flaggedKein Actor in widersprüchlichen Roles?
story_consistencyconsistent / warningTX passt zu aktiver Story?
transaction_hashsha256Kryptographischer Fingerabdruck der TX

7. Reversibilitäts-Modell7. Reversibility Model

Jede TX deklariert explizit, ob und mit welchem Aufwand sie rückgängig gemacht werden kann.

Einfach
File created → delete; state changed → restore pre_state.
auto_rollback: true empfohlen.
Mittel
Role assigned → re-assign; Composition member added → remove (mit Consent).
Schwer
Approved TX (Kette folgeabhängiger TX); Published Revision.
Neues NO-GO + neue TX notwendig.
Nie
Audit-Log-Eintrag, TX-Hash, archive-Operation — immutable by design.

Rollback-Fluss (auto_rollback_on_error: true)Rollback Flow (auto_rollback_on_error: true)

TX Execution Error
  → System detects operation failure
  → pre_state snapshot loaded
  → Target restored to pre_state
  → TX status set to: rolled_back
  → error_reason recorded
  → Audit-Log entry written (immutable)
  → Notification: actor + composition_lead

8. Composite Actor — TX Zurechnung8. Composite Actor — TX Attribution

Wenn ein Team (Composite Actor) eine TX ausführt, wird der ausführende Member im actor.if_composite.member_detail-Block festgehalten. Die TX ist dem Team zugerechnet — nicht dem Einzelmitglied.

actor:
  id: composite-team-backend
  type: composite
  role: contributor-team
  if_composite:
    composite_id: team-backend-core
    member_detail:
      executing_member: agent-copilot-001
      member_role: executor    # Rolle des Members IN der Composition

# → TX wird "team-backend-core" zugerechnet
# → Audit: "executing via agent-copilot-001"
# → member_role legt Berechtigungs-Check fest

Dies ermöglicht vollständige Traceability: Wer hat angeordnet (Composite Actor)? Wer hat ausgeführt (executing_member)?

9. Fail-Closed TX-Regeln9. Fail-Closed TX Rules

BedingungConditionReaktionResponse
Actor nicht registriertTX sofort verweigert — keine weitere Prüfung
Role kann nicht aufgelöst werdenTX verweigert — kein Rat Limit-Workaround möglich
Target-Permission fehlt für RoleTX verweigert, Reason geloggt
Evidence-Liste leerTX verweigert — keine blindenTransaktionen
Audit-Schreiben schlägt fehlTX verweigert — kein blinder Commit
deterministic: false + keine GenehmigungTX pending_approval zwingend
pre_state Snapshot nicht möglichTX verweigert — kein Rollback-Fundament
state_hash-Berechnung fehlgeschlagenTX verweigert — Integritätsverlust