Summary
run seed, system seed, fixed-step seed의 파생 규칙을 명확히 정의하고, EngineStepContext.derivedSeed가 항상 동일 입력에서 동일하게 재현되도록 DeterministicRng 계약을 구현한다.
Parent Issue
#1
Area
Engine
Target Sprint
Sprint 1
Why Needed
현재 EngineConfig.baseSeed는 존재하지만 실제 runtime에서는 EngineStepContext.derivedSeed가 고정값으로 남아 있다. 또한 seed 파생 단위가 run 중심인지, system 중심인지, fixed-step 중심인지 명확하지 않아 이후 domain system이 난수를 사용하기 시작하면 재현성 기준이 흔들릴 수 있다.
Scope
baseSeed, runIndex, fixedStepIndex를 기준으로 한 기본 seed 파생 규칙을 정의한다.
- 필요하면 system별 stream 분리를 지원할 수 있는 확장 포인트를 정리하되, 현재 runtime 기본 계약은 명확히 고정한다.
DeterministicRng의 reseed/next/derive API를 engine 내부 계약으로 구현한다.
EngineRuntime::stepFrame()이 EngineStepContext.derivedSeed에 실제 파생값을 채우도록 연결한다.
- 재현성 테스트를 추가한다.
Out of Scope
- domain-specific stochastic behavior 설계
- scenario variation seed 정책
- external random library 도입
Core Design Criteria
- 동일한
baseSeed, runIndex, fixedStepIndex 조합에서는 항상 같은 파생 seed가 나온다.
- 기본 runtime 계약은 엔진 공통 단위로 정의하고, domain별 해석은 그 위에 쌓는다.
- seed 파생 규칙은 lifecycle reset 이후에도 다시 같은 결과를 재현해야 한다.
Acceptance Criteria
- 동일한
baseSeed와 동일한 실행 순서에서 각 fixed step의 derivedSeed가 동일하다.
- 서로 다른
baseSeed 또는 서로 다른 run에서는 구분되는 seed stream을 가진다.
EngineStepContext.derivedSeed가 더 이상 상수값으로 남지 않는다.
- 기존 테스트 전체가 통과한다.
Related Docs
- docs/architecture/프로젝트 구조.md
- uml/engine-overview.puml
- uml/engine-runtime-core.puml
Dependencies / Blockers
- #12의 runtime step context 흐름 위에 연결된다.
- #96의 lifecycle reset 규칙과 함께 재현성 기준을 맞춰야 한다.
Repository Checks
Summary
run seed, system seed, fixed-step seed의 파생 규칙을 명확히 정의하고,
EngineStepContext.derivedSeed가 항상 동일 입력에서 동일하게 재현되도록DeterministicRng계약을 구현한다.Parent Issue
#1
Area
Engine
Target Sprint
Sprint 1
Why Needed
현재
EngineConfig.baseSeed는 존재하지만 실제 runtime에서는EngineStepContext.derivedSeed가 고정값으로 남아 있다. 또한 seed 파생 단위가 run 중심인지, system 중심인지, fixed-step 중심인지 명확하지 않아 이후 domain system이 난수를 사용하기 시작하면 재현성 기준이 흔들릴 수 있다.Scope
baseSeed,runIndex,fixedStepIndex를 기준으로 한 기본 seed 파생 규칙을 정의한다.DeterministicRng의 reseed/next/derive API를 engine 내부 계약으로 구현한다.EngineRuntime::stepFrame()이EngineStepContext.derivedSeed에 실제 파생값을 채우도록 연결한다.Out of Scope
Core Design Criteria
baseSeed,runIndex,fixedStepIndex조합에서는 항상 같은 파생 seed가 나온다.Acceptance Criteria
baseSeed와 동일한 실행 순서에서 각 fixed step의derivedSeed가 동일하다.baseSeed또는 서로 다른 run에서는 구분되는 seed stream을 가진다.EngineStepContext.derivedSeed가 더 이상 상수값으로 남지 않는다.Related Docs
Dependencies / Blockers
Repository Checks