2026-08-14
요약 (AI 작성)
네이티브 diff 본문(N1.5)을 세운 날입니다. §7 을 고쳐 자체 differ 로 가기로 하고 diff 줄 대응을 L2 에 만든 뒤, 비교 요청을 화면 네 상태로 잇고 나란한 비교가 실제로 서도록 했으며 비교 본문에 색을 얹고 세로 스크롤을 붙였습니다. 검증은 손으로 고른 예제 대신 불변식을 무작위로 치는 방식으로 바꿨고, 적대적 검증을 R3~R10 까지 돌려 좁은 자리·네 상태 렌더·계약·실측 근거를 확인하고 최소성을 독립 판정자로 검증했습니다. 그 과정에서 줄 분할이 목록과 본문을 어긋나게 하던 구멍, 누수와 상한, 굳은 판정을 고쳤고, 포커스 테두리에 덮이던 첫 행과 스크롤바를 내용 여백으로 비키면서 편집기 골든 22개를 다시 만들었습니다. N1 상태를 실제와 맞추고 editor.wrap 배선도 끝냈습니다.
소스 컨트롤 도크는 2판 설계를 확정하고 컴포넌트 렌더로 갈아탔습니다. 탭 3개·체크박스·쓰기를 담은 설계를 정한 뒤 목록을 2섹션·체크박스 모델로 바꿨다가(P1a) VS Code 모델로 되돌려 호버 + 스테이징 방식을 택했고, 행 모델을 무작위 status 입력으로 두들기는 적대적 검증 7회차를 거쳤습니다. 구현은 DTO·의도 표와 git 상태 색 토큰(P1b-1), 기하·paint(P1b-2), 컴포넌트 렌더 배선과 셀 그리드 제거(P1b-3) 순으로 올리고 탭 줄을 붙여 마무리했으며, 목록을 목업에 맞춰 증감 색·종류 아이콘·행 테두리를 정리하고 도크 아이콘을 셀이 아니라 logical 슬롯에 놓았습니다. 그룹 개수는 배지로 그리되 채운 색 칩으로 바꾸고 크기와 폭을 행이 아니라 라벨에서 잡도록 했습니다.
session-host 는 두 축이 진행됐습니다. 하나는 CR0b incident/poison publication — 발행 계약과 게이트를 정의하고 publisher 권위와 client incident lineage, composite publication 계약, 입력 canonicalize 와 digest 매트릭스를 갖춘 뒤, prepared execution·allocator callback·read pump·outbound RPC ambiguity 의 poison 을 각각 발행하고 registered event poison 은 지연 발행하도록 했으며 managed poison publication port 를 봉인했습니다. 다른 하나는 CR1·CR2 재접속 계열 — reconnect scheduler admission 을 넣고 RemoteGeneration owner 를 추출한 뒤 stable screen proxy(CR2b), input owner facade(CR2c), remote input queue·ordered input transcript·stable event cursor(CR2d1~d3)를 쌓아 창 이동에도 상태가 유지되게 했습니다. 모바일은 설정 화면 PoC 를 라우터로 세우고, 보조 키바를 손가락 크기로 키워 가로 스크롤되게 했으며 키보드가 덮는 만큼 레이아웃을 줄이도록 했고, Android 프레임 주기를 vsync 세기에서 경과 시간 기준으로 바꾸고 아틀라스가 차면 가장 안 쓰인 자리를 내주도록 했습니다. SSH 에서는 hostname 캐시를 걷어내고 원격 복사 경고를 스크립트에 두면서 판정 소비처 표와 문서를 전수로 맞췄습니다.
커밋
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): 이관 완료 상태를 사실대로 적고 잔여 넷을 한곳에 모은다