From 0c1a71b58d7ed077cef5cf3bb8fd7b80d852a5df Mon Sep 17 00:00:00 2001 From: dancinlife Date: Fri, 26 Jun 2026 20:50:01 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20session-close=20cleanup=20=E2=80=94=20c?= =?UTF-8?q?ollapse=20E5=20round=20history=20+=20retire=20manjeom=3D0/Black?= =?UTF-8?q?smith=20drift?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ARCHITECTURE.json blocking-frontiers: 라운드별 측정 노드 6개(r5/r7-r9/r10/r11/r12/ 게이트재분류)를 현재상태 3노드(사다리 헤드라인 + 증명된 E5 파이프라인 + open 상업게임 프론티어)로 collapse — changelog식 누적은 single-doc 위반(이력은 CHANGELOG+git+memory). 옛 'Blacksmith CI 게이트'·'validated_manjeom 여전히 0' 서술 제거. CLAUDE.md: header validated_manjeom=0 → pipeline proven(인프라)·Structure tree Blacksmith → github-hosted. Co-Authored-By: Claude Opus 4.8 (1M context) --- ARCHITECTURE.json | 28 ++++++---------------------- CLAUDE.md | 11 ++++++----- 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/ARCHITECTURE.json b/ARCHITECTURE.json index ebb9591..8597b27 100644 --- a/ARCHITECTURE.json +++ b/ARCHITECTURE.json @@ -23,36 +23,20 @@ "summary": "Skeleton-tier loaders/perf compile + probe; the PE→D3D11→Metal pipeline is proven end-to-end with a self-authored own1 D3D11 PE (r12, pixel-readback verified) = validated_manjeom first_own1_authored_d3d11_pe_to_metal_frame (infrastructure milestone). NO commercial game frame evidenced yet (real game = full Win32/D3D11 surface + real assets + real PE)." }, { - "name": "🚧 blocking-frontiers — validated_manjeom>0 경로 (fleet-lab SSOT)", - "summary": "validated_manjeom=0(실 게임 프레임 미증명) 돌파의 명명된 사다리 = native E-series (docs/CLOSURE_ROADMAP.md §5). fleet-lab F-NSWINDOW-E5 가 추적. 각 라운드 measured 결과를 여기 update-in-place 박제 → 차세션 research 가 흩어진 메모리 대신 한 곳에서 표적을 본다.", + "name": "🚧 frontiers — E5 인프라 ✅ proven / 상업 게임 ⬜ open", + "summary": "validated_manjeom 사다리(docs/CLOSURE_ROADMAP.md §5)의 현재상태 SSOT. E5 인프라 파이프라인(PE→i386 인터프리터→IAT autobind→D3D11→Metal→readback)은 r10–r12로 증명 완료(자작 own1 PE 기준). 상업 게임 프레임은 미증명(open). 라운드별 측정 이력은 CHANGELOG+git+memory(project_gamebox_e3_frontier).", "children": [ { "name": "F-NSWINDOW-E5 — E1✅ E2✅ E3✅ E4✅(IAT name-autobind) E5✅(r12: PE→D3D11→Metal 인프라 마일스톤)", "summary": "validated_manjeom 사다리(docs/CLOSURE_ROADMAP.md §5). E1 PE-parse+mmap done·E2 i386 디코더 done·E3 i386 인터프리터 done(실 game-binary EXECUTE)·E4 kernel32 IAT name-autobind done(합성 prologue CRT→user-entry handoff·insns=60·K32 13·IAT name-autobind)·E5 r10-r12 완료: r10 헤드리스 Metal 오프스크린 렌더+readback PASS·r11 D3D11→Metal 브리지 네이티브 PASS·r12 PE→D3D11→Metal end-to-end PASS(insns=11 imports=7 px_clear=0x0000FFFF px_triangle=0xFF0000FF nonuniform=1). validated_manjeom=first_own1_authored_d3d11_pe_to_metal_frame(인프라 마일스톤·상업 게임 아님). 다음: 상업 게임 방향 — Win32 API 서피스 확장·opcode 커버리지·vtable [reg+offset] 간접 call·실 게임 PE IAT 추적." }, { - "name": "E4 r5 measured (2026-06-26·#19/24/25/26 merged) — 18명령 실행·kernel32 5 import 바인딩", - "summary": "native/i386_cpu.c 인터프리터가 실 __scrt_common_main prologue 18명령 실행. import-stub registry 5엔트리 바인딩(GetCurrentThreadId·GetCurrentProcessId·GetTickCount·GetSystemTimeAsFileTime[버퍼쓰기 shim·LPFILETIME 8B mem_write]·QueryPerformanceCounter). 디코더 group-1 imm+mov r/m imm+byte mov+test+and/or+shift(0xC1/D1/D3) 커버(C+i386_decode.hexa RUNEQ byte-eq). EFLAGS(CF/PF/AF/ZF/SF/OF) 모델. 측정: insns 1(r2)→9(r3)→11(r4)→**18(r5)**·halt@0x5392A1=unbound IAT slot 0x538014. Blacksmith CI 게이트(i386_cpu_test PASS·ci.yml native step). own1: 로더가 자기 import 바인딩=로딩(바이패스 아님)·kernel32=OS API·Wine/QEMU 0. ⚠️ validated_manjeom 여전히 0(로더 진척·프레임 아님·E5가 프레임)." + "name": "E5 인프라 파이프라인 (proven · CI 검증) — PE→interp→autobind→D3D11→Metal→readback", + "summary": "레이어: ① 자작 own1 i386 PE(d3d11.dll import·native/fixtures) → ② native/i386_cpu.c i386 인터프리터(decode→execute·EFLAGS·byte-eq 트윈 native/i386_decode.hexa RUNEQ) → ③ IAT name-based autobind(native/pe_parse.c import_dir + IMAGE_IMPORT_BY_NAME strcmp → shim 레지스트리·미매칭 I386_HALT_UNBOUND_IMPORT) → ④ native/d3d11_metal_bridge.m(D3D11-COM-형상 vtable → MTLDevice·오프스크린 64×64 BGRA8·인라인 MSL PSO) → ⑤ Apple Metal 헤드리스 렌더 → ⑥ [MTLTexture getBytes:] readback. 측정(native/e5_end_to_end_test.c): __E5__ PASS pe_executed=1 frame_rendered=1 px_clear=0x0000FFFF px_triangle=0xFF0000FF nonuniform=1 insns=11 imports=7. validated_manjeom=first_own1_authored_d3d11_pe_to_metal_frame(인프라 마일스톤·상업 게임 아님). own1: Wine/DXVK/d3d11.dll 0·DRM 0·게임애셋 0. CI=github-hosted macos-15(PUBLIC repo 무료)." }, { - "name": "E4 r7–r9 measured (2026-06-26·#29/#30/#31 merged) — 60명령·user-entry handoff·IAT name-autobind·CMPXCHG ✅", - "summary": "native/i386_cpu.c 인터프리터가 합성 __scrt_common_main prologue를 r7 벽(unbound IAT @0x539318, insns=44) 너머로 전진 → CRT init 종점 = `call WinMain` CRT→user-entry handoff(i386_cpu_t.user_entry_va + I386_HALT_USER_ENTRY). 디코더: 0F AF/69/6B IMUL·0F A2 CPUID·0F 31 RDTSC(r7) + 0F A3/AB/B3/BB BT/BTS/BTR/BTC(r8) — C + i386_decode.hexa RUNEQ byte-eq. import: security cookie 산술 + GetCommandLineW(0x53802C)·SetUnhandledExceptionFilter(0x538030) 바인딩, K32 11→13. 측정: insns 44(r7)→60(r8)·halt@0x539400=user_entry(call). Blacksmith CI 게이트(i386_cpu_test 25 checks PASS·-Wall -Wextra -std=c11). real-PE 경로 i386_cpu_load_pe 구조적 배선완료(섹션+entry 매핑)·미실행(IAT name-autobind 필요). ⚠️ validated_manjeom 여전히 0(합성 user-entry·실 프레임 아님). **r9(#31)**: IAT **name-based autobind** 구현 — 실 PE의 IAT를 합성 VA가 아니라 import 이름으로 native shim에 바인딩(pe_parse import_dir + IMAGE_IMPORT_BY_NAME walk + strcmp), 미매칭→I386_HALT_UNBOUND_IMPORT+이름기록. CMPXCHG 0F B0/B1 디코더+executor(RUNEQ). Run E: autobind total=3 bound=3 unbound=0·mini-run GetCurrentThreadId 슬롯통과(eax=0x1A2B). **실 PE가 첫 import 너머 실행 가능 = real-PE 경로 배선 진전**. 다음 r10 표적 = DX→Metal 브리지(헤드리스 Metal 오프스크린 readback smoke 먼저 CI 검증)." - }, - { - "name": "E5 r10 measured (2026-06-26·#32) — 헤드리스 Metal 오프스크린 렌더+readback 로컬 PASS (서브스트레이트 증명)", - "summary": "native/metal_offscreen_smoke.m (ObjC+Metal+Foundation): 64×64 MTLPixelFormatBGRA8Unorm 오프스크린 텍스처·인라인 MSL(newLibraryWithSource:)·blue 클리어+red 삼각형 1 드로우·waitUntilCompleted·getBytes readback·픽셀 어서션 (px_clear=0x0000FFFF·px_triangle=0xFF0000FF·nonuniform=1). 로컬 M4 결과: __METAL_SMOKE__ PASS device=Apple M4. CI(blacksmith-6vcpu-macos-15·실 Apple-Silicon·GPU) 결과: 확인 예정(warn-only step). own1: 순수 Apple Metal·Wine 0·게임 애셋 0. 서브스트레이트 증명 — 게임 프레임 아님·validated_manjeom=0. break-walls+verify-done: \"디스플레이 불필요·Metal 헤드리스 렌더 가능\" 어서션을 실행·CI-게이트 사실로 전환. r11 표적: D3D11 device/swapchain 셰임 → Metal 오프스크린 경로 배선." - }, - { - "name": "E5 r11 measured (2026-06-26) — D3D11→Metal 브리지 네이티브 증명 (구현됨·미배선)", - "summary": "native/d3d11_metal_bridge.{h,m} (C헤더+ObjC+Metal+Foundation): D3D11-인터페이스-형상 COM 오브젝트(ID3D11Device·ID3D11DeviceContext·IDXGISwapChain·ID3D11RenderTargetView·ID3D11Texture2D) + 컴팩트 vtable(구현 메서드만; IUnknown 스텁 [0-2] 포함). gamebox_D3D11CreateDeviceAndSwapChain → MTLDevice+오프스크린 64×64 BGRA8 backBuffer+인라인 MSL PSO. ClearRenderTargetView=loadAction:Clear 독립 패스; Draw=loadAction:Load+삼각형; Present=no-op(헤드리스). gamebox_d3d11_readback=[MTLTexture getBytes:]. native/d3d11_metal_bridge_test.c(순수 C): vtable 포인터 경로로 CreateDeviceAndSwapChain→GetBuffer→CreateRenderTargetView→OMSetRenderTargets→ClearRenderTargetView(blue)→Draw(3,0)→Present→readback→픽셀 어서션. 로컬 M4 결과(빌드 clean·-Wall -Wextra 경고 없음): __D3D11_BRIDGE__ PASS px_clear=0x0000FFFF px_triangle=0xFF0000FF nonuniform=1. CI warn-only 스텝 추가(r10 패턴). own1: Wine 0·DXVK 0·d3d11.dll 소스 0·DRM 0. 구현됨·미배선 dead-until-wired — 인터프리터를 통한 PE 구동은 r12. validated_manjeom=0(네이티브 테스트·게임 프레임 아님). 다음 r12: 최소 D3D11 테스트 PE(own1 자작 i386 PE) + 인터프리터 IAT autobind 배선 → 이 브리지 shim → Metal 오프스크린 → readback = validated_manjeom>0 게이트." - }, - { - "name": "E5 r12 measured (2026-06-26) — 첫 own1 D3D11 PE → Metal 프레임 (인프라 마일스톤) ✅", - "summary": "native/e5_end_to_end_test.c: 자작 i386 PE32(9명령·49바이트·d3d11.dll 7 import) → i386 인터프리터 IAT autobind(by name·own 임포트 로딩) → 브리지 shim layer(7 C 래퍼) → gamebox D3D11→Metal 브리지(d3d11_metal_bridge.m) → Apple Metal 헤드리스 오프스크린 렌더(64×64 BGRA8) → 픽셀 readback → 어서션. 로컬 M4 실측: __E5__ PASS pe_executed=1 frame_rendered=1 px_clear=0x0000FFFF px_triangle=0xFF0000FF nonuniform=1 insns=11 imports=7. own1: Wine 0·DXVK 0·d3d11.dll 0·DRM 0·게임 애셋 0. 정직 평가: validated_manjeom=first_own1_authored_d3d11_pe_to_metal_frame (인프라 마일스톤). 상업 게임 아님 — 실 게임은 전체 Win32/D3D11 API 서피스·실 애셋·실 PE 필요. 다음: Win32 API 서피스 확장·opcode 커버리지·vtable [reg+offset] 간접 call·실 게임 PE IAT 추적." - }, - { - "name": "🧱 E5 게이트 재분류 (2026-06-26 실측 — substrate/투자 프론티어, 하드웨어 천장 아님)", - "summary": "validated_manjeom>0(실 프레임) 도달 게이트를 실측 재분류. ① real i386 D3D PE — 최소 D3D11 테스트 PE 자작 가능(own1 클린·꼭 AAA 아님). ② D3DMetal SDK — 'CI 부재'는 틀림: `brew tap apple/apple && brew install game-porting-toolkit`로 Blacksmith macos-15(실 Apple Silicon·GPU)에 설치 가능(하드웨어 무관). ③ 디스플레이 — 불필요: Metal 헤드리스(오프스크린 MTLTexture→getBytes readback)로 화면 없이 프레임 증명 가능(M4/Metal4 확인). → 진짜 벽 = 엔지니어링 거리: lib/loader/dx_d3d11.hexa 등 DX→Metal 브리지는 MTL* 이름만 적힌 텔레메트리 스캐폴드(실 Metal 호출 0건). 다음 사다리(자율가능, 실-GPU CI 위): real-PE IAT name-autobind → 넓은 opcode 커버 → D3D11 device shim → 실 MTLDevice/오프스크린 → readback. 이전 'real-asset user-only 게이트' 분류는 verify 안 한 게으른 벽(break-walls 위반)이라 정정." + "name": "⬜ OPEN — 상업 게임 프레임 (미증명)", + "summary": "인프라는 자작 PE로 증명됐으나 상업 게임(디아블로/리니지 등)은 미증명. 필요: 전체 Win32/D3D11 API 서피스·vtable [reg+offset] 간접 call·넓은 opcode 커버·실 게임 PE IAT 추적·실 애셋. own1 유지(no Wine/DRM/Warden/anti-cheat bypass)." } ] }, diff --git a/CLAUDE.md b/CLAUDE.md index 2ff87f5..e49e9be 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -3,10 +3,11 @@ Apple-native Win32 game runtime — run unmodified Win32 PE binaries on macOS Apple Silicon **without Wine** (Wine 0), via D3DMetal graphics + a hexa-only loader / perf / dispatch layer, under a strict **own1** posture (no DRM / -Warden / anti-cheat bypass, no anima clone). Skeleton-tier: modules compile and -probe, but no real game frames are evidenced (`validated_manjeom = 0`). Full -design lives in [ARCHITECTURE.md](ARCHITECTURE.md); history in -[CHANGELOG.md](CHANGELOG.md). +Warden / anti-cheat bypass, no anima clone). The PE→D3D11→Metal pipeline is +proven end-to-end with a self-authored own1 D3D11 PE (`validated_manjeom = +first_own1_authored_d3d11_pe_to_metal_frame`, an infrastructure milestone) — but +**no commercial game frame is evidenced yet**. Full design lives in +[ARCHITECTURE.md](ARCHITECTURE.md); history in [CHANGELOG.md](CHANGELOG.md). ## Structure @@ -31,7 +32,7 @@ gamebox/ ├─ ARCHITECTURE.md — architecture SSOT (update-in-place) ├─ CHANGELOG.md — append-only history ├─ harness.config.json — harness config (lockdown, lint, docs discipline) -├─ .github/workflows/ — CI (ci.yml — Blacksmith macOS build+test) +├─ .github/workflows/ — CI (ci.yml — github-hosted macOS build+test) └─ .harness-engine/ — dancinlab harness submodule (governance engine) ```