2026-05-17

날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.

요약 (AI 작성)

zntc는 Module Federation(MF) 지원을 하루 만에 크게 진척시켰습니다. 웹 스파이크 설계와 S0부터 S5까지의 검증 결과, MF2 계약 실측을 문서로 남긴 뒤(#3374, #3379, #3380) P1 작업으로 MF config 표면과 검증(#3390), 연합 경계 모듈 식별과 안정 ID(#3394), shared 의존의 글로벌 seam 자동 파생(#3396), webpack 방식 container(remoteEntry) emit(#3401), shareScopeMap 런타임(#3406), mf-manifest.json 에미터(#3410), @module-federation/runtime을 재사용하는 host 통합(#3413)을 병합했습니다. Playwright 실브라우저 interop CI와 zntc host에서 rspack·enhanced remote를 불러오는 역방향 e2e(#3416, #3418)로 호환성을 확인했고, P2로 manifest의 shared·remotes 정밀화, SHA-256 무결성 sidecar와 Ed25519 서명(#3431, #3432), metafile 표식을 더했습니다. P3에서는 빌드 시점에 remote 계약·expose 부재·shared singleton 버전·sidecar 변조를 검사해 즉시 실패시키는 검증(#3442, #3443, #3444, #3450), 경계 모듈 소유권 린트, 런타임 가드 폴백(#3454)이 들어갔고, 밤에는 정적 import "remote/x"를 위한 seam과 async preload-gate(#3462, #3463)가 이어졌습니다.

minify 크기 격차 작업도 여러 갈래로 진행됐습니다. namespace member-access를 직접 심볼로 재작성하는 작업(#3409), bundle-context에서 export const 선언을 병합하는 작업(#3417), CJS wrapper의 exports·module 이름을 mangle하는 작업(#3458)은 각각 에픽 브랜치에서 하위 PR을 병합한 뒤 main에 반영됐고, CJS wrapper mangle에는 이후 eval·with 가드가 추가됐습니다(#3461). minify_syntax에서 유효한 식별자 객체 키의 따옴표를 빼는 변경(#3446)도 병합됐습니다. 반면 esbuild renamer를 옮기는 nested-scope renamer는 RFC(#3391) 뒤 slot 인프라와 이름 발급 PR이 에픽 브랜치에만 병합됐고, 시도한 접근들의 측정 결과를 묶은 mangler size-gap RFC(#3460)가 이 방향을 종결로 정리했습니다. RN 쪽은 HMR 뒤 sourcemap 유지(#3372), 릴리스 번들 평가 안정화(#3404), lazy barrel·CJS namespace require·re-export·svg 에셋·babel 플러그인 실행 위치 등을 묶은 require 런타임 누락 경로 보정(#3449)을 병합했고, 같은 내용을 나눠 올린 PR 세 개는 닫았습니다. 벤치마크 문서에는 번들 크기 비교가 추가됐습니다(#3429).

suji는 BrowserWindow 객체지향 래퍼를 JS·Node·Rust·Go SDK에 넣어 Phase 6을 마쳤고, CDP 기반 set_user_agent·get_user_agent와 capture_page를 코어와 4개 SDK에 추가해 실제 CEF e2e로 확인했습니다. window.__suji__를 동결하는 contextIsolation(Phase 7)과 Linux PDF 인쇄 핸들러가 들어갔고, 오후부터는 모바일 임베드 경로에 http.fetch를 배선한 뒤 Tauri와 같은 구조의 __core__ 네이티브 와이어로 clipboard, shell, notification, dialog, safe_storage, 앱 메타, fs를 Slice 1부터 11까지 차례로 붙이고 iOS 시뮬레이터·Android 에뮬레이터 e2e와 인터랙티브 데모를 추가했습니다. 의존성 없는 npx @suji/cli init 스캐폴더, Menu.popup 컨텍스트 메뉴, macOS App Sandbox 빌드 옵션(suji build --sandbox)과 security-scoped bookmark도 이날 커밋입니다. Linux·Windows safeStorage 패리티 커밋은 곧바로 되돌렸습니다.

zerolist는 JS-0 정량 계측과 셀 mount/unmount churn 지표를 추가하고, ringIndex 교차 계약 테스트로 순수 ring 단축 가설을 반증했으며, 네이티브가 권위를 갖는 binding 리사이클러를 구현했습니다. agent-devtools에는 미뤄 둔 소형 패리티 6건과 auth 동시성 버그 수정을 담은 PR #9를 열었으나 아직 병합되지 않았습니다. 블로그 저장소 ohah.github.io의 커밋 13개는 크론의 맞춤법 점검 표시 커밋 12개와 요약 갱신 커밋 1개입니다.

공개 커밋 128개, 해당일 생성 또는 병합된 PR 65개를 정리했습니다. PR 생성 65개·병합 61개는 같은 PR이 양쪽에 포함될 수 있습니다.

커밋

ohah/ohah.github.io

ohah/suji

ohah/zerolist

ohah/zntc

PR (해당일 생성/머지)

상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.

저장소PR해당일 활동상태대상 브랜치제목
ohah/agent-devtools#9생성openmainfeat: 미룬 소형 패리티 6건 보강 + auth 동시성 버그 수정
ohah/zntc#3463생성 · 병합mergedmainfeat(mf): 정적 import "remote/x" async preload-gate — PR-2 (#3459)
ohah/zntc#3462생성 · 병합mergedmainfeat(mf): 정적 import "remote/x" seam 인프라 — PR-1 (#3459)
ohah/zntc#3461생성 · 병합mergedmainfix(emitter): CJS wrapper mangle 에 eval/with 가드 (정확성 hardening)
ohah/zntc#3460생성 · 병합mergedmaindocs(rfc): mangler size-gap 측정 종결 통합 RFC (CLOSED)
ohah/zntc#3458생성 · 병합mergedmainperf(minify): CJS wrapper exports/module mangle — corpus −25KB (epic, RFC PR-1~4)
ohah/zntc#3457생성 · 병합merged기능 브랜치: epic/cjs-wrap-manglefeat(emitter): CJS wrapper mangle 기본 ON + RN 가드 (RFC PR-4)
ohah/zntc#3456생성 · 병합mergedmaintest(mf): P3 회귀-방어 커버리지 보강 — 가드 noop·비-네트워크 reject·loadContract (#3318)
ohah/zntc#3455생성 · 병합merged기능 브랜치: epic/cjs-wrap-manglefeat(emitter): CJS wrapper exports/module mangle 활성화 + kill-switch (RFC PR-3)
ohah/zntc#3454생성 · 병합mergedmainfeat(mf): 런타임 가드 폴백 emit + 빌드핀·가드 e2e 박제 (#3440)
ohah/zntc#3453생성 · 병합merged기능 브랜치: epic/cjs-wrap-manglefeat(codegen): CJS wrapper free exports/module 참조 치환 가드 (RFC PR-2)
ohah/zntc#3452생성 · 병합mergedmainfeat(mf): 소유권 경계 린트 — 경계 모듈 store 자체생성 비-차단 경고 (#3439)
ohah/zntc#3451생성 · 병합merged기능 브랜치: epic/cjs-wrap-manglefeat(codegen): CJS wrapper exports/module 이름 옵션 인프라 (RFC PR-1)
ohah/zntc#3450생성 · 병합mergedmainfeat(mf): 빌드타임 무결성 검증 — sidecar stale/변조 fail-fast (#3438)
ohah/zntc#3449생성 · 병합mergedmainfix(rn): require 런타임 누락 경로 보정
ohah/zntc#3448생성closedmainfix(rn): require namespace의 re-export source 보존
ohah/zntc#3447생성closedmainfix(rn): CJS namespace require의 lazy getter target 보존
ohah/zntc#3446생성 · 병합mergedmainfeat(minify): minify_syntax 시 valid-identifier 객체 키 quote 제거
ohah/zntc#3445생성closedmainfix(rn): lazy barrel deferred import skip 처리
ohah/zntc#3444생성 · 병합mergedmainfeat(mf): 빌드타임 shared 버전 호환 검증 — singleton fail-fast (#3437)
ohah/zntc#3443생성 · 병합mergedmainfeat(mf): 빌드타임 expose 계약 검증 — 부재 expose import fail-fast (#3436)
ohah/zntc#3442생성 · 병합mergedmainfeat(mf): 빌드타임 계약 검증 토대 — RemoteContract parse+resolve (#3435)
ohah/zntc#3441생성 · 병합mergedmaindocs(mf): P3 PR 분해 — RFC §7.3 + 트래커 이슈 (#3318)
ohah/zntc#3434생성 · 병합mergedmaintest(mf): enhanced interop 확대 — 다중 expose + shared singleton 실브라우저 (#3425)
ohah/zntc#3433생성 · 병합mergedmainfeat(mf): metafile MF 산출 표식 — additive zntcMf 키 (#3424)
ohah/zntc#3432생성 · 병합mergedmainfeat(mf): Ed25519 무결성 sidecar 서명 에미터 + verify (#3423)
ohah/zntc#3431생성 · 병합mergedmainfeat(mf): SHA-256 무결성 다이제스트 sidecar (#3422)
ohah/zntc#3430생성 · 병합mergedmainfeat(mf): manifest.remotes 정밀 — mf.remotes → ManifestRemote (#3421)
ohah/zntc#3429생성 · 병합mergedmaindocs(site): 벤치마크에 번들 크기(tree-shake+minify) 비교 추가
ohah/zntc#3428생성 · 병합mergedmainfix(test): linkNodeModules 가 transitive dep 를 실제로 링크 (CI ubuntu unresolved 수정)
ohah/zntc#3427생성 · 병합mergedmainfeat(mf): manifest.shared 정밀 — SharedEntry → ManifestShared (#3420)
ohah/zntc#3426생성 · 병합mergedmaindocs(mf): P2 PR 분해 — RFC §7.2 + 트래커 이슈 (#3318)
ohah/zntc#3419생성 · 병합mergedmaintest(mf): interop 커버리지 갭 보강 — 다중-remote/negative/멱등/manifest 한계 (#3318)
ohah/zntc#3418생성 · 병합mergedmaintest(mf): S4 역방향 interop e2e — zntc host → 표준 rspack/enhanced remote (#3415)
ohah/zntc#3417생성 · 병합mergedmainperf(minify): bundle-context export const 선언 병합 — corpus-wide (RFC #3411 epic)
ohah/zntc#3416생성 · 병합mergedmaintest(mf): Playwright S3 실브라우저 interop CI — manifest-driven 갭 영구 박제 (#3389)
ohah/zntc#3414생성 · 병합merged기능 브랜치: epic/decl-coalescing-3410perf(minify): bundle-context export const 선언 병합 (RFC #3411 PR-1)
ohah/zntc#3413생성 · 병합mergedmainfeat(mf): host 통합 — @module-federation/runtime 재사용 (config→init 배선) (#3388)
ohah/zntc#3411생성 · 병합mergedmaindocs(rfc): bundle-context export const 선언 병합 사각 (decl coalescing)
ohah/zntc#3410생성 · 병합mergedmainfeat(mf): mf-manifest.json 에미터 — webpack/rspack MF 호환 스키마 (#3387)
ohah/zntc#3409생성 · 병합mergedmainperf(linker): namespace member-access 직접심볼 재작성 — effect −20.5% (RFC #3399 epic)
ohah/zntc#3408생성 · 병합merged기능 브랜치: epic/shared-ns-dead-emit-3399refactor(env): env-presence flag 제너릭 통합 + RFC 결과 기록 (RFC #3399 PR-3)
ohah/zntc#3407생성 · 병합merged기능 브랜치: epic/shared-ns-dead-emit-3399feat(linker): namespace member-access → 직접심볼 재작성 (RFC #3399 PR-2)
ohah/zntc#3406생성 · 병합mergedmainfeat(mf): shareScopeMap 런타임 + shared→async — container.init 가 host shared 해석 (#3386)
ohah/zntc#3405생성 · 병합mergedmainfix(mf): WASI realpath @compileError — wasm-bundler 빌드 복구 (#3318)
ohah/zntc#3404생성 · 병합mergedmainfix(rn): 릴리즈 번들 평가 안정화
ohah/zntc#3401생성 · 병합mergedmainfeat(mf): webpack-style container emit (remoteEntry) — init/get + 실 MF2 runtime interop (#3385)
ohah/zntc#3400생성 · 병합mergedmaindocs(rfc): shared-ns dead-emit 루트커즈 계측 정정 (§2/§3/§6 반증)
ohah/zntc#3398생성 · 병합mergedmaindocs(rfc): shared-namespace dead-emit gate (esbuild StarNameLoc=nil 1:1)
ohah/zntc#3396생성 · 병합mergedmainfeat(mf): shared 글로벌 seam 자동 파생 — boundary shared 의존을 글로벌-파라미터로 (#3384)
ohah/zntc#3395생성 · 병합merged기능 브랜치: epic/nested-scope-renamer-3392feat(mangler): nested-scope renamer 이름 발급 — esbuild MinifyRenamer 이식 (RFC #3391 PR-2)
ohah/zntc#3394생성 · 병합mergedmainfeat(mf): P1-1 연합 경계 모듈 식별·표시 + 안정 ID (#3383)
ohah/zntc#3393생성 · 병합merged기능 브랜치: epic/nested-scope-renamer-3392feat(mangler): nested-scope slot 인프라 — esbuild AssignNestedScopeSlots 이식 (RFC #3391 PR-1)
ohah/zntc#3391생성 · 병합mergedmaindocs(rfc): nested-scope renamer port (esbuild renamer.go 1:1) — minify 격차 유일 레버
ohah/zntc#3390생성 · 병합mergedmainfeat(mf): P1-0 Module Federation config 표면 + 검증 (#3382)
ohah/zntc#3381생성 · 병합mergedmaindocs(mf): P1 PR 분해 박제 — 스파이크 제약→인프라우선 (#3318)
ohah/zntc#3380생성 · 병합mergedmaindocs(mf): 스파이크 S3 PASS + S4 계약 포착 — 종결 판정 (#3318)
ohah/zntc#3379생성 · 병합mergedmaindocs(mf): 웹 스파이크 S0/S1/S2/S5 PASS 결과 + P1 제약 박제 (#3318)
ohah/zntc#3378생성 · 병합mergedmaindocs(mf): MF2 계약 실측 반영 — docs.module-federation.io 정독 (#3318)
ohah/zntc#3377생성 · 병합mergedmaintest(e2e): 코드스플리팅 런타임 실브라우저 e2e — JS 동적청크+CSP nonce (#3318 §8.1 S0)
ohah/zntc#3376생성 · 병합mergedmaindocs(mf): §8.1 에 청크 실브라우저 e2e(S0) 통합 (#3318)
ohah/zntc#3375생성 · 병합mergedmainrefactor(stmt-info): extract memberAssignTargetParts 공통 코어 (#3359 중복 제거)
ohah/zntc#3374생성 · 병합mergedmaindocs(mf): 웹 스파이크 설계 추가 — P1 게이트 (#3318)
ohah/zntc#3373생성 · 병합mergedmainfix(linker): wrapper-barrel default 술어를 default_export_named_local 로 교정 (#3370 후속)
ohah/zntc#3372생성 · 병합mergedmainfix(rn): HMR 이후 sourcemap 유지