Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 6 additions & 22 deletions ARCHITECTURE.json
Original file line number Diff line number Diff line change
Expand Up @@ -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)."
}
]
},
Expand Down
11 changes: 6 additions & 5 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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)
```

Expand Down
Loading