2026-07-31
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
maru는 7월 12일에 열었던 코드 에디터·git diff·포맷/린트·LSP surface 설계(Phase 0) PR #1340을 병합했습니다. 설계는 적대 검증을 여러 차례 거치며 스스로 결론을 뒤집었습니다. 에디터 엔진은 Monaco를 기각하고 CodeMirror 6로 확정했고, PoC 3건으로 CSP 결론을 뒤집었다가 낡은 브랜치 코드를 대조했다는 사실을 확인해 CSP 결함 주장을 철회했으며, 소켓 push 스트림이 존재한다는 오인과 file-panel 진행 상태 오인 등을 정정했습니다. 그 결과 §3부터 §8을 file-panel 도크 확장 구조로 다시 쓰고, git 리뷰 UI를 우측 도크 뷰로 설계했으며, 열려 있던 사용자 결정을 계약으로 못 박았습니다.
구현으로는 도크에 뷰 스위처를 넣어 탭 바 높이에 맞추고 AI 세션 뷰를 더했고(#1731), 읽기 전용 소스 컨트롤 뷰를 붙였습니다(#1733). git porcelain v2·numstat 순수 파서와 읽기 전용 명령 조립, 별도 스레드의 git 읽기 backend, 행 모델과 목록 렌더를 쌓았고, Zig 0.16의 io 기반 프로세스 실행 때문에 목록이 "읽는 중"에 머물던 문제와 탐색기 전용 클릭이 다른 뷰로 새던 문제를 고쳤습니다. 제품 WKWebView에서 @codemirror/merge가 도는지 보는 MergeView 게이트와 diff 1·2·4개의 RSS·유휴 CPU 측정(#1734)에 이어, 소스 컨트롤 행을 눌러 diff.open 브리지로 diff Term을 여는 경로가 이어졌습니다(#1739). 이 과정에서 줄 번호·스크롤·테마 파생 색을 갖추고 리뷰가 확정한 15건과 긴 파일 표시·탭 이름 문제를 고쳤으며, "브랜치에 COMMIT 됨" 섹션을 더하고 충돌·하위 모듈이 잘못 보이던 문제를 실측으로 잡았습니다(#1740).
session-host는 RX authority adapter 수명주기와 socketpair 게이트(#1728, #1729), recovery consumer core(#1730)를 닫았습니다. 외부 attach TX queue와 request ID(#1735), control 응답 correlation과 증거 테스트(#1736, #1737), revoke 통합 게이트 정의와 revoke turn 취소의 whole-turn 통합(#1738, #1741), control 계약의 타입 봉인(#1743), recovery token 권위를 ledger 이후로 미루는 수정(#1744), completed drain preparation 기반(#1745), terminal cleanup 권위 결속(#1746)이 병합됐습니다.
사이드바에서는 maru 인스턴스가 여럿일 때 상태줄 훅이 감쌌던 사용자 statusLine 명령이 통째로 사라지던 경합을 고치고, 적대 검증이 다시 뚫은 손실 경로까지 막았습니다(#1732). 웹 타입 검사를 전체로 넓히고 오류 51건을 고치는 PR #1742가 열렸습니다. zntc는 tsconfig paths 해석이 TypeScript·esbuild와 어긋나 진단 없이 다른 모듈을 번들하던 두 결함(상대 경로 hijack, specificity)을 고쳤습니다(#4608).
공개 커밋 74개, 해당일 생성 또는 병합된 PR 21개를 정리했습니다. PR 생성 20개·병합 20개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
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
ohah/zntc
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.