FullAgenticStack WhatsApp-first: RFC-WF-0018
I’m happy to translate the article for you, but I’ll need the full text you’d like translated. Could you please paste the content (excluding the source line you’ve already provided) here? Once I have the text, I’ll translate it into Korean while preserving the original formatting, markdown syntax, and technical terms.
초록
이 문서는 WhatsApp‑first 시스템을 위한 **State Model & Command Lifecycle (SMCL)**을 명시합니다. SMCL은 명령 실행 및 복구를 위한 규범적인 유한 상태 기계(FSM)를 정의하며, 다음을 포함합니다:
- 허용된 상태
- 유효한 전이
- 종료 조건
- 증거 방출 요구사항
SMCL은 모든 구성 요소(명령 실행, 보안 게이팅, 가시성, 복구/보상 및 감사)가 일관된 라이프사이클 모델을 사용하도록 보장하여 단계 드리프트를 방지하고 결정론적 도구 및 인증을 가능하게 합니다.
Index Terms – finite‑state machine, lifecycle states, command execution, recovery states, evidence emission, idempotency, distributed systems.
Relationship to Other RFCs
| RFC | Acronym | Scope |
|---|---|---|
| RFC‑WF‑0003 | CCP | 명령 엔벨롭 및 확인 의미론 |
| RFC‑WF‑0006 | EAS | 증거 아티팩트 |
| RFC‑WF‑0008 | RCP | 복구 작업 |
| RFC‑WF‑0010 | IDS | 재생 안전 실행 |
| RFC‑WF‑0017 | TVRS | 준수 테스트 매핑 (TVRS/CATS) |
구현체들은 종종 라이프사이클 단계와 전이 순서에서 차이를 보이며, 이는 상호 운용성 및 감사를 방해합니다. SMCL은 단일 규범적인 라이프사이클 FSM을 제공하여:
- 상태 명명 규칙을 표준화하고
- 유효한 전이를 제한하며
- 종료 상태를 정의하고
- 각 전이에 필요한 증거를 명시하며
- 중복/재시도 상황에서의 멱등 재진입 동작을 공식화합니다
NOTE: SMCL은 내부 워크플로 엔진을 정의하지 않으며, 관찰 가능한 동작만을 정의합니다.
일반적인 RFC 규범 키워드 (MUST, MUST NOT, SHOULD, SHOULD NOT, MAY)가 적용됩니다.
용어
| Term | Definition |
|---|---|
| Primary Command | 사용자가 요청한 원래 명령. |
| Recovery Command | 기본 명령을 재시도, 취소, 재처리 또는 보상하는 명령. |
| Lifecycle State | FSM(유한 상태 기계)에서 현재 단계. |
| Transition | 한 상태에서 다른 상태로 이동할 수 있는 허용된 움직임. |
| Terminal State | 이후에 추가 실행 전이가 발생하지 않는 상태(관리되는 복구를 제외하고). |
주요 명령 수명 주기 상태
| 상태 | 설명 |
|---|---|
| S0 – received | 원시 입력이 수신됨 (전‑엔벨로프). |
| S1 – canonicalized | 엔벨로프가 생성되어 지속됨; command_id가 처음 존재함. |
| S2 – confirmation_required | 확인 요청됨 (변경 작업인 경우). |
| S3 – confirmed | 인간 확인 게이트가 만족됨. |
| S4 – authz_pending | 권한 부여 평가 대기 중. |
| S5 – authorized | 권한 부여가 승인됨. |
| S6 – rejected | 검증, 권한 거부, 정책 거부, 또는 모호성 (터미널). |
| S7 – started | 실행이 시작됨; 부수 효과가 시작될 수 있음. |
| S8 – executed | 실행이 성공적으로 완료됨 (터미널). |
| S9 – failed | 실행 실패 (주 실행에 대한 터미널; 복구가 뒤따를 수 있음). |
| S10 – canceled | 실행이 취소/중단됨 (터미널). |
| S11 – compensated | 보상 완료 (터미널). |
Notes
- 읽기 전용 명령은 확인 상태(S2/S3)를 건너뛸 수 있음.
- 일부 구현은
authz_pending/authorized를 병합할 수 있음; 이 경우에도 의미적으로 동등한 증거와 순서를 제공해야 함. received는 전‑엔벨로프이며 상태를 변형 해서는 안 됨.canonicalized는command_id가 존재하는 가장 초기 시점임.confirmed는 인간 확인 게이트가 만족됨을 나타냄.authorized는 범위/스텝‑업 게이트가 만족됨을 나타냄.started는 실행이 시작되었으며 부수 효과가 발생할 수 있음을 나타냄.executed는 효과가 완료되고 일관됨을 나타냄.failed는 실행이 오류와 함께 종료되었으며 복구가 가능할 수 있음을 나타냄.compensated는 보상이 정의된 터미널 교정을 달성했음을 나타냄.
허용된 전이
다음 전이들은 반드시 적용되어야 합니다:
received → canonicalized
canonicalized → confirmation_required (변경 작업이며 정책에 의해 자동 확인되지 않은 경우)
confirmation_required → confirmed
canonicalized → authz_pending (읽기 전용 또는 사전 확인 검증 경로 허용)
confirmed → authz_pending
authz_pending → authorized
authz_pending → rejected
authorized → started
started → executed
started → failed
started → canceled
failed → compensated (보상이 성공적으로 실행된 경우에만)
executed → compensated (비즈니스 정의 보상이 존재하고 관리되는 경우에만 허용)
잘못된 전이
잘못된 전이가 시도될 경우(예: executed → started), 시스템은 반드시:
- 전이를 거부한다.
invalid_transition_attempt를 나타내는 증거를 발행한다.- 이전의 최종 상태를 유지한다.
추가 제약 조건:
- 모든 변이 명령에 대해
started는confirmed가 발생하지 않은 경우 절대 발생해서는 안 된다(정책에 명시된 “안전 자동 확인”이 명시적으로 선언된 경우는 예외이며, 이는 반드시 감사 가능하고 드물어야 함). - 모든 변이 명령에 대해
started는authorized가 발생하지 않은 경우 절대 발생해서는 안 된다.
멱등성 및 중복 처리
-
동일한 논리 명령이 여러 번 전달될 경우(동일
idempotency_key):- 터미널 상태(
executed|rejected|canceled|compensated): 시스템은 결과를 재생해야 하며 재실행을 하지 않아야 합니다. - Started: 중복은
in_progress보기를 반환해야 하며 병렬 실행을 생성해서는 안 됩니다.
- 터미널 상태(
-
기본 명령은
executed,rejected,canceled,compensated중 하나에 도달한 후started상태로 다시 진입해서는 안 됩니다.
복구‑명령 규칙
복구 명령은 동일한 FSM을 따르며 다음 추가 규칙이 적용됩니다:
- Reference the
target_command_id. →target_command_id를 참조합니다. - Emit evidence linking to the target. → 대상에 연결되는 증거를 발행합니다.
- Respect authorization/confirmation/step‑up according to risk class (RCP/ACSM/PPGP). → 위험 등급(RCP/ACSM/PPGP)에 따라 권한 부여/확인/스텝‑업을 준수합니다.
보상 모델
target_commandis infailedorexecuted(depending on business semantics). →target_command가failed또는executed상태에 있습니다 (비즈니스 의미에 따라).- A recovery command executes the compensation plan. → 복구 명령은 보상 계획을 실행합니다.
target_commandenterscompensatedonly when the plan succeeds and evidence confirms convergence. →target_command는 계획이 성공하고 증거가 수렴을 확인할 때만compensated상태가 됩니다.
- Compensation MUST be append‑only and auditable. → 보상은 반드시 추가 전용이며 감사 가능해야 합니다.
증거 방출
각 라이프사이클 전환마다 시스템은 최소한 다음을 포함하는 증거 아티팩트를 반드시 생성해야 합니다:
lifecycle.command_idlifecycle.transition(예:received→canonicalized)lifecycle.timestamplifecycle.evidence_type(예:state_change,invalid_transition_attempt)- 종속 RFC (CCP, EAS, RCP, IDS)에서 요구하는 추가 컨텍스트
정확한 스키마는 **RFC‑WF‑0006 (EAS)**에 정의되어 있습니다.
적합성
- 최소 준수 테스트는 **RFC‑WF‑0017 (TVRS/CATS)**에 매핑됩니다.
- 구현은 MUST 각 상태, 전이, 종료 조건 및 증거 방출 요구사항을 테스트하는 모든 TVRS 테스트 벡터를 통과해야 합니다.
Security & Privacy Considerations
- All evidence artifacts MUST be signed and tamper‑evident.
- Sensitive fields (e.g., user identifiers) MUST be redacted or encrypted per the privacy policy defined in RFC‑WF‑0003 (CCP).
IANA 고려사항
- IANA 조치는 필요하지 않습니다.
참고 문헌
- [RFC‑WF‑0003] 명령 엔벨로프 및 확인 (CCP)
- [RFC‑WF‑0006] 증거 아티팩트 (EAS)
- [RFC‑WF‑0008] 복구 작업 (RCP)
- [RFC‑WF‑0010] 재생 안전 실행 (IDS)
- [RFC‑WF‑0017] 테스트 벡터 참조 스위트 (TVRS/CATS)
Source: …
수명 주기 상태 매핑
| 상태 | 해당 명령 / 이벤트 |
|---|---|
canonicalized | command.accepted |
confirmation_required | command.confirmation.requested |
confirmed | command.confirmation.satisfied |
authorized / rejected | authz.decided (allow / deny) |
started | execution.started |
executed / failed / rejected | execution.executed | execution.failed | execution.rejected |
compensated | compensation.compensated |
추적 바인딩: (conversation_id, message_ids)
보안 결정: 관련이 있을 경우 authz, 단계‑업, 그리고 확인을 포함합니다.
X. 관측 가능성 요구사항 (OoC 호환성)
OoC는 최소한 다음을 보고할 수 있어야 합니다:
- 현재 라이프사이클 상태.
- 마지막 전환 타임스탬프.
- 종료 결과 (상태가 종료 상태인 경우).
- 거부/실패 이유 (정책 / 이유 코드).
- 다음 허용 복구 옵션 (있는 경우).
SMCL‑compliant 구현은 다음을 검증하는 테스트를 통과해야 합니다:
- 잘못된 전환 거부 – 불법적인 상태로 이동하려는 시도가 거부됩니다.
- 정렬 불변식 – 예:
confirm+authorize없이start가 없도록 보장합니다. - 중복 처리 – 명령을 재전송해도 실행이 다시 시작되지 않습니다.
- 증거 방출 – 각 필수 전환 시 요구되는 아티팩트가 방출됩니다.
이러한 테스트는 TVRS(Test Vectors & Reference Scenarios) 시나리오로 표현되어야 합니다.
관련 사양
| Spec | ID | Purpose |
|---|---|---|
| Conversational Command Protocol (CCP) | 0003 | 엔벨로프 생성 및 확인을 정의합니다; SMCL은 순서 및 단계를 고정합니다. |
| Evidence Artifact Schema (EAS) | 0006 | 아티팩트 구조를 정의합니다; SMCL은 아티팩트가 언제 발행되어야 하는지를 정의합니다. |
| Recovery & Compensation Protocol (RCP) | 0008 | 복구 작업을 정의합니다; SMCL은 그들의 라이프사이클 제약을 정의합니다. |
| Idempotency & Delivery Semantics (IDS) | 0010 | 재생 안전 실행을 정의합니다; SMCL은 재진입 규칙을 정의합니다. |
| Test Vectors & Reference Scenarios (TVRS) | 0017 | 라이프사이클 동작에 대한 적합성 시나리오를 제공합니다. |
Source:
보안 및 일관성 메모
- 라이프사이클 불일치(예: “인증 전 시작”)는 우회 경로를 만들 수 있습니다.
- 구현은 불변 조건을 강제하고 잘못된 시도는 증거 아티팩트로 로그해야 합니다.
- 터미널 상태 보호는 재생 공격 및 “이중 효과” 공격을 방지하는 데 핵심입니다.
SMCL은 “WhatsApp‑first” 실행 의미론을 위한 결정론적 백본을 제공합니다: 라이프사이클 상태, 전이, 증거‑발생 지점, 그리고 멱등 재진입 동작을 표준화하는 정규 FSM. 이는 서비스 간 라이프사이클 드리프트를 방지하고 신뢰할 수 있는 가시성, 복구 및 인증 도구를 가능하게 합니다.
참고 문헌
- RFC‑WF‑0003, Conversational Command Protocol (CCP).
- Evidence Artifact Schema (EAS).
- Recovery & Compensation Protocol (RCP).
- Idempotency & Delivery Semantics (IDS).
- Test Vectors & Reference Scenarios (TVRS).
키워드: 유한 상태 머신, 라이프사이클 불변 조건, 터미널 상태 보호, 증거 발산 매핑, 멱등 재진입 규칙, 복구/보상 상태 모델링, 적합성 테스트.