Skip to content

fix(runtime): stop immediately on fatal self-exit signals - #46

Open
mremond wants to merge 4 commits into
mainfrom
fm/task-a9639ed2
Open

mremond wants to merge 4 commits into
mainfrom
fm/task-a9639ed2

Conversation

@mremond

@mremond mremond commented Nov 14, 2026 •

Copy link
Copy Markdown
Member

Why

A native process could continue after sending itself a fatal exit signal and report a later error instead.

What changed

  • Fatal self-signals stop before later expressions, catch handlers or cleanup.
  • Trapped and ordinary exit-shaped messages retain their message semantics.
  • One regression exercises the same process behavior natively and on BEAM.

Before and after

Before: All six fatal self-signal probe cases ran later body and cleanup effects and exited from a later error.

After: All six fatal cases now retain BEAM's exit reason and execute no later body or cleanup effects.

This changes native process termination and signal handling, not an on-screen interface.

Checked

Live validation: Demonstrated for this version. 4 of 4 scenarios driven live in the product.

Scenario Result Evidence
Fatal self-signals ✅ Passed live Monitor reasons match BEAM; later expressions and cleanup never run.
Ordinary and trapped exit-shaped messages ✅ Passed live Six mailbox controls match across both native scheduler modes and BEAM.
Shared native and BEAM regression ✅ Passed live All 93 combinations pass ten consecutive runs per engine/scheduler mode.
Complete local gate and edited-test repetitions ✅ Passed live 2,186 Rust passes, 496 native passes and forty successful command outcomes.
  • Independent code and proof reviews: No remaining findings in the runtime, conflict resolution, safety-contract test or refreshed live proof.
How it was checked

Local checks ran on macOS arm64 with the runtime built before the compiler and locked dependencies.

Ran the complete contributing gate and native-shutdown journey.

Compared the same Erlang fixture on BEAM and native default/single scheduler modes.

Independent reviews cleared the runtime, conflict resolution, safety-contract test and refreshed live proof.

Risk

Risk above low: Blast radius, medium — Touches process signal delivery and mailbox provenance across runtime paths.; Novelty, medium — Adds signal-slot provenance beside the existing mailbox ring.

Full risk assessment
Dimension Level Why
Blast radius medium Touches process signal delivery and mailbox provenance across runtime paths.
Behavior low Corrects fatal self-exit ordering and preserves ordinary message behavior.
Undo low Revert restores the previous behavior without a data migration.
Evidence low Monitor transcripts, native/BEAM regression and the full gate pass.
Sensitivity low No sign-ins, secrets, payments or persisted user data change.
Novelty medium Adds signal-slot provenance beside the existing mailbox ring.
Dependencies low No dependencies change.
Not done

Windows execution was not run.

Pipeline

Updates from git push no-mistakes

Infinitary checked this version: an independent review that also judged the documents, and live validation the review accepted.

@github-actions github-actions Bot added this to the 0.1.1 milestone Nov 14, 2026
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