2026-08-14
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
maru에 네이티브 diff 본문(N1.5)을 세운 날입니다. §7을 고쳐 자체 differ로 가기로 하고 diff 줄 대응을 L2에 만든 뒤, 비교 요청을 화면 네 상태로 잇고 나란한 비교가 실제로 화면에 서게 했습니다(#2179). 검증은 손으로 고른 예제 대신 불변식을 무작위로 치는 방식으로 바꿨고, 적대적 검증 R3부터 R10까지 좁은 자리·네 상태 렌더·계약·실측 근거를 확인하고 최소성을 독립 판정자로 검증했습니다. 그 과정에서 줄 분할이 목록과 본문을 어긋나게 하던 구멍, 누수와 상한, 굳은 판정을 고쳤습니다. 앞서 포커스 테두리에 덮이던 첫 행과 스크롤바를 내용 여백으로 비키며 편집기 골든 22개를 다시 만들고, N1 상태를 실제와 맞추며 editor.wrap 배선을 끝냈습니다(#2166). 비교 본문에 색과 세로 스크롤을 얹는 #2189는 이날 PR이 열렸습니다.
소스 컨트롤 도크는 2판 설계를 확정하고 컴포넌트 렌더로 갈아탔습니다(#2172). 탭 3개·체크박스·쓰기를 담은 설계를 정한 뒤 목록을 2섹션·체크박스 모델로 바꿨다가(P1a) VS Code 모델로 되돌려 호버 + 스테이징 방식을 택했고, 행 모델을 무작위 status 입력으로 두들기는 적대적 검증을 거쳤습니다. 구현은 DTO·의도 표와 git 상태 색 토큰(P1b-1), 기하·paint(P1b-2), 컴포넌트 렌더 배선과 셀 그리드 제거(P1b-3) 순으로 올렸고, 목록을 목업에 맞춰 증감 색·종류 아이콘·행 테두리를 정리했습니다. 그룹 개수는 배지로 그리되 채운 색 칩으로 바꾸고 크기와 폭을 라벨에서 잡게 했습니다(#2187). 탭 줄을 붙이는 P1 마무리 #2196은 이날 열렸습니다. 스크롤 영역 문서는 이관 완료 상태를 사실대로 적고 변이 검증에서 드러난 판정자 한계를 남겼습니다(#2167).
session-host는 두 축으로 진행됐습니다. CR0b incident/poison publication 쪽은 전날 열린 기반 #2164를 병합하고, managed poison caller 배선(#2168)과 publication port 봉인(#2173)을 거쳐 prepared execution, allocator callback, read pump, outbound RPC ambiguity의 poison을 각각 발행하고 registered event poison은 지연 발행하게 했습니다. 재접속 쪽은 CR1 reconnect scheduler admission(#2183)을 넣고 RemoteGeneration owner를 추출한 뒤, CR2b stable screen proxy, CR2c input owner facade, CR2d의 remote input queue·ordered input transcript·stable event cursor를 쌓고 창 이동에도 stable 상태가 유지되게 했습니다(#2194). 전날 열린 SSH 수정 #2163도 병합돼 로컬 셸이 자기 세션을 원격으로 오판하지 않게 됐고, hostname 캐시를 걷어내고 원격 복사 경고를 스크립트에 두면서 판정 소비처 표와 문서를 전수로 맞췄습니다.
모바일 작업은 deploy/mobile 브랜치에서 이어졌고 main 반영은 아닙니다. 아틀라스가 차면 가장 안 쓰인 자리를 내주게 하고(#2170), VS16 결합을 컬러로 굽고, 앱으로서의 UX를 문서로 정했으며(#2175), 키보드가 덮는 만큼 레이아웃을 줄이고 보조 키바를 손가락 크기로 키워 가로 스크롤되게 했습니다(#2180). Android 프레임 주기를 vsync 세기에서 경과 시간 기준으로 바꾸는 #2186도 그 브랜치에 병합됐고, 설정 화면 PoC #2197은 이날 열렸습니다.
공개 커밋 71개, 해당일 생성 또는 병합된 PR 35개를 정리했습니다. PR 생성 32개·병합 32개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/maru
- fix(chrome): 개수 배지 크기를 행이 아니라 라벨에서 잡는다
- fix(chrome): 개수 배지를 채운 색 칩으로 바꾸고 폭을 라벨에 맞춘다
- feat(chrome): 소스 컨트롤 그룹 개수를 배지로 그린다
- fix(session-host): preserve stable state across window moves
- feat(session-host): add CR2d3 stable event cursor
- feat(session-host): add CR2d2 ordered input transcript
- feat(session-host): add CR2d1 remote input queue
- feat(session-host): add CR2c input owner facade
- feat(session-host): add CR2b stable screen proxy
- refactor(session-host): extract RemoteGeneration owner
- feat(session-host): add CR1 reconnect scheduler admission
- feat(session-host): publish outbound ambiguity incidents
- fix(tests): app_session digest 원장을 갱신한다 — P1b 도크 배선이 파일을 건드렸다
- fix(ci): 리베이스 뒤 게이트 셋을 맞춘다 — fmt·경계 digest·계획 인덱스
- fix(chrome): 소스 컨트롤 목록을 목업에 맞춘다 — 증감 색·종류 아이콘·행 테두리 제거
- fix(chrome): 소스 컨트롤 도크 아이콘을 셀이 아니라 logical 슬롯에 놓는다
- feat(file-panel): 소스 컨트롤 도크를 컴포넌트 렌더로 배선하고 셀 그리드를 제거한다 (P1b-3)
- feat(chrome): 소스 컨트롤 도크 컴포넌트의 기하·paint (P1b-2)
- feat(chrome): 소스 컨트롤 도크 컴포넌트의 DTO·의도 표와 git 상태 색 토큰 (P1b-1)
- test(file-panel): 행 모델을 무작위 status 입력으로 두들긴다 (적대적 검증 7회차)
- refactor(file-panel): 소스 컨트롤 그룹을 VS Code 모델로 되돌린다 — 호버
+스테이징 - feat(file-panel): 소스 컨트롤 목록을 2섹션·체크박스 모델로 바꾼다 (P1a)
- docs(scm-dock): 소스 컨트롤 도크 2판 설계를 확정한다 — 탭 3개·체크박스·쓰기
- test(editor): R8~R10 — 최소성을 독립 판정자로 검증한다
- test(editor): 적대적 검증 R3~R7 — 좁은 자리·네 상태 렌더·계약·실측 근거
- fix(tests): app_session digest 원장을 갱신한다 — N1.5 배선이 파일을 건드렸다
- fix(editor): 적대적 검증이 잡은 셋 — 굳은 판정·CR·컨트롤 플레인
- feat(editor): N1.5 c — 나란한 비교가 화면에 선다
- feat(editor): N1.5 b — 비교 요청을 화면 네 상태로 잇는다
- docs(editor): truncated가 이미 TooLarge로 접힌다는 사실을 슬라이스 b 표에 적는다
- fix(editor): 줄 분할이 목록과 본문을 어긋나게 하는 구멍을 막는다
- test(editor): 손으로 고른 예제 대신 불변식을 무작위로 친다
- fix(editor): 적대적 검증이 잡은 것들 — 누수·상한·근거를 실측으로 바꾼다
- feat(editor): diff 줄 대응을 L2에 만든다 — §7을 고치고 자체 differ로 간다
- feat(session-host): publish read pump poison incidents
- feat(session-host): publish allocator callback poison
- feat(session-host): defer registered event poison publication
- feat(session-host): publish prepared execution poison
- feat(session-host): seal managed poison publication port
- docs(ssh): 사용자 rc 보고자 한계를 가설로 표시하고 대응 조건을 적는다
- fix(ssh): 원격 복사 경고를 스크립트에 두고 판정 소비처 표를 전수로 고친다
- fix(ssh): hostname 캐시를 걷어내고 안내 소비처·문서를 전수로 맞춘다
- fix(ssh): 로컬 셸이 OSC 7 authority를 비워 자기 세션을 원격으로 오판하지 않는다
- docs(session-host): specify managed poison caller two
- test(editor): 내용 여백만큼 편집기 골든 22개를 다시 만든다
- fix(editor): 포커스 테두리에 덮이던 첫 행·스크롤바를 내용 여백으로 비킨다
- docs(editor): N1 상태를 실제와 맞추고 editor.wrap 배선을 끝낸다
- test(session-host): initialize source seal correlation field
- feat(session-host): wire canonical managed poison caller
- fix(test): format bootstrap artifact selection
- fix(test): use Linux exit-group success boundary
- fix(test): use one aggregate result snapshot
- fix(test): isolate bootstrap GUI child artifact
- fix(test): snapshot concurrent error logs atomically
- fix(test): preserve successful aggregate exit status
- fix(test): verify fresh callback fail-stop in child
- fix(session-host): isolate daemon bootstrap proofs
- fix(platform): keep incident shutdown ABI cross-platform
- feat(session-host): build CR0b incident publication prerequisites
- test(observability): close CR0b input digest matrix
- test(observability): harden CR0b input projection
- feat(observability): canonicalize CR0b incident input
- feat(observability): define CR0b composite publication contract
- feat(session-host): prepare CR0b client incident operation
- feat(session-host): store CR0b incident lineage on client
- feat(observability): define CR0b poison publication contract
- feat(observability): prepare CR0b incident publication
- feat(session-host): add CR0b publisher authority
- docs(session-host): define CR0b poison publication gate
- docs(scroll-area): 변이 검증에서 드러난 판정자 한계를 §10.1에 남긴다
- docs(scroll-area): 이관 완료 상태를 사실대로 적고 잔여 넷을 한곳에 모은다
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.