Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
ca65752
docs: add Tokamak EL client decision and planning documents
cd4761 Feb 22, 2026
adbfeca
docs: revise DECISION.md per Volkov R6 review feedback
cd4761 Feb 22, 2026
52fa4bc
docs: update HANDOFF.md with session progress and Volkov R6 results
cd4761 Feb 22, 2026
36f9bf7
docs: finalize DECISION.md with agent model and add development commands
cd4761 Feb 22, 2026
c1e4f98
docs: add ethrex architecture analysis and Phase 1.1 infrastructure
cd4761 Feb 22, 2026
42ebbe9
docs: fix architecture docs per Volkov R8-R10 review (8.25 PROCEED)
cd4761 Feb 22, 2026
864ac9e
docs: mark Phase 1.1 complete, update HANDOFF for next phases
cd4761 Feb 22, 2026
3ed011b
feat: Phase 1.2 — feature flag split, CI workflow, fork adjustments
cd4761 Feb 22, 2026
f6d6ac3
feat: Phase 1.3 — benchmarking foundation with opcode timing CI
cd4761 Feb 22, 2026
cfb1616
style(l1): fix cargo fmt formatting in tokamak-bench
cd4761 Feb 22, 2026
c00435a
ci(l1): add rustfmt/clippy components to pr-tokamak workflow
cd4761 Feb 22, 2026
75b8397
ci(l1): handle missing tokamak-bench on base branch gracefully
cd4761 Feb 22, 2026
378349b
ci(l1): fix shellcheck SC2129 in pr-tokamak-bench workflow
cd4761 Feb 22, 2026
8f55975
fix(l1): add clippy allows for perf_opcode_timings and jit modules
cd4761 Feb 23, 2026
4ed0988
feat(l1): add missing JIT infrastructure modules
cd4761 Feb 23, 2026
a9b600e
feat(l1): add tokamak-jit compiler infrastructure and Phase 2 docs
cd4761 Feb 23, 2026
d698c65
ci(l1): update JIT backend CI to LLVM 21 with continue-on-error
cd4761 Feb 23, 2026
274dddb
fix(l1): allow indexing in JIT analyzer test module
cd4761 Feb 23, 2026
57e6d0a
fix(l1): allow vec_init_then_push in JIT fibonacci test
cd4761 Feb 23, 2026
4a472bb
feat(l1): wire JIT execution path through LEVM dispatch
cd4761 Feb 23, 2026
ca7222e
style(l1): fix cargo fmt in JIT fibonacci test
cd4761 Feb 23, 2026
5b147ca
style(l1): apply formatter to JIT execution wiring files
cd4761 Feb 23, 2026
2c8137b
feat(l1): implement Phase 4 production JIT hardening
cd4761 Feb 23, 2026
9d6e3f9
feat(l1): implement Phase 5 advanced JIT with multi-fork, background …
cd4761 Feb 23, 2026
5738e03
fix(l1): address Volkov R11 mandatory fixes for Phase 5 JIT
cd4761 Feb 23, 2026
afe41bc
feat(l1): implement Phase 6 CALL/CREATE resume and LLVM memory manage…
cd4761 Feb 23, 2026
28112bb
fix(l1): address Volkov R12 mandatory fixes for Phase 6 JIT
cd4761 Feb 23, 2026
413156a
fix(l2): keep newest items instead of oldest in monitor widgets (#6197)
avilagaston9 Feb 23, 2026
33524fe
fix(l1): address Volkov R13-R14 mandatory fixes for Phase 6 JIT
cd4761 Feb 23, 2026
adc0b8d
fix(levm): address Volkov R15 mandatory fixes for JIT test isolation
cd4761 Feb 23, 2026
d45e022
feat(l1): bal batched read and parallel state root calculation (#6227)
edg-l Feb 23, 2026
825c2ed
fix(levm): address Volkov R16 fixes for JIT test isolation completeness
cd4761 Feb 23, 2026
e2bb60f
docs(l1,l2): fix broken links in docs (#6240)
iovoid Feb 23, 2026
ba19676
fix(l1): add anti-amplification check to discv5 handle_find_node (#6200)
ElFantasma Feb 23, 2026
b02653b
refactor(l1): avoid extra allocations in RLPx handshake (#5531)
Snezhkko Feb 23, 2026
a40617e
perf(l1): add precompile result cache shared between warmer and execu…
ilitteri Feb 23, 2026
6583cf1
feat(l1): store validated ENR from handshake in peer table (#6109)
mikhailofff Feb 23, 2026
49226d5
perf(l1): check self before parent in Substate warm/cold lookups (#6244)
ilitteri Feb 23, 2026
da0ddba
feat(l2): enable distributed proving and multi-batch verification (#6…
avilagaston9 Feb 23, 2026
41febaf
feat(levm): implement Phase 7 dual-execution validation for JIT
cd4761 Feb 24, 2026
572bd51
fix(levm): address Volkov R17 mandatory fixes for Phase 7 dual execution
cd4761 Feb 24, 2026
c146ec5
fix(levm): address Volkov R18 mandatory fixes for Phase 7 dual execution
cd4761 Feb 24, 2026
109d47d
fix(levm): address Volkov R19 mandatory fix for code_hash comparison
cd4761 Feb 24, 2026
e0c3213
docs(l1): update HANDOFF with Phase 7 completion and Phase 8 roadmap
cd4761 Feb 24, 2026
2d072b8
feat(levm): implement Phase 8 JIT benchmarking infrastructure
cd4761 Feb 24, 2026
3350eed
fix(levm): fix tokamak-jit compilation errors and run JIT benchmarks
cd4761 Feb 24, 2026
c76605a
fix(levm): address Volkov R21 mandatory fixes M1-M5 for Phase 8B
cd4761 Feb 24, 2026
8d675f6
perf(l1): expand fast-path dispatch in LEVM interpreter loop (#6245)
ilitteri Feb 24, 2026
64565c8
fix(levm): address Volkov R22 mandatory fixes for Phase 8B
cd4761 Feb 24, 2026
fccb16f
fix(l1): fix p2p use consistent encoding for blob tx size in NewPoole…
edg-l Feb 24, 2026
8103e18
fix(l1): fix broadcast_pool race and offload tx pool insertion to bac…
edg-l Feb 24, 2026
8ec0745
feat(l1): detect external IP via PONG recipient_addr voting (#5914)
ElFantasma Feb 24, 2026
0558ca1
fix(levm): address Volkov R23 mandatory fixes for JIT test quality
cd4761 Feb 24, 2026
bb31f4f
feat(l1,l2): add environment variables to more CLI options (#6235)
iovoid Feb 24, 2026
fc720f4
ci(levm): add Hive test integration and sync verification for tokamak…
cd4761 Feb 25, 2026
3dac1c5
docs(tokamak): add roadmap and status tracking documents
cd4761 Feb 25, 2026
cbef92f
fix(levm): fix actionlint warning and cargo fmt issues
cd4761 Feb 25, 2026
68ade24
style(levm): apply cargo fmt to tokamak crates
cd4761 Feb 25, 2026
3ce36b9
fix(levm): merge upstream main and fix execute_precompile API change
cd4761 Feb 25, 2026
224921e
refactor(levm): improve test quality and add benchmark statistics
cd4761 Feb 25, 2026
bd8e881
style(levm): fix formatting after upstream merge
cd4761 Feb 25, 2026
753f9a8
docs(tokamak): update roadmap and status with verified CI results
cd4761 Feb 25, 2026
71f39d2
fix(tokamak-jit): fix negative gas refund bug and add gas alignment t…
cd4761 Feb 25, 2026
e6be00f
docs(tokamak): mark B-1 JIT gas alignment as complete
cd4761 Feb 25, 2026
d17a71c
feat(tokamak-bench): add JIT speedup regression detection CI (C-1)
cd4761 Feb 25, 2026
6e22a36
docs(tokamak): mark C-1 JIT benchmark CI as complete
cd4761 Feb 25, 2026
5ea9c83
ci(tokamak): add reusable LLVM 21 composite action (C-2)
cd4761 Feb 25, 2026
9cb61d4
docs(tokamak): mark C-2 LLVM 21 CI provisioning as complete
cd4761 Feb 25, 2026
2126e23
feat(tokamak-jit): add EIP-7928 BAL recording to JIT sload/sstore pat…
cd4761 Feb 25, 2026
e61ec1a
docs(tokamak): mark B-3 EIP-7928 BAL recording as complete
cd4761 Feb 25, 2026
ff3396e
feat(tokamak-jit): add bytecode size limit with graceful interpreter …
cd4761 Feb 25, 2026
8a8593f
docs(tokamak): mark D-2 bytecode size limit fallback as complete
cd4761 Feb 25, 2026
38091b2
refactor(tokamak-jit): centralize bytecode size check into JitConfig:…
cd4761 Feb 25, 2026
fec956f
feat(tokamak-jit): add constant folding optimizer for JIT compilation…
cd4761 Feb 25, 2026
eb84f9a
docs(tokamak): mark D-3 opcode fusion / constant folding as complete
cd4761 Feb 25, 2026
2a04aa9
ci(tokamak): fix assertoor URL for fork + enable debug assertions for…
cd4761 Feb 25, 2026
8f24051
ci(tokamak): switch sync workflow to ubuntu-latest with Kurtosis install
cd4761 Feb 25, 2026
8f0328d
ci(tokamak): increase Hoodi sync timeout from 1h to 3h
cd4761 Feb 25, 2026
c4c0f9f
docs(tokamak): update STATUS.md to reflect D-3 constant folding compl…
cd4761 Feb 25, 2026
03affff
feat(tokamak-debugger): add time-travel TX replay engine with opcode-…
cd4761 Feb 25, 2026
9da2baf
docs(tokamak): mark A-2 Hoodi sync and A-4 Phase 1.2 as complete
cd4761 Feb 25, 2026
b6f304d
feat(tokamak-debugger): add GDB-style interactive CLI for time-travel…
cd4761 Feb 26, 2026
278cf73
docs(tokamak): update STATUS.md to reflect E-2 debugger CLI completion
cd4761 Feb 26, 2026
ff3159a
docs(tokamak): mark E-2 debugger CLI as complete in ROADMAP
cd4761 Feb 26, 2026
a8f8474
feat(tokamak-debugger): add debug_timeTravel JSON-RPC endpoint (E-3)
cd4761 Feb 26, 2026
57616d5
feat(tokamak-bench): add cross-client benchmarking via eth_call (F-1)
cd4761 Feb 26, 2026
0e585ca
feat(tokamak-jit): add fuzzing harnesses and safety audit documentati…
cd4761 Feb 26, 2026
b2def75
feat(tokamak): real differential fuzzing + F-2 dashboard design spec
cd4761 Feb 26, 2026
3294bdf
feat(dashboard): add public performance dashboard MVP (F-2)
cd4761 Feb 26, 2026
dfa74cb
docs(tokamak-jit): mention differential fuzzing in SAFETY_AUDIT.md
cd4761 Feb 26, 2026
2d288ac
docs(tokamak): mark F-2 Public Dashboard MVP as complete in ROADMAP a…
cd4761 Feb 26, 2026
f331263
feat(tokamak): add L2 integration scaffolding with tokamak-l2 feature…
cd4761 Feb 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .claude/commands/bench.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Benchmark Runner

`perf_opcode_timings` 기반 벤치마크를 실행하고 결과를 분석한다.

## 실행 순서

1. `cargo build --release --features perf_opcode_timings` 빌드
2. 빌드 성공 확인
3. 벤치마크 실행 (가능한 경우):
- 테스트넷(Holesky) 블록 실행으로 타이밍 수집
- 또는 EF 테스트 벡터로 opcode 타이밍 수집
4. `RUST_LOG=info` 환경에서 출력 파싱
5. 결과 분석:
- 가장 느린 opcode Top 10
- 이전 실행 대비 회귀(regression) 감지
- SSTORE/SLOAD/CALL 등 핵심 opcode 타이밍 변화

## 회귀 감지 기준

- 개별 opcode 평균 시간이 이전 대비 20%+ 증가: WARNING
- 개별 opcode 평균 시간이 이전 대비 50%+ 증가: REGRESSION
- 전체 블록 실행 시간이 이전 대비 10%+ 증가: REGRESSION

## 보고 형식

```
[BENCH] {STABLE|WARNING|REGRESSION}
- build: perf_opcode_timings={success|failed}
- top 10 slowest opcodes:
1. {OPCODE} {avg_time} ({call_count} calls)
...
- regressions: {none | list with % change}
- total block time: {duration}
```
77 changes: 77 additions & 0 deletions .claude/commands/debugger.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# Time-Travel Debugger Developer

Time-Travel Debugger 전문 개발자 모드. opcode별 state snapshot, 트랜잭션 리플레이, RPC endpoint에 특화.

## 역할

ethrex의 LevmCallTracer를 확장하여 opcode 단위 Time-Travel Debugging을 구현한다.

## 기존 인프라

```rust
// crates/vm/levm/src/tracing.rs
pub struct LevmCallTracer {
// 현재: call-level 트레이싱
// 확장: opcode-level state snapshot 추가
}
```

## 구현 설계

### 1. State Snapshot 구조

```rust
pub struct OpcodeSnapshot {
pub pc: usize,
pub opcode: Opcode,
pub stack: Vec<U256>, // 스택 상태
pub memory: Vec<u8>, // 메모리 상태 (선택적, 큰 데이터)
pub storage_changes: Vec<(Address, U256, U256)>, // (addr, key, value)
pub gas_remaining: u64,
pub gas_used: u64,
}

pub struct TxTimeline {
pub tx_hash: B256,
pub snapshots: Vec<OpcodeSnapshot>,
pub total_opcodes: usize,
}
```

### 2. 확장 포인트

```rust
// vm.rs — run_execution() 루프 내
loop {
let opcode = self.current_call_frame.next_opcode();
// ← snapshot 캡처 포인트
let op_result = match opcode { ... };
// ← post-execution snapshot
}
```

### 3. RPC Endpoint

```
debug_timeTravel(tx_hash, opcode_index) → OpcodeSnapshot
debug_timeTravelRange(tx_hash, start, end) → Vec<OpcodeSnapshot>
debug_timeTravelSearch(tx_hash, condition) → Vec<OpcodeSnapshot>
```

## 작업 흐름

1. LevmCallTracer 분석 → 확장 포인트 식별
2. OpcodeSnapshot 구조체 구현
3. run_execution() 루프에 snapshot 캡처 통합
4. RPC endpoint 구현
5. CLI 디버거 인터페이스
6. 메모리 사용량 최적화 (lazy snapshot, COW)

## 주의사항

- Phase 2 (Month 3-4)에 착수
- snapshot 캡처는 성능 오버헤드 → feature flag로 격리
- 메모리 사용량 주의: 대형 트랜잭션은 수천 개 opcode → snapshot 압축 필요
- 기존 `debug_traceTransaction` RPC와 호환성 유지

$ARGUMENTS
40 changes: 40 additions & 0 deletions .claude/commands/diff-test.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Differential Testing

ethrex와 Geth의 실행 결과를 비교하여 불일치를 탐지한다.
Continuous Benchmarking(Tier S #10)의 핵심 검증 메커니즘이자
Agent 생성 코드의 최종 안전장치.

## 목적

- Agent가 수정한 EVM 코드가 합의를 위반하지 않는지 검증
- Geth/Reth와의 state root 불일치 탐지
- Agent ↔ Agent 리뷰의 순환 참조 방지 (외부 기준점으로 Geth 사용)

## 실행 순서

1. `crates/vm/levm/` 하위 파일이 변경되었는지 확인
- 변경 없으면 "EVM 미변경 — diff test 생략" 출력 후 종료
2. `cargo build --release` (ethrex 빌드)
3. Ethereum execution-spec-tests 또는 Hive 테스트 중 subset 실행:
- `cargo test -p levm` — LEVM 유닛 테스트
- EF 테스트 벡터가 있으면 실행하여 state root 비교
4. 결과 비교:
- state root 일치: PASS
- state root 불일치: FAIL — 불일치 트랜잭션/블록 식별

## 불일치 발견 시

1. 불일치 트랜잭션의 opcode trace 비교
2. 어디서 분기하는지 식별 (opcode 단위)
3. 원인 분석: Tokamak 수정 vs upstream 버그 vs 테스트 오류
4. upstream 버그 발견 시 → 이슈 리포트 준비 (Sahil의 R4 전략)

## 보고 형식

```
[DIFF TEST] {PASS|FAIL|SKIP}
- EVM changed: {yes|no}
- tests run: {N}
- state root matches: {N/N}
- mismatches: {0 | details}
```
60 changes: 60 additions & 0 deletions .claude/commands/evm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# EVM Specialist

LEVM(ethrex 자체 EVM) 전문 개발자 모드. opcode 구현, 실행 루프 수정, 가스 계산, state 관리에 특화.

## 역할

LEVM의 EVM 실행 로직을 수정하거나 확장한다.

## LEVM 아키텍처

```
crates/vm/levm/src/
vm.rs — VM 구조체 + run_execution() 메인 루프 (line 528-663)
opcodes.rs — build_opcode_table() (line 385), fork별 opcode 테이블
opcode_handlers/
*.rs — opcode별 핸들러 구현
gas_cost.rs — 가스 비용 계산
call_frame.rs — CallFrame (스택, 메모리, PC)
hooks/
hook.rs — Hook trait 정의
l1_hook.rs — L1 Hook
l2_hook.rs — L2 Hook (844줄, 참조 구현)
tracing.rs — LevmCallTracer
timings.rs — OpcodeTimings (perf_opcode_timings feature)
```

## 메인 실행 루프 구조

```rust
// vm.rs:528-663 (run_execution)
loop {
let opcode = self.current_call_frame.next_opcode();
// ... gas 체크 ...
let op_result = match opcode {
Opcode::STOP => { /* ... */ }
Opcode::ADD => { /* ... */ }
// ... 모든 opcode ...
};
// ... 결과 처리 ...
}
```

## 작업 흐름

1. 수정 대상 opcode/로직 파악
2. 관련 핸들러 파일과 테스트 확인
3. 구현 (기존 핸들러 패턴 준수)
4. `cargo test -p levm` 통과
5. 가스 비용이 변경되었으면 EIP 스펙과 대조
6. `/diff-test` 실행 권장 (state root 비교)

## 주의사항

- opcode 핸들러는 반드시 EIP 스펙에 따라 구현
- fork별 분기는 `build_opcode_table()`에서 관리
- 가스 계산 변경은 합의에 직접 영향 — 반드시 테스트
- `perf_opcode_timings` feature와의 호환성 확인
- 스택 오버플로우/언더플로우 경계 케이스 처리

$ARGUMENTS
59 changes: 59 additions & 0 deletions .claude/commands/jit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# JIT Compiler Developer

EVM JIT 컴파일러 전문 개발자 모드. Cranelift 기반 JIT, tiered execution, opcode fusion에 특화.

## 역할

LEVM의 인터프리터 위에 JIT 컴파일 계층을 구현한다.

## Tiered Execution 설계

```
Tier 0 (Interpreter): 현재 run_execution() — 수정 없이 사용
Tier 1 (Baseline JIT): opcode → 네이티브 코드 1:1 변환
Tier 2 (Optimizing JIT): opcode fusion + 최적화
```

## 삽입 포인트

```rust
// vm.rs — run_execution() 메인 루프
loop {
let opcode = self.current_call_frame.next_opcode();
// ← Tier 1: 여기서 JIT 캐시 확인 → 있으면 네이티브 코드 실행
let op_result = match opcode { ... };
}

// opcodes.rs:385 — build_opcode_table()
// ← Tier 2: fork별 테이블을 JIT 캐시로 대체
```

## 핵심 기술적 장벽

1. **동적 점프 (JUMP, JUMPI)**: 점프 대상이 런타임에 결정됨 → basic block 경계 사전 확정 불가
2. **합의 보장**: JIT 결과가 인터프리터와 100% 일치해야 함
3. **revmc 참조**: revm JIT 프로젝트의 선행 연구 참조 필수

## Validation Mode

모든 JIT 실행 결과를 인터프리터와 비교:
- 일치: JIT 결과 사용 (성능 이득)
- 불일치: 인터프리터 결과 사용 + 불일치 로깅 + JIT 캐시 무효화

## 작업 흐름

1. 대상 opcode/basic block 식별
2. Cranelift IR로 변환 로직 구현
3. 네이티브 코드 생성 + 캐시
4. validation mode에서 인터프리터 결과와 비교
5. EF 테스트 스위트 100% 통과 확인
6. `/bench`로 성능 측정

## 주의사항

- Phase 3 (Month 5-7)에 착수. 그 전에는 설계/연구만
- 합의 위반은 CRITICAL — validation mode 없이 메인넷 배포 금지
- `unsafe` 사용 불가피 — 모든 unsafe에 `// SAFETY:` 필수
- `/diff-test` 통과가 최종 게이트

$ARGUMENTS
55 changes: 55 additions & 0 deletions .claude/commands/l2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# L2 Hook Developer

Tokamak L2 Hook 시스템 전문 개발자 모드. VMType 확장, Hook 구현, fee 구조에 특화.

## 역할

ethrex의 Hook 시스템을 확장하여 Tokamak L2 기능을 구현한다.

## Hook 아키텍처

```rust
// vm.rs:38-44
pub enum VMType {
L1,
L2(FeeConfig),
// 추가 예정: TokamakL2(TokamakFeeConfig)
}

// hooks/hook.rs — Hook trait
pub trait Hook {
fn prepare_execution(&self, ...) -> ...;
fn finalize_execution(&self, ...) -> ...;
}

// hooks/hook.rs:19-24
pub fn get_hooks(vm_type: &VMType) -> Vec<Rc<RefCell<dyn Hook + 'static>>> {
match vm_type {
VMType::L1 => l1_hooks(),
VMType::L2(fee_config) => l2_hooks(*fee_config),
}
}
```

## 참조 구현

`crates/vm/levm/src/hooks/l2_hook.rs` (844줄)이 완전한 L2 Hook 구현.
이것을 기반으로 TokamakL2Hook을 구현한다.

## 구현 로드맵 (Phase 4)

1. `TokamakFeeConfig` 구조체 정의
2. `VMType::TokamakL2(TokamakFeeConfig)` 추가
3. `TokamakL2Hook` — `Hook` trait 구현
4. `get_hooks()`에 매핑 추가
5. `--tokamak-l2` CLI 플래그
6. 테스트: L2 트랜잭션 실행 + fee 계산 검증

## 주의사항

- 기존 L1/L2 Hook은 수정하지 않는다 (upstream 호환성)
- Tokamak 전용 코드는 `tokamak` feature flag 또는 별도 모듈
- fee 구조 변경은 경제 모델 검증 필요
- `prepare_execution()`과 `finalize_execution()` 양쪽 모두 구현

$ARGUMENTS
45 changes: 45 additions & 0 deletions .claude/commands/phase.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Phase Management

현재 Phase 상태를 확인하고, 다음 Phase 진입 조건을 검증한다.

## Phase 정의

| Phase | 내용 | 기간 | 진입 조건 |
|-------|------|------|-----------|
| 1.1 | Fork & 환경 구축 | Week 1-2 | DECISION.md FINAL |
| 1.2 | 메인넷 동기화 + Hive | Week 3-6 | Phase 1.1 완료, 빌드 성공 |
| 1.3 | Continuous Benchmarking MVP | Week 7-10 | 메인넷 싱크 완료, Hive 95%+ |
| 2 | Time-Travel Debugger | Month 3-4 | Phase 1.3 완료 |
| 3 | JIT EVM | Month 5-7 | Phase 2 완료, diff-test PASS |
| 4 | Tokamak L2 통합 | Month 8-10 | Phase 3 완료 |

## 실행 순서

1. `docs/tokamak/scaffold/HANDOFF.md` 읽어서 현재 Phase 파악
2. 현재 Phase의 완료 조건 체크:
- Phase 1.1: `cargo build --workspace` 성공 + CI 파이프라인 존재
- Phase 1.2: 메인넷 싱크 로그 + Hive 통과율 95%+
- Phase 1.3: 벤치마크 러너 동작 + Geth 대비 비교 데이터
- Phase 2: `debug_timeTravel` RPC 구현 + 테스트
- Phase 3: JIT Tier 0+1 + EF 테스트 100% + `/diff-test` PASS
- Phase 4: `--tokamak-l2` 플래그 동작 + L2 Hook 테스트
3. 다음 Phase 진입 조건 충족 여부 판정
4. HANDOFF.md 업데이트

## EXIT 기준 체크 (Phase와 무관하게 항상 확인)

| 수치 | 기한 | 현재 상태 |
|------|------|-----------|
| 메인넷 풀 싱크 | 4개월 | {확인} |
| Hive 95%+ | 6개월 | {확인} |
| 30일 업타임 | 6개월 | {확인} |

## 보고 형식

```
[PHASE] Current: {N.N} — {상태}
- completion: {X/Y criteria met}
- next phase ready: {yes|no}
- EXIT criteria: {all clear | WARNING: ...}
- blockers: {none | list}
```
Loading
Loading