feat(F-NSWINDOW-E5 r7): E4 โ security cookie + CPUID/RDTSC/IMUL + import 11 (insns 30โ44) #28
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # gamebox CI โ build + test on a Blacksmith cloud Apple-Silicon runner. | |
| # | |
| # WHY: gamebox is Apple-native (Win32 PE loader + D3DMetal), so its hexa source | |
| # compile + the apple-only test suite need a macOS host. Running that locally on | |
| # the dev Mac (242+ perf modules + 8 test files) spikes memory and crashes the | |
| # machine. Offloading to Blacksmith's native Apple-Silicon runner | |
| # (blacksmith-6vcpu-macos-15) keeps every build off the local Mac โ the dev box | |
| # only ever does `git push`. | |
| # | |
| # Runner pin: macos-15 (NOT -26) mirrors the hexa-lang release.yml rationale โ | |
| # the SDK baseline rides the builder, and macos-15 keeps the Mach-O min-OS floor | |
| # stable. | |
| # | |
| # The hexa toolchain is the released binary (gamebox is a downstream consumer, | |
| # not the compiler repo), installed verbatim via the canonical one-liner. | |
| name: gamebox-ci | |
| on: | |
| push: | |
| branches: [main, master] | |
| pull_request: | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: gamebox-ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build-test: | |
| name: build + test (darwin-arm64, Blacksmith) | |
| runs-on: blacksmith-6vcpu-macos-15 | |
| timeout-minutes: 25 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install hexa toolchain (released binary) | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/dancinlab/hexa-lang/main/install.sh)" | |
| echo "$HOME/.hx/bin" >> "$GITHUB_PATH" | |
| - name: Sanity โ hexa runs | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| hexa --version || true | |
| hexa --help >/dev/null | |
| # โโ Test suite โ the 8 self_test files from hexa.toml [test].files. | |
| # These files are `fn self_test()` + `main()` dispatch (own2 mandate), NOT | |
| # `@test` fns โ so they MUST be invoked via `hexa run <file> self-test` | |
| # (which dispatches main()โself_test()). `hexa test` runs only @test fns, | |
| # finds zero, and passes VACUOUSLY โ so it must NOT be used here. | |
| # D3DMetal SDK is absent on the runner, but gamebox detection is warn-only | |
| # (skeleton-tier loaders stay importable), so the apple-only + loader tests | |
| # exercise compile + logic without the SDK. | |
| - name: Test โ gamebox self_test suite | |
| shell: bash | |
| run: | | |
| set -uo pipefail | |
| fail=0 | |
| for t in \ | |
| tests/test_apple_only.hexa \ | |
| tests/test_closure.hexa \ | |
| tests/test_own2.hexa \ | |
| tests/test_d2r_archive_round_trip.hexa \ | |
| tests/test_d2r_d3d11_synthetic_scaffold.hexa \ | |
| tests/test_d2r_pe_synthetic_round_trip.hexa \ | |
| tests/test_purple_lineage_offline_shim.hexa \ | |
| tests/test_roadmap_op_self_impl.hexa ; do | |
| echo "โโ $t โโ" | |
| if hexa run "$t" self-test; then | |
| echo "PASS $t" | |
| else | |
| echo "::error::FAIL $t" | |
| fail=1 | |
| fi | |
| done | |
| exit "$fail" | |
| # โโ Native C โ i386 interpreter (E3 first-execution milestone). | |
| # Compiles + RUNS native/i386_cpu_test (hermetic โ embeds the real | |
| # Battle.net-Setup.exe entry block, no binary needed). It's a pure Intel-SDM | |
| # interpreter (no JIT), so no codesign is needed to run it on the runner. | |
| # This is the first gamebox code that EXECUTES (not just decodes) real | |
| # game-binary bytes โ gate it so the milestone can't silently regress. | |
| - name: Test โ native i386 interpreter (E3) | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| SDK="$(xcrun --sdk macosx --show-sdk-path)" | |
| clang -arch arm64 -isysroot "$SDK" -O2 -Wall -Wextra -std=c11 \ | |
| -o "$RUNNER_TEMP/i386_cpu_test" \ | |
| native/i386_cpu_test.c native/i386_cpu.c native/i386_decode.c native/pe_parse.c | |
| out="$("$RUNNER_TEMP/i386_cpu_test")" | |
| echo "$out" | |
| echo "$out" | grep -q "__SHIM_TEST__ PASS" \ | |
| || { echo "::error::native i386_cpu_test FAIL (E3 interpreter regression)"; exit 1; } | |
| # โโ CLI smoke โ own2 PASS/FAIL/PARTIAL subcommands compile + run. | |
| - name: Smoke โ gamebox CLI subcommands | |
| shell: bash | |
| run: | | |
| set -uo pipefail | |
| hexa run cli/gamebox.hexa -- status || echo "::warning::status non-zero (own2 PARTIAL/FAIL is honest, not a CI break)" | |
| hexa run cli/gamebox.hexa -- selftest --quick || echo "::warning::selftest --quick non-zero (skeleton-tier, warn-only)" |