Skip to content

feat(F-NSWINDOW-E5 r10): headless Metal offscreen render + readback smoke (E5 substrate proof) - #33

Merged
dancinlife merged 1 commit into
mainfrom
feat/e5-r10-metal-smoke
Jun 26, 2026
Merged

feat(F-NSWINDOW-E5 r10): headless Metal offscreen render + readback smoke (E5 substrate proof)#33
dancinlife merged 1 commit into
mainfrom
feat/e5-r10-metal-smoke

Conversation

@dancinlife

@dancinlife dancinlife commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

F-NSWINDOW-E5 r10 — ③ 게이트 "주장"→"실행 증명"

이전 턴에 'Metal 헤드리스 렌더 가능'이라 말만 했던 걸, 이제 실 Metal 렌더로 실행 증명합니다(verify-done·honesty·break-walls substrate 검증).

native/metal_offscreen_smoke.m (신규·235줄·ObjC+Metal)

  • MTLCreateSystemDefaultDevice() → nil이면 __METAL_SMOKE__ SKIP reason=no_device(정직한 ground-truth·warn-only, 가짜 PASS 안 함).
  • device 있으면: 64×64 오프스크린 MTLTexture → MSL 인라인 셰이더 파이프라인 → 파란 clear + 빨간 삼각형 1개 그리기 → getBytes readback → clear색·삼각형색 둘 다 존재(non-uniform) assert.

로컬 측정 (M4·exact stdout)

__METAL_SMOKE__ PASS device=Apple M4 px_clear=0x0000FFFF px_triangle=0xFF0000FF nonuniform=1

디스플레이 없이 실 GPU 프레임 렌더+읽기 확인 → ③ 게이트 경험적 검증 완료.

CI 배선 (warn-only)

ci.yml에 E3 step 다음 substrate step 추가. PASS/SKIP/FAIL 전부 ::warning:: 또는 로그(빌드 red 안 됨). 이 PR의 CI run이 Blacksmith GPU 세션 ground-truth(PASS=GPU 있음 / SKIP=세션 없음)를 줍니다.

own1 / manjeom

gamebox 자체 삼각형을 자체 Metal 경로에 렌더 = substrate 증명, 게임 프레임 아님. validated_manjeom 여전히 0.

다음 r11

D3D11 device/swapchain shim(dx_d3d11.hexa CreateDevice/CreateSwapChain → 실 MTLDevice + 이 오프스크린 경로) + 최소 D3D11 테스트 PE(own1 자작) → 인터프리터가 PE를 실행해 D3D11 IAT 통해 Metal 호출 = validated_manjeom>0 게이트.

🤖 Generated with Claude Code


View with Codesmith Autofix with Codesmith
Need help on this PR? Tag /codesmith with what you need. Autofix is disabled.

…moke (E5 substrate proof)

native/metal_offscreen_smoke.m: standalone ObjC+Metal program — creates 64x64
MTLPixelFormatBGRA8Unorm offscreen texture, compiles inline MSL via
newLibraryWithSource:, clears to blue + draws one red triangle, reads back
pixels via getBytes, asserts px_clear=0x0000FFFF/px_triangle=0xFF0000FF/
nonuniform=1. SKIP path (exit 0) when MTLCreateSystemDefaultDevice() returns
nil — honest ground-truth, not a failure. Local M4 result:
__METAL_SMOKE__ PASS device=Apple M4 px_clear=0x0000FFFF px_triangle=0xFF0000FF nonuniform=1.

Wire into CI (ci.yml) as warn-only step after E3 native interpreter, before CLI
smoke — surfaces PASS/SKIP/FAIL in Blacksmith runner log without redding the
build. Register in native/build.sh (ObjC ARC + Metal/Foundation flags). CHANGELOG
+ ARCHITECTURE.json blocking-frontiers updated (r10 substrate node added, E5 ladder
updated to reflect Metal headless render empirically verified locally, CI pending).

own1: plain Apple Metal — no Wine, no DRM, no game asset. Substrate proof only;
validated_manjeom stays 0. r11 = D3D11 device/swapchain shim routing CreateDevice
draws into this proven Metal offscreen path + minimal D3D11 test PE.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@dancinlife
dancinlife merged commit a82cfba into main Jun 26, 2026
1 check passed
@dancinlife
dancinlife deleted the feat/e5-r10-metal-smoke branch June 26, 2026 11:03
dancinlife pushed a commit that referenced this pull request Jun 26, 2026
…더+readback smoke = ③게이트 dev M4 PASS + Blacksmith CI PASS(Paravirtual device) 양쪽 실측증명. E4✅ E5🛠️(substrate proven). 🔑 진짜 벽=DX→Metal 배선. r11 표적=D3D11 device/swapchain shim(dx_d3d11.hexa CreateDevice/CreateSwapChain→실 MTLDevice+오프스크린 경로) + 최소 D3D11 테스트 PE(own1 자작)→인터프리터 실행→D3D11 IAT→Metal = validated_manjeom>0 게이트. SSOT=ARCHITECTURE.json blocking-frontiers + memory.
dancinlife pushed a commit that referenced this pull request Jun 26, 2026
…M vtable shim→실 MTLDevice 오프스크린)·native test PASS(px_clear/triangle nonuniform)·구현됨·미배선(dead until wired). r10 #33 Metal substrate proven. ⚠️ CI=github-hosted macos-15(Blacksmith 해제·#34/#35 비용·PUBLIC repo 무료). r12 표적=최소 D3D11 테스트 PE(own1 자작)+인터프리터 end-to-end 배선(IAT autobind D3D11 imports→bridge shim)→PE 실행→Metal readback=validated_manjeom>0 첫 시도. SSOT=ARCHITECTURE.json blocking-frontiers+memory.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant