2026-08-20
요약 (AI 작성)
에이전트 훅 축을 열고 Windows 에 파일 트리와 소스 컨트롤을 띄운 날입니다. 훅을 상태·알림·턴의 단일 소스로 두는 계약을 먼저 적고, 훅 이벤트를 나르는 채널의 순수 코어(AH1)를 세워 적대적 검증으로 굳힌 뒤, claude 의 settings.json 과 codex 에 훅을 설치하고 신뢰를 기록했습니다(AH2a·b). 게이트는 기본 꺼짐이고, 끄면 설치한 것을 지웁니다. 컨트롤 플레인은 원격 축을 SSH 채널 하나 더로 정하고(S10a), 같은 연결에 컨트롤 채널을 열고(S10b-1), ABI·펌프가 그것을 알게 하고(S10b-2), 폰이 닿을 중계 maru control --stdio 를 냈습니다(S10c).
Windows 는 파일 트리가 화면에 뜨고 선택 띠까지 그려졌으며(W8.2⒝·⒞), git 을 부를 캡처 러너를 CreateProcessW 와 익명 파이프로 세워 환경 상속·stdin NUL 같은 함정을 적대적으로 검증한 뒤 git 백엔드와 쓰기 경로가 Windows 에서 돌고 소스 컨트롤이 화면에 떴습니다(W8.4). 기본으로 쓰이는 PowerShell 5.1 을 실제로 띄워 봤고, 그리기 스모크는 27초에서 4초로 줄였습니다. 네이티브 편집기에서 텍스트를 고르고 복사하는 것(§4.1g)과 session-host 의 CR5 다중 runtime ledger·ordered reconnect 도 이날입니다.
작은 것들도 많았습니다 — 안드로이드 ELF 16KB 페이지 정렬, 조합 중인 한글을 편집 칸에 보이게 하고 확정을 잃지 않는 것, 빈 칸을 공백으로 셰이핑해 줄 뒤쪽 합자가 죽는 것을 막고 4글자 합자의 왼쪽 오버항을 3칸까지 허용한 것, 탭 개수를 목록 모델 없이 세어 매 프레임 378µs 를 12.8µs 로 줄인 것, 언어를 박은 문자열에 게이트를 세운 것(컴파일러가 절반만 막는다), 누른 적 없는 버튼의 뗌이 링크 Cmd+클릭을 두 번 열던 것.
커밋
ohah/maru
- fix(font): 빈 칸을 공백으로 셰이핑해 줄 뒤쪽 합자가 죽는 것을 막는다
- feat(mobile): 테마를 모든 화면에 · 데모 텍스트 제거 · 자판 버튼 (사용자 요청)
- fix(session-host): admit canonical empty metadata DTO
- feat(session-host): define CR5 runtime ledger contract
- feat(agent-hooks): 게이트를 끄면 설치한 것을 지운다
- fix(mobile): 컴파일 진단 문구를 i18n 원장에 올린다
- docs(ssh): 채널 거절 경로는 실서버로 못 잰다 — 그 이유와 함께 적는다
- docs(ssh): 모르는 번호 규칙과 채널 거절 규칙을 서로 잇는다
- fix(mobile): Step 에 필드가 늘면 absorb 에서 컴파일이 멈춘다
- fix(ssh): 서버가 채널을 열자고 하면 제대로 거절한다 (§5.1)
- test(windows): 캡처 러너의 환경 처리를 적대적으로 검증한다 — 빈 값과 상속 온전성
- feat(session-host): prepare host-wide runtime retirement
- revert(windows): 죽은 경로를 그린 소스 컨트롤 스모크를 되돌리고, 왜 틀렸는지 적는다
- feat(session-host): complete ordered runtime reconnect transactions
- fix(terminal): 이모지 cluster 묶기를 text.emoji-width=wide 에서도 켠다
- feat(windows): 소스 컨트롤이 Windows 화면에 뜬다 (W8.4 마무리)
- docs(mobile): 컨트롤 stderr 포인터의 수명을 헤더에 적는다
- docs(mobile): 컨트롤 훅 규칙을 고친 대로 적는다
- fix(mobile): 컨트롤 훅이 없으면 채널을 아예 안 연다
- feat(mobile): ABI·펌프가 컨트롤 채널을 안다 (S10b-2)
- fix(scm): 탭 개수와 스크롤 상한을 활성 탭에서 떼어낸다 — 히스토리가
(0)이고 안 굴렀다 - feat(agent-hooks): codex 에 훅을 설치하고 신뢰를 기록한다 (AH2b-4)
- feat(agent-hooks): codex 훅 신뢰 값을 계산한다 (AH2b-2·3)
- feat(agent-hooks): 이벤트 세트를 provider 별로 가른다 (AH2b-1)
- feat(windows): 파일 트리 선택 띠가 화면에 뜬다 — 새 쿼드 파이프라인 없이 (W8.2 ⒞)
- test(settings): 문구를 박아 둔 단언 여섯을 키로 바꾼다 — CI 가 잡았다
- fix(i18n): 한 화면에 서는 문구 중 일부만 옮겨 언어가 섞였다 + digest 를 반사 자리로 좁힌다
- refactor(boundary): 원장 판정 규칙을 한 곳이 소유하게 한다
- fix(font): 글리프 격자 덤프에 실제 셀 메트릭을 실어 배치를 믿을 수 있게 한다
- feat(session-host): bind CR5 runtime set to reconnect job
- docs(windows): §2m.8 의 '합친다' 서술을 스트림 축으로 맞춘다
- fix(windows): 캡처 러너가 stdout·stderr 를 가려 받는다 — 합치기는 잡음을 데이터로 만든다
- feat(windows): git 을 부를 캡처 러너를 세운다 — CreateProcessW + 익명 파이프 (W8.4 준비)
- fix(agent-hooks): 리베이스 뒤 digest 를 다시 재고 Codex 세트 차이를 적는다
- docs(agent-hooks): Codex trusted_hash 를 «커맨드 해시» 라고 단정하지 않는다
- feat(agent-hooks): claude settings.json 에 훅을 설치한다 (AH2a-2)
- fix(agent-hooks): 설치 판정이 집합 불일치와 필드 드리프트를 잡게 한다 (AH2a-1 검증)
- feat(agent-hooks): 훅 설치 계획 판정을 순수 층으로 만든다 (AH2a-1)
- test(mobile): 반쯤 연 컨트롤 채널이 남지 않는 것을 잰다
- fix(mobile): 순서 실수를 세션 실패로 내리지 않는다
- fix(mobile): 컨트롤 상수 드리프트를 게이트가 잡게 한다
- fix(cli): 중계는 POSIX 에서만 컴파일된다
- fix(cli): 중계를 cli 순수성 재고에 올린다
- feat(control-plane): 폰이 닿을 중계를 낸다 —
maru control --stdio(S10c) - docs(windows): "⒝ 는 배선만 남았다" 던 내 문장을 실측으로 뒤집는다 (W8.2)
- docs(scm):
가져오기가 세 탭에서 눌린다는 진술을 사실로 고친다 - refactor(session): 파일 트리의 그리기와 히트테스트를 한 산술로 모은다 (W8.2 ⒝ 준비)
- docs: 에이전트 훅을 상태·알림·턴의 단일 소스로 두는 계약을 적는다
- fix(mobile): 조합 중인 한글을 편집 칸에 보이게 하고 확정을 잃지 않는다
- perf(windows): 그리기 스모크를 27 초에서 4 초로 줄이고 캡처 하네스를 저장소에 둔다 (W8.2 ⒝ 적대적 검증)
- docs(control-plane): 적대적 검증 15회차 — 남은 주장 전수 대조
- docs(control-plane): 적대적 검증 14회차 — 처음 읽는 사람의 순서
- docs(mobile-ux): 적대적 검증 13회차 — 결정이 남긴 낡은 자리
- docs(control-plane): 적대적 검증 12회차 — 방금 만든 규칙을 다시 공격
- docs(control-plane): 적대적 검증 11회차 — 최악의 경우와 보안 문서 충돌
- docs(control-plane): 적대적 검증 10회차 — 문서가 스스로 모순되는가
- docs(control-plane): 적대적 검증 9회차 — 게이트가 정말 재는가
- docs(control-plane): 적대적 검증 8회차 — 확정한 것과 적힌 것 대조
- docs(control-plane): 적대적 검증 7회차 — 문서가 코드에 대해 하는 주장 대조
- docs(control-plane): 적대적 검증 6회차 — 이 문서만으로 만들 수 있나
- docs(control-plane): 적대적 검증 5회차 — 다른 계약과의 충돌
- docs(control-plane): 적대적 검증 4회차 — 규칙을 뒤집어 본다
- docs(control-plane): 적대적 검증 3회차 — 우리 쪽에서 막히는 자리 넷
- docs(control-plane): 적대적 검증 2회차 — 안 적은 것 다섯을 채운다
- docs(control-plane): 적대적 검증으로 드러난 셋을 계약에 반영한다
- docs(control-plane): 원격 축을 정한다 — SSH 채널 하나 더 (S10a · M3a)
- test(windows): 그리기 스모크가 내용을 판정하고 크기 변경을 따라간다 (W8.2 ⒝ 적대적 검증)
- feat(windows): 파일 트리가 Windows 화면에 뜬다 (W8.2 ⒝)
- test(mobile): 데모 바이트가 들고 있던 판정을 테스트로 옮긴다
- fix(agent-hooks): 회전 감지와 검증 두 곳의 구멍을 메운다 (AH1 적대적 검증)
- feat(agent-hooks): 훅 이벤트를 나르는 채널의 순수 코어를 만든다 (AH1)
- fix(android): 기기에서 도는 ELF 를 16KB 페이지로 정렬한다
- docs: "먼저 재 보고 정한다" 는 독립된 선택지가 아니다
- docs: "좁히면 신호가 약해진다" 는 내 프레이밍이 틀렸다
- docs: count 와 digest 의 값어치를 전수로 쟀다 — 236 중 5 대 207
- docs: 원장 충돌 빈도 주장을 실측으로 좁힌다
- fix(tools): digest 갱신 출력이 새 해시를 잘라 보여 주고 있었다
- test(windows): 기본으로 쓰이는 PowerShell 5.1 을 실제로 띄워 본다 (W7 후속)
- feat(ssh): 처음 붙는 서버의 지문을 보여 주고 승인받는다 (S9b-3)
- feat(mobile): 왜 못 붙었는지 화면이 말한다 (S9b-3b)
- fix(font): 4글자 합자의 왼쪽 오버항을 3칸까지 허용해 첫 글자 잘림을 없앤다
- perf(scm): 탭 개수를 목록 모델 없이 센다 — 매 프레임 378µs 를 12.8µs 로 (적대적 검증 4회차)
- fix(ssh): 열지 않은 채널 테스트의 기대 오류를 실제 이름으로
- test(ssh): 두 채널이 한 조각에 섞여 와도 각자 간다
- test(ssh): 무보호였던 컨트롤 채널 규칙 셋을 막는다
- docs(control-plane): 적대적 검증 — RFC 원문 대조로
hello판정 규칙을 고친다 - fix(ssh): 닫은 컨트롤 채널은 버퍼를 더 요구하지 않는다
- docs(ssh): 컨트롤 채널의 두 상한을 계약에 적는다 — 이름으로
- fix(ssh): 컨트롤 버퍼도 화면과 같은 배압 규칙을 따른다
- docs(ssh): 검증 행렬에 컨트롤 채널 두 회차를 적는다
- test(ssh): 컨트롤 채널을 실서버 두 회차로 못박는다 (S10b-1)
- feat(ssh): 같은 연결에 컨트롤 채널을 하나 더 연다 (S10b-1)
- fix(chrome): 탭바 ✕·‹·› 를 3칸 버튼의 가운데로 옮겨 좌우 패딩을 맞춘다
- feat(windows): 캡처 러너가 환경을 상속한 뒤 덮어쓴다 — 없으면 git 이 자격 증명을 물으며 멈춘다
- fix(windows): 캡처 러너를 maru 배럴로 가져온다 — 상대 경로가 macOS 빌드를 깼다
- fix(windows): 캡처 러너 import 를 Windows 전용 함수 안으로 옮긴다 — macOS 빌드가 깨졌다
- fix(windows): macOS CI 를 깬 git_backend 테스트 등록을 되돌린다
- feat(windows): git 백엔드가 Windows 에서 돈다 (W8.4)
- feat(chrome): 탭 바 상태를 강제하는 캡처 훅을 넣는다(탭 수·버튼 호버)
- fix(input): 누른 적 없는 버튼의 뗌을 앱에 보내지 않는다 — 링크 Cmd+클릭이 브라우저를 두 번 열었다
- fix(windows): 캡처 러너가 자식 stdin 을
NUL로 준다 —null핸들은 EOF 가 아니다 - feat(windows): git 쓰기 경로(스테이지·언스테이지·커밋)가 Windows 에서 돈다 (W8.4)
- feat(session-host): publish shared reconnect client once
- docs: 매트릭스의 테스트 개수를 실제와 맞춘다
- docs: §4 하위 절이 역순으로 들어가 있던 것을 바로잡는다
- fix(agent-hooks): @compileError 메시지를 영어로 옮긴다
- test(agent-hooks): 테스트 진단 메시지를 영어로 옮긴다
- fix(agent-hooks): provider 이름이 줄을 깨뜨릴 수 있으면 거절한다
- docs: 검증 매트릭스를 AH1 구현 결과로 갱신한다
- fix(agent-hooks): 빈 out 으로 부르면 무한 루프가 되던 자리를 막는다
- feat(agent-hooks): 훅 타임아웃 값을 코드가 소유한다
- test(agent-hooks): 형 변화 방어가 실제로 도는지 본다
- test(agent-hooks): 세트-파서 드리프트를 막고 게이트가 개수를 세게 한다
- fix(agent-hooks): 커서 API 가 오용을 부르던 자리를 고친다
- fix(agent-hooks): 커맨드와 파서의 계약 두 곳을 묶는다
- fix(agent-hooks): 패치 본문의 가짜 표식을 경로로 읽지 않는다
- fix(agent-hooks): Codex 는 편집 경로를 패치 텍스트로 준다 (실측 반영)
- fix(agent-hooks): pane 식별자 검증과 인터리브 복구를 더한다 (AH1 재검증)