2026-07-12

요약 (AI 작성)

에이전트 제어 프로토콜(5f)을 doc-first 로 설계하고 그대로 구현까지 내린 날입니다. §9.4 프로토콜 리뷰와 §9.5 구현 설계를 쓰고, 감사에서 나온 A1~A5 와 3차 전수조사의 모순·gap·stale 을 정정한 뒤 D3/D4/D5 를 사용자 결정으로 확정했습니다. 구현은 5f-0a EventBroker(구독·매칭·직렬화 L2 순수 코어)에서 출발해, 5f-0b-1 OutboundQueue(응답+이벤트 통합 큐·coalesce·purge)로 출구를 하나로 모으고, 서버 동시성을 직렬 accept 에서 5f-0b-2a 연결당 스레드로 바꿔 head-of-line 블로킹을 없앴습니다. 이어 2b-1 지속 세션(auth 1회 + 순차 요청 루프), 2b-2-α OutboundChannel(스레드-안전 per-connection outbound), 2b-2-β 연결당 reader+writer 2-스레드로 응답을 outbound 경유로 정리했습니다.

이벤트 경로는 5f-0b-3a SubscriberRegistry(메인 전용 라우팅)와 3a-2 연결 수명 배선(leaf-mutex pivot), 3b browser.subscribe dispatch 배선, 3c WKWebView url KVO → browser.navigated 주입으로 실제로 흐르게 했고, 5f-3 에서 loadState/dialog/crashed/closed 로 이벤트를 넓히면서 서버 SIGPIPE 방어를 함께 넣었습니다. 권한 쪽은 5f-4a-1·4a-2 로 dispatchAuthenticated 가 cap 집합을 수용하고 auth.grant 로 세션 cap 을 누적하도록 완성한 뒤, 4b browser_storage ScopeClass(D5 쿠키 분리 게이트)와 4c browser.getCookies(WKHTTPCookieStore)로 게이트를 실동작시켰습니다. PR 로는 Model B pane-bound confirm-grant(1e-confirm-0/1a/1b)가 이어졌고, 18~22차 /code-review max 결함을 매 단계 흡수했습니다. 관측성에서는 read_error 를 trace 에 read-error kind 로 남겨 종료 트리거를 판독하는 워크플로를 정리했고, 테마는 다크 배경의 어두운 전경이 안 보이던 갭을 min-contrast 양방향 보정으로 메우되 기본 설정이 회귀하지 않도록 밝히는 방향을 좁혔습니다.

zntc 쪽도 같은 날 여러 건이 나갔습니다. #4467 Vite query-suffix import(?raw/?url/?inline/?worker)를 문서와 함께 넣고 리뷰 지적 4건을 반영했으며, #4466 은 CSS url() 로 참조된 자산을 실제로 방출하고 url 을 재작성하도록 고쳤습니다. #4468 class static block 과 --jsx=preserve 를 소스 원문 복사가 아닌 AST 출력으로 바꾸고, #4472 minify 의 comma-sequence 접기에서 statement-start 괄호가 사라져 런타임 SyntaxError 가 나던 버그를 잡았습니다. 그 밖에 동명 basename 자산의 require 래퍼 이름 충돌, e2e browser-smoke 패키지 버전 고정, ZNTC0415 에러 문서 생성과 v0.1.3 릴리스가 있었습니다.

커밋

ohah/maru

ohah/zntc

PR (해당일 생성/머지)

repo#상태제목
ohah/maru#1355mergedfeat(control): 1e-confirm-1b — browser authz에 pane confirm-grant 합성 (세션 cap OR grant)
ohah/maru#1354mergedfeat(control): 1e-confirm-1a — PaneGrantStore L2 순수 코어 (Model B grant 저장소)
ohah/maru#1353mergeddocs(control): 1e-confirm-0 — §9.2 개정 Model B pane-bound confirm-grant (doc-first)
ohah/maru#1352mergedfix: 22차 /code-review max 결함 수정 (cap 누적 → cookies 보안)
ohah/maru#1351mergedfeat(control): 5f-4c — browser.getCookies (WKHTTPCookieStore, D5 게이트 실동작)
ohah/zntc#4480mergedchore(release): 버전 lockstep 자동화 + publish 후 bun.lock 자동 동기화
ohah/maru#1350mergedfeat(control): 5f-4b — browser_storage ScopeClass (D5 쿠키 분리 게이트)
ohah/maru#1349mergedfeat(control): 5f-4a-2 — auth.grant로 세션 cap 누적 (cap 누적 완성)
ohah/maru#1348mergedfeat(control): 5f-4a-1 — dispatchAuthenticated가 cap 집합 수용 (누적 토대)
ohah/maru#1347mergedfix(agent): ESC 인터럽트를 감지 — 스피너가 "진행 중"에 영구 고착되던 버그
ohah/maru#1346mergedfix: 21차 /code-review max 결함 수정 (closed 종료 마커 correctness)
ohah/zntc#4479mergedchore(release): v0.1.3
ohah/zntc#4478mergedfeat(resolve): Vite query-suffix import (?raw / ?url / ?inline / ?worker)
ohah/maru#1345mergedfeat(control): 5f-3 — 이벤트 확장 (loadState/dialog/crashed/closed) + 서버 SIGPIPE 방어
ohah/maru#1344mergedfix(app): 드래그앤드롭이 떨어뜨린 pane으로 들어가게 (활성 pane 고정 회귀)
ohah/maru#1343mergedfix(theme): min-contrast 양방향 보정 — 다크 배경의 어두운 전경이 안 보이던 갭
ohah/zntc#4477mergedfix(codegen): --jsx=preserve 를 소스 원문 복사가 아니라 AST 로 출력
ohah/zntc#4476mergedfix(linker): 동명 basename 자산의 require 래퍼 이름 충돌 → 다른 자산의 URL 반환
ohah/maru#1342mergedfeat(control): 5f-0b-3c — WKWebView url KVO → browser.navigated 이벤트 주입
ohah/zntc#4474mergedfix(codegen): minify comma-sequence 접기 시 statement-start 괄호 소실 (런타임 SyntaxError)
ohah/zntc#4473mergedfix(codegen): class static block 을 소스 원문 복사가 아니라 AST 로 출력
ohah/maru#1341mergedfix: 20차 /code-review max 결함 수정 (이벤트 구독 인프라)
ohah/maru#1340opendocs(editor-surface): 코드 에디터·git diff 뷰어·포맷/린트·LSP surface 설계 (Phase 0)
ohah/zntc#4471mergedfix(test): e2e browser-smoke 패키지 버전 고정 (상위 메이저 릴리스가 CI 를 깨뜨림)
ohah/maru#1339mergedfeat(control): 5f-0b-3b — browser.subscribe dispatch 배선 (동기 registry 등록)
ohah/maru#1338mergedfeat(control): 5f-0b-3a-2 — SubscriberRegistry 연결 수명 배선 (leaf-mutex pivot)
ohah/maru#1337mergedfeat(control): 5f-0b-3a — SubscriberRegistry (메인 전용 이벤트 라우팅, 순수 로직)
ohah/maru#1336mergedfix: 19차 /code-review max 결함 수정 (2b-2 동시성 재아키텍처)
ohah/zntc#4469mergedfix(css): CSS url() 로 참조된 자산 방출 + url 재작성
ohah/maru#1335mergedfeat(control): 5f-0b-2b-2-β — 연결당 reader+writer 2-스레드 (응답을 outbound 경유)
ohah/maru#1334mergedfeat(control): 5f-0b-2b-2-α — OutboundChannel (스레드-안전 per-connection outbound)
ohah/maru#1333mergedfix: 18차 /code-review max 결함 수정 (지속 세션 null-close 버그 외)
ohah/maru#1332mergedfeat(control): 5f-0b-2b-1 — 지속 세션 (auth 1회 + 순차 요청 루프)
ohah/maru#1331mergedfeat(control): 5f-0b-2a — 연결당 스레드 (직렬 accept 폐기·head-of-line 제거)
ohah/maru#1330mergedfeat(control): 5f-0b-1 — OutboundQueue 순수 구조 (응답+이벤트 통합·coalesce·purge)
ohah/maru#1329mergedfeat(control): 5f-0a — EventBroker L2 순수 코어 (browser 이벤트 구독·매칭·직렬화)
ohah/maru#1328mergeddocs(control-plane): §9.4/§9.5 3차 전수조사 정정 (모순·gap·stale)
ohah/maru#1327mergeddocs(control-plane): §9.5 5f-0 구현 설계 (§9.4 감사 후속 A1~A5)
ohah/maru#1326mergeddocs(control-plane): §9.4 에이전트 제어 프로토콜 리뷰 (5f 선행, doc-first)