diff --git a/docs/WORKFLOW-CTX-ROUND1.md b/docs/WORKFLOW-CTX-ROUND1.md
new file mode 100644
index 0000000..0102c71
--- /dev/null
+++ b/docs/WORKFLOW-CTX-ROUND1.md
@@ -0,0 +1,145 @@
+# 워크플로 1차 결과 — CTX 태그 검증
+
+오케스트레이션(에이전트 11, 103만 토큰, 도구 299회)으로 레거시 본문을 병렬로 읽고,
+각 매핑을 다른 에이전트가 반박하게 한 결과다.
+
+| 판정 | 수 |
+| --- | --- |
+| ok | 94 |
+| wrong | 10 |
+| unsure | 1 |
+
+고유 태그 84종. 배치 6개 중 1개(읽기:2)는 API 521 로 실패해 미실행이다 — 재실행이 필요하다.
+
+## 검증이 실제로 반박했다
+
+wrong 10건. 검증을 "통과시키는" 임무로 줬다면 그대로 코드에 들어갔을 것이다.
+
+## 이번 배치의 성격
+
+대부분 `ETC_` 계열(시각·로그인 사용자)이라 환자 태그가 아니다.
+상당수는 `SessionTagResolver` 가 이미 처리하고 있을 수 있다 —
+통합 전에 `TagPreviewCatalog` 와 대조해 중복을 걸러야 한다.
+
+## 건진 것 중 눈에 띄는 것
+
+- `ETC_건강보험증번호_Refer` 는 죽은 코드다. 본문 전체가 주석이고 실행문은 `Return ""` 하나뿐.
+- `ETC_현재일시_MaskBox` 는 마스크가 `9999-99-9999:99` 라 일과 시가 붙는다(`2026-08-1914:30`). 오타처럼 보이지만 레거시 동작이다.
+- `ETC_로그인_원내연락처` 의 컬럼명은 `UIDOFFTEL` 대문자다(형제 태그는 파스칼 `UidMblPhn`).
+- `ETC_로그인사용자_서명` 은 서버에서 이미지 파일을 내려받는다 — `needs-lookup` 으로 격리.
+- 검증이 기존 SheetMe 코드의 차이도 잡았다: 레거시는 로그인 사용자 조회에 `GetAdpDtm` 앞 8자를 쓰는데 SheetMe 는 `SYSDATE` 를 쓴다 — 같은 행이라도 기준일이 다르다.
+
+## 다음 단계
+
+1. 실패한 배치(읽기:2) 재실행
+2. ok 94건에서 `SessionTagResolver` 가 이미 처리하는 것 제외
+3. 남은 것 통합 후 게이트(--edit-smoke 이름 검사 · --db-patient · md5)
+
+## 판정 표
+
+| 판정 | 태그 | kind | row | column |
+| --- | --- | --- | --- | --- |
+| ok | `ETC_건강보험증번호_Refer` | - | - | - |
+| ok | `ETC_건강보험증번호_Refer` | computed | - | - |
+| ok | `ETC_로그인_사용자ID_사용자명` | - | - | - |
+| ok | `ETC_로그인_사용자ID_사용자명` | computed | - | UidCod,UidNam |
+| ok | `ETC_로그인_사용자ID` | - | - | - |
+| ok | `ETC_로그인_사용자ID` | context-scalar | - | UidCod |
+| ok | `ETC_로그인_사용자명` | - | - | - |
+| ok | `ETC_로그인_사용자명` | context-scalar | - | UidNam |
+| ok | `ETC_로그인_사용자연락처` | - | - | - |
+| ok | `ETC_로그인_사용자연락처` | context-scalar | - | UidMblPhn |
+| ok | `ETC_로그인_원내연락처` | - | - | - |
+| ok | `ETC_로그인사용자_서명` | - | - | - |
+| ok | `ETC_로그인사용자_서명` | needs-lookup | - | UidImgPth |
+| ok | `ETC_현재년도` | - | - | - |
+| ok | `ETC_현재년도` | formatted | - | - |
+| ok | `ETC_현재시간` | - | - | - |
+| ok | `ETC_현재시간` | formatted | - | - |
+| ok | `ETC_현재일시_1_년` | - | - | - |
+| ok | `ETC_현재일시_1_년` | formatted | - | - |
+| ok | `ETC_현재일시_2_월` | - | - | - |
+| ok | `ETC_현재일시_2_월` | formatted | - | - |
+| ok | `ETC_현재일시_3_일` | - | - | - |
+| ok | `ETC_현재일시_3_일` | formatted | - | - |
+| ok | `ETC_현재일시_4_몇시` | - | - | - |
+| ok | `ETC_현재일시_4_몇시` | formatted | - | - |
+| ok | `ETC_현재일시_5_몇분` | - | - | - |
+| ok | `ETC_현재일시_5_몇분` | formatted | - | - |
+| ok | `ETC_현재일시_MaskBox` | - | - | - |
+| ok | `ETC_현재일시_MaskBox` | formatted | - | - |
+| ok | `ETC_현재일시` | - | - | - |
+| ok | `ETC_현재일시` | formatted | - | - |
+| ok | `ETC_현재일자_영문` | - | - | - |
+| ok | `ETC_현재일자_영문` | formatted | - | - |
+| ok | `ETC_현재일자` | - | - | - |
+| ok | `ETC_현재일자` | formatted | - | - |
+| ok | `OCM_OPNAME` | - | - | - |
+| ok | `OCM_OPNAME` | needs-lookup | - | OPNAME |
+| ok | `OCM_OPRCODNAM` | needs-lookup | - | OPRCODNAM |
+| ok | `OCM_병동` | needs-lookup | CowInf | CowWadCod |
+| ok | `OCM_병실베드` | needs-lookup | CowInf | CowBedCod |
+| ok | `OCM_부상병POA_Refer` | needs-lookup | - | OkdPoaTyp |
+| ok | `OCM_부상병명_Refer` | needs-lookup | - | KcdKorNam |
+| ok | `OCM_부상병코드_Refer` | needs-lookup | - | KcdElcCod |
+| ok | `OCM_부상병코드` | needs-lookup | - | KcdElcCod |
+| ok | `OCM_상병명_가로_Refer` | needs-lookup | - | KcdKorNam + OkdCfmSus |
+| ok | `OCM_상병명_영어_가로_Refer` | needs-lookup | - | KcdEngNam |
+| ok | `OCM_상병명_영어_가로` | needs-lookup | - | KcdEngNam |
+| ok | `OCM_상병명_영어_세로_Refer` | needs-lookup | - | KcdEngNam |
+| ok | `OCM_상병명_영어_세로` | needs-lookup | - | KcdEngNam |
+| ok | `OCM_상병코드_가로_Refer` | needs-lookup | - | KcdElcCod |
+| ok | `OCM_상병코드_가로` | needs-lookup | - | KcdElcCod |
+| ok | `OCM_상병코드_세로_Refer` | needs-lookup | - | KcdElcCod |
+| ok | `OCM_상병코드_세로` | needs-lookup | - | KcdElcCod |
+| ok | `OCM_수술_OprPatETC` | needs-lookup | - | OprPatEtc |
+| ok | `OCM_수술부위` | needs-lookup | - | OprRegionName |
+| ok | `OCM_수술일자_Refer` | computed | - | - |
+| ok | `OCM_심사_부상병명` | needs-lookup | - | - |
+| ok | `OCM_심사_부상병코드` | needs-lookup | - | - |
+| ok | `OCM_심사_주상병명` | needs-lookup | - | - |
+| ok | `OCM_심사_주상병코드` | needs-lookup | - | - |
+| ok | `OCM_외래내원일시_Refer` | formatted | ComInf | ComAcpDtm |
+| ok | `OCM_외래내원일시` | formatted | ComInf | ComAcpDtm |
+| ok | `OCM_외래내원일자_Refer` | formatted | ComInf | ComAcpDtm |
+| ok | `OCM_외래내원일자_영문` | formatted | ComInf | ComAcpDtm |
+| ok | `OCM_의사퇴원예고일시` | computed | ComInf | ComSchLev |
+| ok | `OCM_입실시간` | formatted | ComInf | ComTrsDtm |
+| ok | `OCM_입원내원일시_Refer` | formatted | ComInf | ComAcpDtm |
+| ok | `OCM_입원시간_Refer` | computed | ComInf | ComAcpDtm |
+| ok | `OCM_입원일시_Refer` | computed | ComInf | ComAcpDtm |
+| ok | `OCM_입원전환일시_Refer` | formatted | ComInf | ComTrsDtm |
+| ok | `OCM_입원전환일자_Refer` | formatted | ComInf | ComTrsDtm |
+| ok | `OCM_입통원구분_입원` | computed | ComInf | ComPatTyp |
+| ok | `OCM_입통원구분_통원_Refer` | computed | ComInf | ComPatTyp |
+| ok | `OCM_입통원구분_통원` | computed | ComInf | ComPatTyp |
+| ok | `OCM_적용진료의사` | needs-lookup | - | - |
+| ok | `OCM_전과일시` | formatted | CodInf | CodStrDtm |
+| ok | `OCM_전과일자` | formatted | CodInf | CodStrDtm |
+| ok | `OCM_주상병POA_Refer` | needs-lookup | - | - |
+| ok | `OCM_주상병POA` | needs-lookup | - | - |
+| ok | `OCM_주상병명_Refer` | needs-lookup | - | - |
+| ok | `OCM_주상병명_영어_Refer` | needs-lookup | - | - |
+| ok | `OCM_주상병명_영어` | needs-lookup | - | - |
+| ok | `OCM_주상병일자_Refer` | needs-lookup | - | - |
+| ok | `OCM_주상병일자` | needs-lookup | - | - |
+| ok | `OCM_주상병코드_Refer` | needs-lookup | - | - |
+| ok | `OCM_주상병특정기호_Refer` | needs-lookup | - | - |
+| ok | `OCM_주상병특정기호` | needs-lookup | - | - |
+| ok | `OCM_진단구분_상병명` | needs-lookup | - | - |
+| ok | `OCM_진단구분_상병코드_상병명_Refer` | needs-lookup | - | - |
+| ok | `OCM_진단구분_상병코드_상병명` | needs-lookup | - | - |
+| ok | `OCM_진단서의사_영문_Refer` | needs-lookup | - | - |
+| ok | `OCM_진단서의사_영문` | needs-lookup | - | - |
+| ok | `OCM_진단서의사면허번호_Refer` | needs-lookup | - | - |
+| ok | `OCM_진단서의사면허번호` | needs-lookup | - | - |
+| unsure | `ETC_로그인_원내연락처` | context-scalar | - | UIDOFFTEL |
+| wrong | `OCM_DX` | needs-lookup | - | DX |
+| wrong | `OCM_OPRCODNAM` | needs-lookup | - | OPRCODNAM |
+| wrong | `OCM_부상병POA` | needs-lookup | - | OkdPoaTyp |
+| wrong | `OCM_상병명_가로` | needs-lookup | - | KcdKorNam + OkdCfmSus |
+| wrong | `OCM_수술상병` | needs-lookup | - | OkdNam |
+| wrong | `OCM_수술주상병` | needs-lookup | - | - |
+| wrong | `OCM_수술집도의` | needs-lookup | - | - |
+| wrong | `OCM_입통원구분_입원_Refer` | computed | ComInf | ComPatTyp |
+| wrong | `OCM_전과` | needs-lookup | - | - |