diff --git a/README.md b/README.md
index fa19876..8a5dee9 100644
--- a/README.md
+++ b/README.md
@@ -128,10 +128,10 @@ Execution, scheduling glue, and Control-Time Event injection when a Control Sche
```mermaid
flowchart TB
- R1["**Runtime**
canonical Event"] --> Entry["**EventStreamEntry**
canonical Event + ProcessingPosition"]
- Entry --> Core["**TradingChassis Core**
CoreStep / CoreWakeupStep"]
- Core --> Result["**CoreStepResult**
dispatchable Intents + Control Scheduling Obligation"]
- Result --> R2["**Runtime**
dispatch / scheduling / I/O"]
+ R1["Runtime
canonical Event"] --> Entry["EventStreamEntry
canonical Event + ProcessingPosition"]
+ Entry --> Core["TradingChassis Core
CoreStep / CoreWakeupStep"]
+ Core --> Result["CoreStepResult
dispatchable Intents + Control Scheduling Obligation"]
+ Result --> R2["Runtime
dispatch / scheduling / I/O"]
```
Core never replaces the Runtime: the Runtime is responsible for feeding canonical
@@ -263,7 +263,7 @@ Control split, dispatchable Intents plus optional Control Scheduling Obligation
the Runtime, and a boundary that makes parity and testing practical—not a second
copy of decision logic per environment.
-## Public Entrypoints
+### Public Entrypoints
| Entrypoint | Purpose |
| --- | --- |
@@ -276,7 +276,7 @@ copy of decision logic per environment.
| `PolicyIntentEvaluator` | Protocol for policy admission (`evaluate_policy_intent`) |
| Risk Engine (`RiskEngine`) | Convenience `PolicyIntentEvaluator` implementation |
-## CoreWakeupStep semantics
+### CoreWakeupStep semantics
CoreWakeupStep is not "parallel Event processing".
It is deterministic batch processing: the Runtime gives Core an ordered sequence of