2026-08-11
요약 (AI 작성)
문서를 통째로 재편한 날입니다. 커진 계약 문서들을 주제별로 갈랐습니다 — 네이티브 편집기, 컨트롤 플레인, 파일 패널, 에디터 Surface, 사이드바 그룹, 웹 패널, Metal UI, 설정, 터미널 분해, I/O–렌더까지 각각 계약·기록·계획으로 나누고 구현 계획은 docs/plans/ 아래 이니셔티브별 파일로 내렸습니다. 분할이 남긴 깨진 앵커와 절 참조를 교정하고 흩어진 참조(render 49건, metal-ui 13건, terminal 6건 등)를 새 소유 문서로 돌렸으며, 계약 문서에서 진행 표기와 단계 분해를 걷어내 계획 쪽으로 옮겼습니다. 무엇보다 이걸 사람 손이 아니라 CI 가 지키도록 만들었습니다 — 문서 간 링크와 절 앵커, 절 번호 참조, 연속 절 참조의 뒤쪽 절, 링크 텍스트와 URL 의 일치, 계획 문서가 인덱스에서 도달하는지를 각각 게이트로 세웠고, 그 게이트가 링크 텍스트와 URL 이 갈린 33곳과 계획 인덱스 누락 9건, 상태 표기 15건·상태 라벨 6건을 잡아냈습니다. 적대적 검증도 NAV 의 자기참조와 어긋난 단일 출처 선언을 짚어 줬습니다.
편집기에는 랩과 가로 스크롤이 붙었습니다. 폭 나눗셈으로는 접히는 자리가 안 나온다는 점을 확인하고 랩을 제대로 구현했으며, 그 반대편으로 가로 스크롤 렌더를 붙였습니다. 초장문 줄이 줄 길이만큼 비용을 내지 않도록 본문 전개에 화면 폭 상한을 두고, 초장문 줄 fixture 를 캡처 회귀로 잡았습니다. 적대적 검증 7회가 잡은 여덟 건도 함께 고쳤고, 소스 컨트롤 뷰가 활성 터미널 폴더를 따라가게 했습니다. 파일 패널은 적대적 검증을 11회차까지 돌려 알림 누수·재시도 공백·삼켜진 one-shot·우회한 busy 게이트·빈 커버리지·스크롤과 복원 문제를 차례로 정리하고, 탐색기가 root 밖 cwd 에서도 활성 터미널을 따라가게 했습니다. 사이드바는 카드 하위 목록에 모든 Term 을 싣고 종류 아이콘을 이름줄로 옮겼으며, 세션 목록을 들여쓰고 아이콘 배치를 설정으로 고를 수 있게 했습니다.
session-host 는 창 닫기 경로(C3-3b5)를 비동기로 재설계했습니다. close progress 게이트와 권위 갭을 문서로 정의하고 RED 게이트를 세운 뒤, neutral close progress 계약과 pending close readiness 투영, frozen close sweep selector 를 넣고 terminal close progress 에 타입을 줬습니다. 이어 close 권위를 remote runtime 에 결속하고 remote close 권위를 봉인했으며, remote close 가 끝날 때까지 topology 를 미루고 pending close 동안 window teardown 을 지연시켰습니다. C3-3c source-zero 경로와 앱 종료 셧다운, semantic event pump 활성화, prepared event 의 원자적 정산까지 마무리했고, Linux 이식성 문제(portable atomic rename·stat projection·manifest temp root)와 Swift 링크용 컴파일러 런타임 번들도 함께 해결했습니다. 그 밖에 바깥 터미널 멀티플렉서 신원을 자식 셸에 물려주지 않도록 pty 를 고쳤고, 주석만 고친 변경에서는 macOS·오라클 잡을 건너뛰도록 CI 를 조정했습니다.
커밋
ohah/maru
- feat(session-host): complete C3-3c source-zero path
- fix(session-host): preserve manifest authority across touch
- test(session-host): use portable manifest temp root
- fix(session-host): stabilize Linux authority tests
- fix(session-host): use portable atomic rename
- fix(build): bundle compiler runtime for Swift links
- fix(session-host): use portable stat projection
- feat(session-host): complete app quit shutdown
- test(file-tree): await retained scan publication
- test(session-host): isolate real backend daemon fixture
- test(session-host): isolate multihost close fixture
- test(session-host): drain close events before retry
- test(session-host): prepare close events canonically
- fix(session-host): keep payload restore test-only
- feat(session-host): activate semantic event pump
- fix(session-host): publish window close authority batches
- feat(session-host): seal window close graph
- feat(session-host): seal remote backend singleton
- fix(session-host): allocate terms after runtime admission
- fix(session-host): retry confirmed window close progress
- feat(session-host): preflight remote window close graph
- feat(session-host): defer window teardown for pending closes
- test(session-host): prove remote close backend limits
- feat(session-host): defer topology until remote close completes
- feat(session-host): bind close authority to remote runtime
- feat(session-host): seal remote close authority
- feat(session-host): type terminal close progress
- test(boundary): register C3-3b5 neutral surface
- feat(session-host): add frozen close sweep selector
- test(session-host): close invalid pending readiness
- feat(session-host): project pending close readiness
- feat(session-host): add neutral close progress contract
- test(session-host): define C3-3b5 RED gate
- docs(session-host): close C3-3b5 authority gaps
- docs(session-host): define C3-3b5 close progress gate
- fix(pty): 바깥 터미널 멀티플렉서 신원을 자식 셸에 물려주지 않는다
- fix(sidebar): 세션 목록 아이콘을 인라인 하나로 확정하고 좌단을 맞춘다
- feat(sidebar): 세션 목록을 들여쓰고 아이콘 배치를 설정으로 고르게 한다
- feat(sidebar): 카드 하위 목록에 모든 Term을 싣고 종류 아이콘을 이름줄로 옮긴다
- docs(chrome): 이관 완료 기준과 사이드바 preview 서술의 drift를 고친다
- fix(editor): 적대적 검증 7회가 잡은 여덟을 고친다
- feat(editor): 랩을 붙인다 — 폭 나눗셈으로는 접히는 자리가 안 나온다
- test(mermaid): cold deadline 스파이크를 한 번 흡수한다
- test(mermaid): cold 렌더 소요를 실측해 결과에 남긴다
- docs(plans): NAV가 자기 소유 절을 진입점으로 가리키던 것을 고친다
- docs(sidebar): 포인터 절 뒤 헤딩 앞 빈 줄을 되돌린다
- test(docs): 계획 문서가 인덱스에서 도달하는지 게이트가 본다
- docs: 적대적 검증이 잡은 둘 — 계획 인덱스 누락 9건과 어긋난 단일 출처 선언
- docs: 스펙 문서 절 제목의 구현 상태 표기 15건을 뗀다
- docs: 스펙 문서의 상태 라벨 6건을 규율대로 정리한다
- test(docs): 링크 텍스트와 URL의 문서 일치를 게이트가 본다
- docs: 링크 텍스트와 URL이 갈린 33곳을 맞춘다
- docs: 쪼개진 agent-session-list 참조도 소유 문서로 옮긴다
- docs: 쪼개진 editor-surface 참조를 소유 문서로 옮긴다
- fix(file-panel): 적대적 검증 7~11회차 — 남은 스크롤·뷰·복원·할당·문서 드리프트
- fix(file-panel): 적대적 검증 4~6회차 — 삼켜진 one-shot·우회한 busy 게이트·빈 커버리지
- fix(file-panel): 적대적 검증이 잡은 넷을 고친다 — 알림 누수·재시도 공백·낡은 문서·전환 뒤 미펼침
- fix(file-panel): 탐색기가 root 밖 cwd에서도 활성 터미널을 따라가게 한다
- docs(render): 절 참조 49건과 링크 6건을 새 소유 문서로 돌린다
- docs(render): I/O–렌더 문서를 계약·present 정책·Phase 계획으로 가른다
- style(session-host): align settlement comments
- test(session-host): isolate registry seal fixtures
- feat(session-host): settle prepared events atomically
- docs(session-host): bind event payload release authority
- docs(session-host): close effect settlement policy
- test(session-host): define atomic settlement red gate
- docs(session-host): specify atomic settlement
- docs(terminal): 절 참조 6건과 링크 3건을 새 소유 문서로 돌린다
- docs(terminal): 분해 문서를 계약·기록·별개 이니셔티브로 가른다
- docs(config): 설정 문서를 키 표와 주제별 배경으로 가른다
- docs(metal-ui): 절 참조 13건을 새 소유 문서로 돌린다
- docs(metal-ui): Metal UI 계약을 덩어리 기준으로 가른다
- docs(agent): 에이전트 세션 도크 계약을 주제별로 가른다
- test(chrome): 초장문 줄을 fixture에 넣어 캡처로 회귀를 잡는다
- fix(editor): 본문 전개에 화면 폭 상한을 둔다 — 긴 줄이 줄 길이만큼 비용을 내지 않게
- ci: 주석만 고친 변경에서 macOS·오라클 잡을 건너뛴다
- docs(editor): build.zig 주석의 §7.4 참조도 옮긴다
- docs(editor): 에디터 Surface 계약을 주제별로 가른다
- docs: 넓힌 게이트가 잡은 연쇄 절 참조 둘을 정리한다
- test(docs): 연속 절 참조의 뒤쪽 절까지 검사한다
- docs(web-panel): 웹 패널 계약을 기능·계획과 가르고 진행 표기를 걷어낸다
- docs(sidebar): §5 컴포넌트 계약을 실제 시그니처와 맞춘다
- docs(sidebar): 계약 문서에서 진행 표기를 걷어낸다
- docs(sidebar): 계약에 남은 단계 분해 절을 계획으로 내린다
- docs(sidebar): 사이드바 그룹 계약을 주제별로 가르고 단계 분해를 계획으로 내린다
- test(docs): 절 번호 참조도 게이트에 넣는다
- docs(editor): 분할이 놓친 §2.4 참조를 소유 문서로 돌린다
- test(docs): 문서 간 링크와 절 앵커를 CI 게이트로 잡는다
- test(boundary): rebase 후 digest를 재계산한다
- docs: 분할이 남긴 깨진 앵커와 절 참조를 교정한다
- docs(file-panel): 파일 패널 계약을 주제별 문서로 가른다
- fix(editor): 소스 컨트롤 뷰가 활성 터미널 폴더를 따라가게 한다
- docs(control-plane): 컨트롤 플레인 계약을 주제별 문서로 가른다
- docs(editor): 네이티브 편집기 계약을 주제별 문서로 가른다
- docs(plan): 구현 계획을 docs/plans/ 이니셔티브별 파일로 가른다