ADR: translate adr-ko/ to Korean, fix ADR-0013 slug, refine Status check
Follow-up to the bilingual-structure commit: docs/adr-ko/ now holds only Korean versions (24 files translated from English placeholders), ADR-0013 slug uses kebab-case in both folders, and the verify tool allows translated parenthetical commentary in the Status block. - Translate 24 English files in docs/adr-ko/ to Korean. The previous bilingual-structure commit had left these as English copies because their source content was already English; this commit fulfills the policy that docs/adr-ko/ contains only Korean. - Rename ADR-0013 in both adr/ and adr-ko/ from ver-verification_strategy.md to ver-verification-strategy.md (kebab-case consistency with other ADRs). - CLAUDE.md (ADR Translation Discipline): clarify that only the Status lifecycle keyword (Accepted / Proposed / Stub / Draft / Superseded by ADR-NNNN / Merged into ADR-NNNN) must match across EN and KO; parenthetical commentary and trailing list items may be translated. - tools/verify_adr_lang_pairs.py: replace byte-equal Status check with normalize_status_keyword() which strips parenthetical commentary and takes only the first non-empty line. - tests/test_verify_adr_lang_pairs.py: update existing test names, add coverage for translated parenthetical, translated trailing list, and Superseded-by-NNNN keyword equality. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# ADR-0007: Runtime API and Simulation Engine Boundaries
|
||||
# ADR-0007: 런타임 API 및 시뮬레이션 엔진 경계
|
||||
|
||||
## Status
|
||||
|
||||
@@ -6,90 +6,90 @@ Accepted
|
||||
|
||||
## Context
|
||||
|
||||
The simulator consists of multiple layers with distinct responsibilities:
|
||||
시뮬레이터는 책임이 명확히 다른 여러 계층으로 구성된다:
|
||||
|
||||
- a host-facing API layer used by benchmarks and user code,
|
||||
- a discrete-event simulation engine that executes requests,
|
||||
- device components that model hardware behavior.
|
||||
- 벤치마크와 사용자 코드가 사용하는 호스트 대상 API 계층,
|
||||
- 요청을 실행하는 이산 이벤트 시뮬레이션 엔진,
|
||||
- 하드웨어 동작을 모델링하는 디바이스 컴포넌트.
|
||||
|
||||
Without strict boundaries, orchestration logic can leak into components,
|
||||
or simulation internals can become entangled with user-facing APIs.
|
||||
엄격한 경계가 없으면 오케스트레이션 로직이 컴포넌트로 누출되거나
|
||||
시뮬레이션 내부가 사용자 대상 API와 얽힐 수 있다.
|
||||
|
||||
This ADR defines clear responsibility boundaries between:
|
||||
본 ADR은 다음 사이의 명확한 책임 경계를 정의한다:
|
||||
|
||||
- runtime API,
|
||||
- simulation engine (sim_engine),
|
||||
- hardware components.
|
||||
- 런타임 API,
|
||||
- 시뮬레이션 엔진 (sip_engine),
|
||||
- 하드웨어 컴포넌트.
|
||||
|
||||
---
|
||||
|
||||
## Decision
|
||||
|
||||
### D1. Runtime API is host-facing orchestration only
|
||||
### D1. 런타임 API는 호스트 대상 오케스트레이션만 담당
|
||||
|
||||
The runtime API represents host/driver-level behavior and MUST:
|
||||
런타임 API는 호스트/드라이버 수준의 동작을 표현하며 다음을 해야 한다:
|
||||
|
||||
- expose high-level operations (tensor deployment, kernel launch),
|
||||
- submit requests only to endpoint components (e.g., IO_CPU),
|
||||
- await completion via futures/handles,
|
||||
- own and persist host-side metadata (tensor allocation maps, kernel bindings).
|
||||
- 고수준 동작 노출 (텐서 배포, 커널 launch),
|
||||
- 엔드포인트 컴포넌트(예: IO_CPU)에만 요청 제출,
|
||||
- futures/handles로 완료 대기,
|
||||
- 호스트측 메타데이터(텐서 할당 맵, 커널 바인딩)의 소유와 영속화.
|
||||
|
||||
The runtime API MUST NOT:
|
||||
런타임 API가 해서는 안 되는 것:
|
||||
|
||||
- hardcode hop-by-hop routing or fan-out,
|
||||
- directly invoke internal components (M_CPU, PE_CPU, engines),
|
||||
- embed topology- or routing-specific assumptions.
|
||||
- hop-by-hop 라우팅 또는 fan-out 하드코딩,
|
||||
- 내부 컴포넌트(M_CPU, PE_CPU, 엔진) 직접 호출,
|
||||
- 토폴로지나 라우팅 관련 가정 내장.
|
||||
|
||||
---
|
||||
|
||||
### D2. Simulation engine wires components and tracks completion
|
||||
### D2. 시뮬레이션 엔진은 컴포넌트를 연결하고 완료를 추적
|
||||
|
||||
The simulation engine (sim_engine) MUST:
|
||||
시뮬레이션 엔진(sim_engine)은 다음을 해야 한다:
|
||||
|
||||
- wire components at initialization (create port stores + start wire
|
||||
processes per the component port/wire framework — ADR-0015),
|
||||
- inject requests into the compiled topology graph at entry components
|
||||
(e.g., PCIE_EP for memory operations, IO_CPU for kernel launch),
|
||||
- schedule and execute events using a discrete-event model,
|
||||
- manage correlation ids and completion tracking.
|
||||
- 초기화 시점에 컴포넌트 연결 (컴포넌트 포트/와이어 프레임워크에 따라
|
||||
포트 store 생성 + 와이어 프로세스 시작 — ADR-0015),
|
||||
- 컴파일된 토폴로지 그래프의 진입 컴포넌트(예: 메모리 동작은 PCIE_EP,
|
||||
커널 launch는 IO_CPU)에 요청 주입,
|
||||
- 이산 이벤트 모델로 이벤트 스케줄링과 실행,
|
||||
- correlation ID와 완료 추적 관리.
|
||||
|
||||
The simulation engine MUST NOT:
|
||||
시뮬레이션 엔진이 해서는 안 되는 것:
|
||||
|
||||
- define tensor semantics,
|
||||
- define kernel execution policies,
|
||||
- expose internal graph details to the runtime API,
|
||||
- walk the topology path during request execution,
|
||||
- call component `run()` methods directly,
|
||||
- track per-hop latency or decompose fan-out (components own this).
|
||||
- 텐서 시맨틱 정의,
|
||||
- 커널 실행 정책 정의,
|
||||
- 런타임 API에 내부 그래프 세부사항 노출,
|
||||
- 요청 실행 중에 토폴로지 경로를 따라 걷기,
|
||||
- 컴포넌트의 `run()` 메서드 직접 호출,
|
||||
- hop별 레이턴시 추적 또는 fan-out 분해 (컴포넌트의 책임).
|
||||
|
||||
---
|
||||
|
||||
### D3. Components own fan-out and aggregation
|
||||
### D3. 컴포넌트가 fan-out과 집계를 담당
|
||||
|
||||
Device-side components MUST:
|
||||
디바이스측 컴포넌트는 다음을 해야 한다:
|
||||
|
||||
- fan-out requests to downstream domains
|
||||
(IO_CPU → M_CPU → PE_CPU → schedulers/engines),
|
||||
- aggregate completion and failure signals,
|
||||
- propagate results deterministically upstream.
|
||||
- 요청을 하위 도메인으로 fan-out
|
||||
(IO_CPU → M_CPU → PE_CPU → 스케줄러/엔진),
|
||||
- 완료·실패 신호 집계,
|
||||
- 결정론적으로 상위로 결과 전파.
|
||||
|
||||
Neither the runtime API nor the simulation engine may orchestrate
|
||||
component-level fan-out explicitly.
|
||||
런타임 API와 시뮬레이션 엔진 모두 컴포넌트 수준의 fan-out을 명시적으로
|
||||
오케스트레이션해서는 안 된다.
|
||||
|
||||
---
|
||||
|
||||
## Consequences
|
||||
|
||||
- Runtime APIs remain stable as topology and routing evolve.
|
||||
- Simulation internals can change without affecting user-facing code.
|
||||
- Component implementations remain swappable via DI.
|
||||
- 토폴로지와 라우팅이 변해도 런타임 API는 안정적이다.
|
||||
- 시뮬레이션 내부는 사용자 대상 코드에 영향을 주지 않고 변경 가능하다.
|
||||
- 컴포넌트 구현은 DI로 교체 가능한 상태가 유지된다.
|
||||
|
||||
---
|
||||
|
||||
## Links
|
||||
|
||||
- SPEC R4, R7, R8
|
||||
- ADR-0008 (Tensor deployment)
|
||||
- ADR-0009 (Kernel execution)
|
||||
- ADR-0015 (Component port/wire model and engine role)
|
||||
- ADR-0010 (CLI surface and execution semantics — runtime API consumer)
|
||||
- ADR-0008 (텐서 배포)
|
||||
- ADR-0009 (커널 실행)
|
||||
- ADR-0015 (컴포넌트 포트/와이어 모델과 엔진 역할)
|
||||
- ADR-0010 (CLI 표면과 실행 시맨틱 — 런타임 API 소비자)
|
||||
|
||||
Reference in New Issue
Block a user