2026-07-31
요약 (AI 작성)
코드 에디터·git diff surface(Phase 0)를 설계하고 그 첫 조각을 실제로 붙인 날입니다. 설계는 적대 검증을 여러 차례 돌리며 스스로 뒤집는 과정이었습니다 — 에디터 엔진은 Monaco 를 기각하고 CodeMirror 6 로 확정했고, PoC 3건으로 CSP 결론을 뒤집었다가 낡은 브랜치를 대조했음을 확인하고 CSP 결함 주장을 철회했으며, 소켓 push 스트림 오인·file-panel 진행상태 오인·'전체 턴 enumerate' 과장 같은 자기 주장을 4차에 걸쳐 정정했습니다. 그 결과 §3~§8 을 CM6/file-panel 도크 확장 구조로 재작성하고 git 리뷰 UI 를 우측 도크 뷰로 설계했으며, 프런트 빌드 4층 게이트와 v1 번들 레시피, 남은 구현층 한계를 §11 에 명시했습니다.
구현으로는 소스 컨트롤 뷰가 들어왔습니다. git porcelain v2·numstat 순수 파서와 읽기 전용 명령 조립을 순수 모듈로 두고 git 읽기 backend 를 별도 스레드로 돌린 뒤, 행 모델·목록 렌더·갱신 배선을 프레임에 물리고 브랜치 헤더·섹션 접기·아이콘·스크롤·선택과 "브랜치에 COMMIT 됨" 섹션을 넣었습니다. git 을 실제로 실행할 수 있게 고치고 설치 여부를 판정하며, 충돌·하위 모듈이 잘못 보이던 것을 실측으로 잡았습니다. diff 쪽은 파일 kind 와 비교 기준을 모델에 넣고 본문 읽기 명령과 페이로드 상한, diff.open 브리지 method 를 더해 소스 컨트롤 행을 눌러 diff 를 여는 경로를 이었으며, MergeView 하니스와 전용 asset root 빌드·제품 WKWebView MergeView 게이트를 넣고 diff 1/2/4개의 RSS·유휴 CPU·회수를 측정했습니다. diff 화면 자체도 읽을 수 있게 다듬고 색을 테마에서 파생하도록 했으며, 리뷰가 확정한 15건과 긴 파일 표시·탭 이름 문제를 고쳤습니다. 탐색기에는 도크 뷰 스위처를 넣고 탭 바에 맞춘 뒤 AI 세션 뷰를 더했습니다.
session-host 는 recovery 와 control 경로를 닫았습니다. recovery consumer core 를 완성하고 화면 발행을 mark 이후로 옮기며 권위를 preflight 하도록 했고, recovery token 권위를 ledger 이후로 미뤘습니다. control 은 응답 correlation 을 연결하고 증거 계약을 테스트로 닫았으며 계약 자체를 타입으로 봉인했고, 외부 attach TX queue 와 request ID 를 구현했습니다. revoke 는 turn 우선순위를 계획하고 tx 취소를 봉인해 whole-turn 정리에 통합했으며, RX authority 의 socketpair 게이트와 adapter 수명주기, terminal cleanup 권위 결속도 마무리했습니다. 사이드바에서는 적대 검증이 뚫은 상태줄 훅 손실 경로를 막아 훅이 감쌌던 사용자 명령을 잃지 않게 했습니다. zntc 에서는 tsconfig paths 가 다른 모듈을 조용히 번들하던 두 경로(상대 hijack·specificity)를 고쳤고, 웹 쪽은 타입 검사를 전체로 넓혀 오류 51건을 정리했습니다.
커밋
ohah/maru
- test(session-host): remove restore deadline scheduling race
- test(session-host): stabilize resolver capacity recovery
- feat(session-host): bind terminal cleanup authority
- feat(session-host): completed drain preparation 기반을 봉인합니다
- fix(session-host): recovery token 권위를 ledger 이후로 미룹니다
- feat(session-host): control 계약을 타입으로 봉인합니다
- feat(session-host): integrate revoked turn cleanup
- feat(session-host): seal revoked tx cancellation
- feat(session-host): plan revoke turn priority
- fix(editor): 하니스 probe 타입 선언을 되살립니다
- fix(editor): 긴 파일도 그대로 보여 주고, 탭 이름을 파일명으로 답니다
- fix(scm): 충돌·하위 모듈이 잘못 보이던 것을 실측으로 잡습니다
- feat(scm): "브랜치에 COMMIT 됨" 섹션을 넣습니다
- docs(editor): 목록 chrome·갱신·diff 시각 언어를 계약으로 적습니다
- feat(editor): diff 화면을 읽을 수 있게 만들고 색을 테마에서 파생합니다
- feat(scm): 목록에 브랜치 헤더·섹션 접기·아이콘·스크롤·선택을 넣습니다
- fix(editor): 리뷰가 확정한 15건을 고칩니다
- feat(editor): 소스 컨트롤 행을 눌러 diff를 여는 경로를 잇습니다
- feat(editor): diff.open 브리지 method를 넣습니다
- feat(editor): diff 본문 읽기 명령과 페이로드 상한을 넣습니다
- feat(editor): diff 파일 kind와 비교 기준을 모델에 넣습니다
- docs(session-host): define revoke integration gates
- test(session-host): close control correlation evidence
- docs(session-host): close control evidence contract
- feat(session-host): correlate control responses
- docs(session-host): define control correlation gates
- feat(session-host): implement external TX queue
- docs(session-host): close external tx gates
- docs(editor): 열려 있던 사용자 결정을 계약으로 못 박습니다
- feat(editor): diff 1/2/4개의 RSS·유휴 CPU·회수를 측정합니다
- feat(editor): 제품 WKWebView MergeView 게이트를 넣습니다
- feat(editor): MergeView diff 하니스와 전용 asset root 빌드를 넣습니다
- fix(dock): 탐색기 전용 클릭이 다른 뷰로 새지 않게 막습니다
- fix(scm): git을 실제로 실행할 수 있게 고치고 설치 여부를 판정합니다
- feat(scm): 소스 컨트롤 목록을 프레임에 배선합니다
- feat(scm): 소스 컨트롤 뷰의 행 모델·목록 렌더·갱신 배선을 넣습니다
- feat(platform): git 읽기 backend를 별도 스레드로 돌립니다
- feat(session): 읽기 전용 git 명령 조립을 순수 모듈로 둡니다
- feat(session): git porcelain v2·numstat 순수 파서를 넣습니다
- docs(sidebar): 상태줄 훅 계약을 적대 검증 결과에 맞춥니다
- fix(sidebar): 적대 검증이 뚫은 상태줄 훅 손실 경로를 막습니다
- docs(sidebar): 상태줄 게이트 설명에 마커 복구 검증을 더합니다
- fix(sidebar): 상태줄 훅이 감쌌던 사용자 명령을 잃지 않게 합니다
- docs(editor-surface): CSP 결함 주장을 철회합니다 — 낡은 브랜치 코드를 대조했습니다
- docs(editor-surface): PoC 3건으로 CSP 결론을 뒤집고 §3.5 구멍을 메웁니다
- docs(editor-surface): git 리뷰 UI를 우측 도크 뷰로 설계하고 stale 전제를 정정합니다
- docs(editor-surface): 적대 검증 4차 — file-panel 진행상태 오인·zntc 해소 주장 정정 외 12건
- docs(editor-surface): §11 한계 갱신 — §3~§8 재작성 완료 반영(구조층) + 남은 구현층 명시
- docs(editor-surface): §3~§8 을 CM6/file-panel 도크 확장 구조로 재작성
- docs(editor-surface): 적대 검증 — app_session.zig 크기 정밀화(2.78→2.7+ MiB)
- docs(editor-surface): §6.1 정정 — '전체 턴 enumerate' 과장 수정, 검증/미구현 분리
- docs(editor-surface): §6.1 에이전트 턴 diff base 추가 (마지막 턴·턴 타임라인)
- docs(editor-surface): 에디터 엔진 = CodeMirror 6 확정 (Monaco 기각)
- docs(editor-surface): file-panel 정합 — 프레임워크 없음·도크 공유·trust 계단 정정
- docs(editor-surface): PoC 결과와 구현 게이트 강화
- docs(editor-surface): 적대 검증 3차 — 소켓 push 스트림 오인 정정, v1 번들 레시피 확정
- docs(editor-surface): Monaco 렌더 검증(Vite 대비 0px) + 프런트 빌드 4층 게이트
- docs(editor-surface): 런타임 실측 반영 — CSP unsafe-eval 불필요 확정, zntc 결함 6건
- docs(editor-surface): 적대 검증 정정 — CSP 청정 주장 과장 수정
- docs(editor-surface): 코드 에디터·git diff·포맷/린트·LSP surface 설계 (Phase 0)
- docs(file-explorer): 뷰 스위처 계약을 손 확인 결과로 갱신합니다
- feat(file-explorer): 뷰 스위처를 탭 바에 맞추고 AI 세션 뷰를 더합니다
- feat(file-explorer): 도크에 뷰 스위처를 넣습니다
- test(session-host): cover stale recovery stream
- docs(session-host): mark recovery core implemented
- fix(session-host): publish recovery screen after mark
- fix(session-host): preflight recovery screen authority
- feat(session-host): close recovery consumer core
- docs(session-host): split closed recovery gates
- docs(session-host): mark RX authority socketpair gate complete
- feat(session-host): close RX authority socketpair gate
- docs(session-host): mark authority adapter gate complete
- feat(session-host): close RX authority adapter lifecycle