Skip to content

fix(ci): complete suites and repair macOS runtime failures - #1130

Merged
8 commits merged into
mainfrom
fix/ci-portability-20260911
Sep 12, 2026
Merged

8 commits merged into
mainfrom
fix/ci-portability-20260911

Conversation

@InauguralPhysicist

@InauguralPhysicist InauguralPhysicist commented Sep 12, 2026

Copy link
Copy Markdown
Collaborator

The extension and sanitizer variants shared worker budgets that expired before every suite completed. Once those workers completed independently, macOS exposed executable-path imports after chdir, matrix rounding differences on ARM, unsupported leak detection, and invalid-filename fixture failures.

Run each extension and sanitizer variant in its own checkout while retaining the existing required aggregate checks. Preserve the absolute executable path before user code changes directory, and make all three matrix kernels round multiplication before addition on both platforms. Preserve the existing default buffer NaN result and strict-mode rejection. The macOS graphics gate uses LLVM 22 on Apple Silicon (the macOS 26 ASan startup fix) and LLVM 18 on Intel. It validates startup and instrumentation, gives each sanitizer child a hard deadline, and rejects unexpected exits. The deliberate-leak fixture allocates inside a joined worker so stale main-thread pointers cannot hide the leak. An early native preflight requires both the leak and clean controls; the full graphics corpus remains in the suite. The full native job has a 45-minute budget after Intel exhausted 30 minutes during compiler-audit fault tests. Lint tests retain missing-path diagnostics when the filesystem rejects invalid UTF-8 filenames. Portable harness cleanup, bounded E000 messages, and useful child failure output are included.

Validation of the assembled update:

  • Release build succeeded. Executable-path regression: 5/5 normally and 5/5 with /proc/self/exe unavailable; the original runtime failed 4/5 of the latter cases.
  • Strict math: 103/103. Differential against the previous runtime: 99 identical, zero differing; 99 strict raises, zero silent/misattributed; 31 answer pins; 170/170 valid-input rows unchanged.
  • UTF-8 gate: 40 checks, 30 documented codes, eight exemptions; 2,000 identifier and 1,125 source-byte runs. Injected filename rejection retains eight path cases, while unrelated setup errors fail.
  • Lint 247/247; documentation examples 88/88 (five documented skips). The corrected graphics script passes all four compiler-invocation checks and repository recognizer coverage; compiler-audit fault selftests passed.
  • Graphics gate controls: original startup failure incorrectly passed 15/15; repaired gate rejects it after both real compiler/leak controls pass. Symbol controls 3/3; independently tested corpus decisions 20/20, including 17 fault rejections.
  • Timeout controls: 17/17 under Bash 5 and Bash 3.2; all five injected timeout/exit defects rejected. An independent review also verified four SDL status/classification cases.
  • Final CI on 2c30282: all 26 checks completed successfully. Native Apple Silicon 5,072/5,072; Intel 5,075/5,075. Both sanitizer workers and the required sanitizer aggregate are green.
  • Independent Codex reviews passed for the runtime and gates.

Addresses #1126. Fixes #1131, #1132, and #1133.

Check portable sentinel substitution, bound owned-child teardown, and preserve
cleanup across repeated signals. Reject incomplete SIGUSR1 populations and
nonzero child exits. Support Bash 3 cleanup ownership and BSD wc padding.

Validation: 10 focused commands completed; SIGUSR1 default 15/15 and forced
13/13; strict 11/11; replay 6/6; portability 25/25; cleanup-deferral-disabled
control failed with the required delivered-signal/live-child witness.

Full remote release/ASan/macOS CI required before merge. Addresses #1126.
Run HTTP/model, gfx, zlib and net suites in separate fresh jobs with the
existing 30-minute limits. Preserve the current required extensions check
as an always-running aggregate that rejects every unsuccessful worker.

Validation: exact coverage of all 18 original non-checkout steps; dropped
and duplicated suite mutations rejected; 18 aggregate status cases passed.
Independent root rerun exit 0, chunk97b521. Actual four-worker CI pending.

Addresses #1126.
@InauguralPhysicist InauguralPhysicist changed the title fix(ci): bound SIGUSR1 fixtures and support macOS shells fix(ci): restore portable harnesses and complete extension coverage Sep 12, 2026
Assemble E000 before applying the existing UTF-8 message limit. Keep short
messages byte-identical and preserve the separate file-field behavior.
Cover short, long ASCII and multibyte missing paths with exact case enrollment.

Fixes #1132.

Validation: 10 bounded local commands; 3 original-path CLI checks and 3
dedicated cases; old-binary and missing-case faults both rejected. UTF-8 gate:
40 checks, 30 documented codes, 8 exemptions, 2000 identifier sweep runs,
1125 source-byte runs. All 9 original gate selftests passed. 1036 frozen
inputs unchanged. Full release/ASan CI remains required before merge.
Evidence: /tmp/ems-close-20260911/lint-e000-focused-r1/result.json
SHA256: 4aa4729cdaa784b41e155591acafee5d7728bf48a2808aed568a1147640c23d5
Show the first five explicit assertion lines and the last twenty captured
lines for failed EigenScript and lint children. Expected parser diagnostics
previously hid the later assertion. Consume the existing capture without
rerunning the child or changing its verdict, and preserve complete lines.
Fail setup if the formatter dependency is missing.

Validation: formatter 3 positive cases and 2 attributed fault rejections;
shell syntax and git diff checks passed. Full suite execution remains CI work.
Evidence: /tmp/ems-close-20260911/failure-output-controls/result-r1.json
SHA256: 326c1e3c0c9e06411d49740461fc39e4bf68d8c62ea717219a7466f59dd98282
Core ASan plus LSP and HTTP/model ASan now own separate checkouts and retain
the original 45-minute limits. Keep the existing required status as an always
aggregate that requires both workers and a successful scope check.

The prior job passed core 5060/5060 and LSP 110/110, then exhausted its
cumulative budget during the second suite. No checks or sanitizer options
are removed, and no incomplete suite is accepted.

Validation: exact preservation of all 4 original non-checkout steps; dropped
and duplicated suite controls rejected; 15 actual aggregate-shell cases passed,
including rejection of failure, cancellation, skipped or missing workers and
unknown scope output. Full remote completion remains required.
Evidence: /tmp/ems-close-20260911/sanitizer-split-review/result-r1.json
SHA256: d663ca4fdd2925f908cebddec29c691de53fc289a02ad4be4d50fa21fafffd4f
@InauguralPhysicist InauguralPhysicist changed the title fix(ci): restore portable harnesses and complete extension coverage fix(ci): complete variant suites and repair portable harnesses Sep 12, 2026
Resolve and own the executable path before chdir, use separate rounded
matrix multiply/add operations, and preserve the pinned buffer NaN result.
Use upstream LLVM for macOS gfx leak checks and retain invalid-path lint
coverage on filesystems that reject invalid UTF-8 names.

Measured gate results:
EXE PATH: 5 passed, 0 failed (native and no-proc); old no-proc: 1/5.
STRICT: 103 passed, 0 failed.
identical-when-off: 99 differing: 0
raises-under-strict: 99 silent: 0 misattributed: 0
answer-pins held: 31 broken: 0
valid-input rows unchanged in BOTH modes: 170 / 170
UTF-8: 40 checks, 30 documented codes, 8 pinned exemptions;
2000 identifier runs and 1125 source-byte runs.
Results: 247 passed, 0 failed, 247 total (lint).
Doc examples: 88 checked, 88 passed, 0 failed, 5 skipped.
Changed compiler audit: 4/4 and recognizer coverage passed;
compiler-audit integration and synthetic fault selftests: OK.
gfx startup controls: 2/2; original wrongly 15/15, fixed rejects startup.
gfx symbol controls: 3/3; independent corpus decisions: 20/20.
Independent runtime and gate reviews: PASS within local scope.

Full integrated platform and sanitizer CI pending; no native macOS pass
is claimed from the local controls.
@InauguralPhysicist InauguralPhysicist changed the title fix(ci): complete variant suites and repair portable harnesses fix(ci): complete suites and repair macOS runtime failures Sep 12, 2026
Comment thread src/builtins_tensor.c
* changing buffer-NaN reads generally is a separate reform tracked
* in ROADMAP.md. Finite results and infinities remain untouched. */
for (int i = 0; i < res->data.buffer.count; i++) {
if (res->data.buffer.data[i] != res->data.buffer.data[i]) {
The Apple Silicon job hung for 28 minutes in the tiny ASan startup
control with Homebrew LLVM 20.1.8. Select LLVM 22, whose released runtime
contains llvm-project#182943 via the release/22.x backport #188913.
Keep the interpreter on Apple Clang and retain the deliberate leak control.

Bound sanitizer children with TERM after 120s and KILL after 5s, including
the startup and SDL probes. Require a completed positive leak control;
a timeout after leak output is a failure. Missing coreutils fails loudly.

Give the full native job 45 minutes: Intel completed the gfx gate and
540 compiler invocations but hit 30 minutes in compiler audit selftests.
No test populations or required checks are removed.

Validation: timeout controls 17 passed, 0 failed under Bash 5 and Bash 3.2;
5 private timeout/exit mutations rejected, 0 missed. Changed compiler
audit 4/4 invocations; recognizer coverage 102 scripts, 7 shape waivers.
Workflow parse/native coverage, bash syntax and diff checks are green.
Native macOS CI must verify the selected runtime and integrated suite.
Comment thread tests/test_gfx_timeout.py
if pidfile.exists():
try:
os.killpg(os.getpgid(int(pidfile.read_text())), signal.SIGKILL)
except ProcessLookupError:
LLVM22 fixed the macOS26 ARM startup hang, but the original -O0 leak
fixture exited 0 without a report. Allocate inside a joined worker which
returns NULL so the main thread never retains an allocation pointer. The
clean twin differs only by freeing that allocation. Scanner settings stay
unchanged, and thread/allocation failures cannot pass either control.

Add --toolchain-only to the same gate and run it as an early native CI
step. It validates startup and both leak controls before any gfx build,
fails when ASan is unavailable, and does not replace the full suite.

Validation: real GCC preflight 2/2; timeout controls 17/17; invalid arguments
rejected 3/3; independent review PASS. Full graphics population remains 15.
Changed compiler audit 4/4; recognizer 102 scripts, 7 shape waivers. Workflow
preflight ordering, shell syntax and diff checks are green.
Native macOS must verify the real joined-thread controls and full suite.
@InauguralPhysicist InauguralPhysicist closed this pull request by merging all changes into main in 7b4302e Sep 12, 2026
@InauguralPhysicist
InauguralPhysicist deleted the fix/ci-portability-20260911 branch September 12, 2026 16:31
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.

macos-latest: matmul overflow/cancellation violates strict/default numerical contract

2 participants