2026-08-10

날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.

요약 (AI 작성)

maru의 네이티브 편집기 selection 계약을 다른 편집기들과 전수 대조해 채운 날입니다. VSCode·CM6·Zed를 대조해 빈틈 셋을 메우고, 열/블록 선택 원본을 Selections 안에 두는 쪽으로 §3.2a를 뒤집었으며(#2065), 열 선택 원본이 단수인 근거와 무효화 규칙, 커서 상한·정렬 불변식·가로 이동 goal 규칙, 스크롤 추종의 시점을 명령이 정한다는 점을 각각 못 박았습니다. 접힌 영역 안의 커서는 접힘 머리로 옮기도록 정하고(#2072), 뷰가 여럿일 때의 selection 규칙 둘(#2073)과 undo 시 selection 복원 기준을 다듬었습니다. 랩 경계 커서 모호성은 미결로 등재하고 isReversed의 축을 바로잡았으며, 적대적 검증이 잡은 근거 없는 수치·미강제 불변식·부재 증명·계약 공백 넷을 고쳤습니다.

표시 폭과 적대적 입력 처리도 실측으로 확정했습니다. 이모지·기호의 표시 폭을 편집기 규칙으로 세우고 배치와 하나로 묶었으며(#2059), grapheme cluster 경계에 GB11·스킨톤·RI를 넣고 VS16이 낀 이모지 시퀀스 오탐과 ZWJ 문맥 구분을 고쳤습니다. 리거처가 셀 대응을 깨지 않음을 실측으로 확정하고, 한글 자간 문제의 원인이 격자가 아니라 fallback 폰트임을 밝혀 한글 폴백 기본값을 번들 Jetendard로 뒀습니다. 전날 열린 Trojan Source 방어 #2045가 병합돼 적대적 입력을 가시화했고, 그 판정은 레이어 무관 중립 위치로 옮겼습니다. 컬러 글리프 UV sentinel을 u1에도 싣는 수정(#2064)도 들어왔습니다.

SSH 원격 세션은 OSC 7 authority를 보관해 원격 cwd를 로컬과 가르게 했고(#2057), host만 바뀌는 cwd 전이가 관측 갱신을 건너뛰던 것과 원격 파일 링크, 적대적 검증에서 드러난 판정 결함 둘을 고친 뒤 §9.4 표를 전수로 채웠습니다. 상태바는 에이전트 개수를 누르면 그 에이전트로 가게 하고(#2062), 앱 자신을 합계에 넣어 팝오버에 "모든 창 공유" 행으로 냈습니다(#2055). app_session 분할의 후속으로 그룹 파일 17개의 결합을 실측해 남기고, 호출 그래프로 소유를 확인한 46개를 각 그룹으로 옮겼습니다(#2054). 언어 서버는 번들하지 않고 설치를 안내하기로 정했고(#2068), IME는 1차 실측 기준선만 기록하고 결정을 2차로 미뤘습니다(#2069). 구현 계획을 docs/plans/ 이니셔티브별 파일로 가르는 #2074, 컨트롤 플레인과 파일 패널 계약을 주제별로 가르는 #2076·#2077은 이날 PR이 열렸습니다.

session-host는 모든 이벤트의 ordering correlation을 고정하고(#2061) process seal 전제, runtime observation canonicalize, trusted preparation seal을 거쳐, 분류된 이벤트를 불변으로 준비하고(#2070) raw pending control을 격리하며 pending preparation 수명주기를 결속했습니다(#2071). zntc는 #4598 다운레벨 ESM의 top-level await를 붙들어 async cone을 계산하고 cone factory와 init 호출부를 게이트하는 wip 단계를 거쳐, async cone을 __esm 래퍼로 승격하는 방식으로 타겟 준수와 값 정확성을 양립시켰습니다(#4627). 4차 리뷰의 회귀 4건은 "기다려 줄 기계가 있는 위상"으로 한정해 고치고 await 판정 술어를 단일화했습니다. es5(RN)의 TLA 소비자를 promise 체이닝으로 바꾸는 #4631은 열린 채 남아 있습니다.

공개 커밋 71개, 해당일 생성 또는 병합된 PR 28개를 정리했습니다. PR 생성 27개·병합 23개는 같은 PR이 양쪽에 포함될 수 있습니다.

커밋

ohah/maru

ohah/zntc

PR (해당일 생성/머지)

상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.

저장소PR해당일 활동상태대상 브랜치제목
ohah/maru#2077생성mergedmaindocs(file-panel): 파일 패널 계약을 주제별 문서로 가른다
ohah/maru#2076생성mergedmaindocs(control-plane): 컨트롤 플레인 계약을 주제별 문서로 가른다
ohah/maru#2075생성closed기능 브랜치: docs/split-oversized-plan-docsdocs(editor): 네이티브 편집기 계약을 주제별 문서로 가른다
ohah/maru#2074생성mergedmaindocs(plan): 구현 계획을 docs/plans/ 이니셔티브별 파일로 가른다
ohah/maru#2073생성 · 병합mergedmaindocs(editor): 뷰가 여럿일 때의 selection 규칙 둘을 채운다 (§3.3)
ohah/maru#2072생성 · 병합mergedmaindocs(editor): 접힌 영역 안의 커서 규칙을 정한다 (§4)
ohah/maru#2071생성 · 병합mergedmainfeat(session-host): own immutable event preparation
ohah/maru#2070생성 · 병합mergedmainfeat(session-host): prepare classified events immutably
ohah/maru#2069생성 · 병합mergedmaindocs(ime): 1차 IME 실측 기준선을 기록한다 — 결정은 2차로 미룬다
ohah/maru#2068생성 · 병합mergedmaindocs(lsp): 언어 서버는 번들하지 않고 설치를 안내한다 (§8.1a)
ohah/maru#2067생성 · 병합mergedmainfeat(session-host): seal trusted event preparation
ohah/maru#2066생성 · 병합mergedmainfeat(session-host): canonicalize runtime observations
ohah/maru#2065생성 · 병합mergedmaindesign(editor): 열/블록 선택 원본을 Selections 안에 둔다 (§3.2a 뒤집기)
ohah/maru#2064생성 · 병합mergedmainfix(chrome): 컬러 글리프 UV sentinel을 u0뿐 아니라 u1에도 싣는다
ohah/maru#2063생성 · 병합mergedmainfeat(session-host): add process seal prerequisite
ohah/maru#2062생성 · 병합mergedmainfeat(status-bar): 에이전트 개수를 누르면 그 에이전트로 간다
ohah/maru#2061생성 · 병합mergedmainfeat(session-host): 모든 이벤트 ordering correlation을 고정한다
ohah/maru#2060생성 · 병합mergedmaindocs(status-bar): 에이전트 항목을 누르면 그 에이전트로 가게 정한다
ohah/maru#2059생성 · 병합mergedmainfix(editor): 이모지·기호 표시 폭을 편집기 규칙으로 확정한다 (§4.2)
ohah/maru#2058생성 · 병합mergedmaindocs(session-host): define C3-3b settlement contract
ohah/maru#2057생성 · 병합mergedmainfeat(ssh): OSC 7 authority를 보관해 원격 cwd를 로컬과 가른다
ohah/maru#2056생성 · 병합mergedmaindocs(app-session): 알림 배지 기하를 chrome으로 올리지 않는 이유를 남긴다
ohah/maru#2055생성 · 병합mergedmainfeat(status-bar): 앱 자신을 합계에 넣고 팝오버에 "모든 창 공유" 행으로 낸다
ohah/maru#2054생성 · 병합mergedmainrefactor(app-session): 호출 그래프로 소유를 확인한 46개를 각 그룹으로 옮긴다
ohah/maru#2053생성 · 병합mergedmaindocs(app-session): 그룹 파일 17개의 결합을 실측해 남긴다
ohah/maru#2045병합mergedmainfeat(editor): 적대적 입력을 가시화한다 (§3.8 Trojan Source 방어)
ohah/zntc#4631생성openmainfix(bundler): #4598 es5(RN) 의 TLA 소비자를 promise 체이닝으로 — Hermes 앱 부팅 복구
ohah/zntc#4627생성 · 병합mergedmainfix(bundler): #4598 다운레벨 ESM 의 top-level await — 타겟 준수와 값 정확성 양립