# Epic 4 — Validation Pipeline (summary)

## goal

deterministic, replay-safe validation layer over workflow execution model (graph + transitions + sessions + events), producing a structured report and optional approval request, without influencing execution.

---

## core idea

Epic 4 is a **pure analysis layer**:

* consumes: `ValidationContext` (graph + detected cycles + policies + session state)
* produces:

  * `ValidationReport` (deterministic, hierarchical)
  * optional `ApprovalRequest` (boundary artifact)

it never:

* executes workflows
* modifies state
* triggers transitions
* enforces runtime behavior

---

## module structure

```text
core/validation
├── model
├── graph
├── transition
├── session
├── semantic
├── pipeline
└── approval
```

---

## 1. model layer

defines shared validation contract:

* `ValidationReport` (sections-based hierarchy)
* `ValidationSection`
* `ValidationIssue`
* `ValidationSeverity`
* `ValidationContext`

context is a full snapshot:

* `WorkflowGraph`
* `DetectedCycle` (from Epic 3)
* `CyclePolicyBinding`
* `SessionState`

---

## 2. graph validation

checks structural correctness only:

* start node existence
* dangling transitions (invalid stage references)
* cycle reporting (passed-through from Epic 3, no interpretation)

cycles are:

* allowed
* informational only

---

## 3. transition validation

validates engine consistency:

* transition endpoints exist in graph
* condition presence / sanity
* deterministic ordering correctness per source node

no evaluation or execution of conditions.

---

## 4. session validation

validates projection consistency:

* temporal consistency (`createdAt <= updatedAt`)
* session state sanity (`invalidTransitions >= 0`)
* light consistency checks against graph context

no replay execution or event mutation logic.

---

## 5. semantic validation

configuration-level validation layer:

* cycle-policy binding completeness (mode B: required only in execution-capable mode)
* cross-layer consistency rules
* extension point for future domain rules

cycle identity is based on:

* `CycleSignature(nodes only, normalized)`

---

## 6. pipeline executor

deterministic orchestration:

* executes validators in fixed order
* aggregates `ValidationSection`
* fully replayable and stateless

```text
Graph → Transition → Session → Semantic → Report
```

no branching logic, no execution semantics.

---

## 7. approval trigger

boundary component:

* consumes `ValidationReport`
* computes `RiskSummary`
* produces optional `ApprovalRequest`

rules:

* errors or missing cycle policies trigger approval requirement
* does not execute or control workflow system

---

## final outputs

### validation output

```text
ValidationReport
 ├── graph
 ├── transition
 ├── session
 └── semantic
```

### approval output

```text
ApprovalRequest? (optional)
```

---

## key invariants enforced

* deterministic execution (same input → same report)
* replay-safe evaluation
* no state mutation
* no execution coupling
* cycles allowed structurally
* policies required only as semantic governance, not structural correctness

---

## architectural position

Epic 4 is the **boundary correctness layer**:

> it ensures the system is internally consistent and safely configurable, without deciding how it runs.
