2026-08-10
요약 (AI 작성)
네이티브 편집기의 selection 계약을 다른 편집기들과 전수 대조해 채운 날입니다. VSCode·CM6·Zed 를 대조해 빈틈 셋을 메우고, 열/블록 선택 원본을 Selections 안에 두는 쪽으로 §3.2a 를 뒤집었으며, 열 선택 원본이 단수인 근거와 무효화 규칙, 커서 상한·정렬 불변식·가로 이동 goal 규칙, 스크롤 추종의 시점을 명령이 정한다는 점을 각각 못박았습니다. 접힘도 정리해 접힌 영역 안의 커서는 접힘 머리로 옮기고, selection 조정이 누구 것이며 언제 도는지를 정했으며, 뷰가 여럿일 때의 규칙 둘과 undo 시 selection 복원 기준을 포커스로 다듬었습니다. 랩 경계 커서 모호성은 미결로 등재하고 isReversed 의 축을 바로잡았으며, 적대적 검증이 잡은 근거 없는 수치·미강제 불변식·부재 증명·계약 공백 넷을 고쳤습니다.
표시 폭과 적대적 입력 처리도 실측으로 확정했습니다. 이모지·기호의 표시 폭을 편집기 규칙으로 세고 배치와 하나로 묶었으며(§4.2), grapheme cluster 경계에 GB11·스킨톤·RI 를 넣고 VS16 이 낀 이모지 시퀀스 오탐과 ZWJ 문맥 구분을 고쳤습니다. 리거처가 셀 대응을 깨지 않음을 실측으로 확정하고, 한글 자간 문제의 원인이 격자가 아니라 fallback 폰트임을 밝혀 한글 폴백 기본값을 번들 Jetendard 로 뒀습니다. Trojan Source 방어로 적대적 입력을 가시화하고(§3.8), 그 판정을 레이어 무관 중립 위치로 옮겼습니다. 검증은 표시 폭 시나리오를 캡처와 골든으로 잠그되, 골든이 이모지 그림 대신 막대만 보도록 했습니다.
SSH 원격 세션의 cwd 판정을 바로잡은 것도 이날입니다. OSC 7 authority 를 보관해 원격 cwd 를 로컬과 가르고, host 만 바뀌는 cwd 전이가 관측 갱신을 건너뛰던 것과 원격 파일 링크를 고쳤으며, 적대적 검증에서 드러난 판정 결함 둘을 정리하고 원격 cwd 쌍을 할당 실패·이상 authority 로 흔들어 §9.4 표를 전수로 채웠습니다. 상태바는 에이전트 개수를 누르면 그 에이전트로 가도록 하고, 앱 자신을 합계에 넣어 팝오버에 "모든 창 공유" 행으로 냈습니다. 문서는 파일 패널·컨트롤 플레인 계약을 주제별로 가르고 구현 계획을 docs/plans/ 이니셔티브별 파일로 나눴으며, 언어 서버는 번들하지 않고 설치를 안내하기로 정했습니다(§8.1a). IME 는 1차 실측 기준선만 기록하고 결정을 2차로 미뤘습니다.
session-host 는 이벤트 준비를 불변으로 만드는 b2b3 작업이 이어졌습니다. 순수 이벤트 준비 레시피를 명세하고 분류된 이벤트를 불변으로 준비하도록 했으며, raw pending control 을 격리하고 pending preparation 수명주기를 결속했고 trusted preparation seal 과 runtime observation canonicalize, process seal 전제, 모든 이벤트 ordering correlation 고정까지 진행했습니다. zntc 는 #4598 다운레벨 ESM 의 top-level await 를 하루 종일 붙들었습니다 — async cone 을 계산해 init_X() 가 완료 promise 를 반환하게 하고, cone factory 를 async 로 만들며 init 호출부를 양쪽에서 게이트하고, export 선언 안의 TLA 를 async IIFE 로 바꾸는 wip 을 거쳐 async cone 을 __esm 래퍼로 승격하는 방식으로 타겟 준수와 값 정확성을 양립시켰습니다. 4차 리뷰에서 나온 회귀 4건은 "기다려 줄 기계가 있는 위상"으로 한정해 해결하고 await 판정 술어를 단일화했습니다.
커밋
ohah/maru
- docs(editor): undo selection 복원의 판정 기준을 포커스로 다듬는다
- docs(editor): 뷰가 여럿일 때의 selection 규칙 둘을 채운다
- docs(editor): 접힘의 selection 조정이 누구 것이고 언제 도는지 적는다
- docs(editor): 접힌 영역 안의 커서 규칙을 정한다 — 커서를 접힘 머리로 옮긴다
- fix(editor): 적대적 검증이 잡은 넷을 고친다 — 근거 없는 수치·미강제 불변식·부재 증명·계약 공백
- docs(ime): 조합 중 Backspace의 두 단계를 실측으로 정정한다
- docs(ime): 1차 IME 실측 기준선을 기록한다 — 결정은 2차로 미룬다
- feat(session-host): own immutable event preparation
- docs(session-host): bind pending preparation lifecycle
- refactor(session-host): isolate raw pending controls
- test(session-host): specify immutable preparation gate
- docs(session-host): close b2b3 preparation contract
- test(session-host): align metadata recipe boundary
- feat(session-host): prepare classified events immutably
- docs(session-host): expose resize recipe dependency
- test(session-host): specify event preparation recipes
- docs(session-host): specify pure event preparation recipes
- docs(lsp): 언어 서버 획득 경로를 정한다 — 번들하지 않고 설치를 안내한다
- docs(pr-checklist): lsp 라벨을 더하고 status-bar 누락을 채운다
- feat(ime): 질의 방향 콜백을 계측하고 marked range 위치를 실측 게이트로 등재한다
- docs(editor): 랩 경계 커서 모호성을 미결로 등재하고 isReversed의 축을 바로잡는다
- docs(editor): 스크롤 추종의 시점을 명령이 정하도록 못박는다
- docs(editor): 커서 상한·정렬 불변식·가로 이동 goal 규칙을 세운다
- docs(editor): 열 선택 원본이 단수인 근거와 무효화 규칙을 못박는다
- docs(editor): VSCode·CM6·Zed 전수 대조로 selection 계약의 빈틈 셋을 채운다
- design(editor): 열/블록 선택 원본을 Selections 안에 둔다 (§3.2a 뒤집기)
- feat(session-host): seal trusted event preparation
- docs(session-host): specify trusted preparation seals
- fix(chrome): 컬러 글리프 UV sentinel을 u0뿐 아니라 u1에도 싣는다
- feat(session-host): canonicalize runtime observations
- feat(session-host): add process seal prerequisite
- fix(status-bar): 에이전트 팝오버의 오른쪽 열을 한 줄로 맞춘다
- feat(status-bar): 에이전트 개수를 누르면 그 에이전트로 간다
- test(chrome): 표시 폭 골든이 이모지 그림 대신 막대만 보게 한다
- feat(font): 한글 폴백 기본값을 번들 Jetendard로 둔다
- docs(native-editor): 한글 자간의 원인을 격자가 아니라 fallback 폰트로 정정한다
- docs(native-editor): §4.2 표시 폭을 실측 근거와 함께 확정한다
- test(chrome): 표시 폭 시나리오를 캡처와 골든으로 잠근다
- feat(editor): 표시 폭을 편집기 규칙으로 세고 배치와 하나로 묶는다
- fix(grapheme): cluster 경계에 GB11·스킨톤·RI를 넣는다
- refactor(hazard): 적대적 입력 판정을 레이어 무관 중립으로 옮긴다
- docs(editor): 리거처가 셀 대응을 깨지 않음을 실측으로 확정한다
- fix(lab): 편집기 시나리오에 등폭 face를 넘기고 격자 효과를 실측한다
- fix(editor): VS16이 낀 이모지 시퀀스 오탐을 고친다
- feat(editor): ZWJ를 문맥으로 가르고 리거처 원인을 실측으로 좁힌다
- docs(editor): §3.8 가시화 구현을 문서에 반영한다
- feat(editor): 적대적 입력을 가시화한다 (§3.8 Trojan Source 방어)
- feat(session-host): correlate all-event ordering ownership
- docs(status-bar): 에이전트 항목을 누르면 그 에이전트로 가게 정한다
- test(ssh): 원격 cwd 쌍을 할당 실패·이상 authority로 흔들고 §9.4 표를 전수로 채운다
- docs(ssh): 락 제약과 host-backed 후속의 누락 지점을 명시한다
- docs(ssh): §9를 실제 구현과 맞춘다(파일 링크 스코프·host-backed 후속·검증 방식)
- fix(ssh): host만 바뀌는 cwd 전이가 관측 갱신을 건너뛰던 것과 원격 파일 링크를 고친다
- fix(ssh): 적대적 검증에서 드러난 원격 cwd 판정 결함 둘을 고친다
- feat(ssh): OSC 7 authority를 보관해 원격 cwd를 로컬과 가른다
- docs(session-host): define C3-3b settlement contract
- feat(status-bar): 앱 자신을 합계에 넣고 팝오버에 "모든 창 공유" 행으로 낸다
- docs(app-session): 알림 배지 기하를 chrome으로 올리지 않는 이유를 남긴다
- refactor(app-session): 호출 그래프로 소유를 확인한 46개를 각 그룹으로 옮긴다
- docs(app-session): 그룹 파일 17개의 결합을 실측해 남긴다
ohah/zntc
- fix(bundler): #4598 4차 리뷰 회귀 4건 수정 — 기다려 줄 기계가 있는 위상으로 한정
- fix(bundler): #4598 await 판정 술어 단일화 + 라이브러리 entry 값 소실 회귀 수정
- chore: #4598 다운레벨 ESM TLA changeset
- fix(bundler): #4598 다운레벨 ESM 의 TLA — 타겟 준수와 값 정확성 양립
- wip(#4598): async cone 을 __esm 래퍼로 승격 — 타겟 준수와 값 정확성 양립
- wip(#4598): export 선언 안의 TLA 를 async IIFE 로 (의존성 추적 + pending 배수)
- wip(#4598) 3b-4: require 소비 표현식 await (importer 담을 수 있을 때만)
- wip(#4598) 3b-3: star init 호출부도 양쪽 게이트
- wip(#4598) 3a·3b-1: cone factory async + init 호출 양쪽 게이트
- wip(#4598): async cone 계산 + init_X() 가 완료 promise 반환
- wip: async cone 진단 (진행중)