Skip to content

feat(F-NSWINDOW-E5 r7): E4 โ€” security cookie + CPUID/RDTSC/IMUL + import 11 (insns 30โ†’44) #28

feat(F-NSWINDOW-E5 r7): E4 โ€” security cookie + CPUID/RDTSC/IMUL + import 11 (insns 30โ†’44)

feat(F-NSWINDOW-E5 r7): E4 โ€” security cookie + CPUID/RDTSC/IMUL + import 11 (insns 30โ†’44) #28

Workflow file for this run

# 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)"