Skip to content

ci: native-abi-proof workload native_abi_packet_control lost its hot-loop native region (hot_loops_no_runtime_calls red on main since the 2026-07-28→29 merge window) #6996

Description

@proggeramlug

Summary

compiler-output-regression → suite native-abi-proof → workload native_abi_packet_control fails its hot_loops_no_runtime_calls contract:

hot_loops_no_runtime_calls: hot loop runtime calls: {"for.body.2": [
  "js_array_length", "js_array_push_f64", "js_boxed_number_new",
  "js_native_arena_alloc", "js_native_aren…"
]}

The hot loop lost its native-region lowering and fell back to generic runtime calls. native-region-proof (the sibling suite in the same job) still reports "status": "pass" — only native-abi-proof is red, and only this one workload.

When it appeared

compiler-output-regression on scheduled main runs:

run main SHA result
30428100984 (2026-07-29) 760db2fd8 failure
30334470716 (2026-07-28) 95960e0df success
30244372354 (2026-07-27) b5727f305 success
30191162880 (2026-07-26) 497f64e43 success

So it was introduced somewhere in 95960e0df..760db2fd828 commits, since the scheduled run is daily and that window holds a full day of merges. I have not bisected it, and I am deliberately not guessing: several commits in that range are plausible on priors (the rooting series #6934/#6941/#6948/#6972 emits new calls; the code-shape/table-izing series #6937/#6938/#6940/#6959 changes lowering; #6893/#6939 changed typed layouts), and "plausible on priors" is how two wrong attributions already got made this week.

The window is git log --oneline 95960e0df..760db2fd8.

Why it matters now

compiler-output-regression is a required check, so this blocks every open PR that reaches it — currently #6990, and #6983/#6994 once they get that far. Those PRs are unrelated to the defect: #6990's diff is two comment rewrites plus a runtime-side RuntimeHandleScope, none of which can add calls to generated IR.

This is also the second repo-wide gate red at the same time; the other is the stale public benchmark baseline failing lint. Both need clearing before the GC work can land.

Suggested next step

Bisect the 28-commit window against this one workload. It should be cheap to script:

python3 scripts/compiler_output_regression.py suite --suite native-abi-proof   # (see the workflow for exact args)

Then decide whether the regression is a genuine lowering loss to fix, or an intentional consequence of new rooting emission — in which case the contract needs updating deliberately, with the cost written down, rather than left red.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions