Repository navigation
Preserve IFDS return traces and actor request lifecycle in #225 - #429
Draft
CaelmBleidd wants to merge 2 commits into
Draft
CaelmBleidd wants to merge 2 commits into
CaelmBleidd wants to merge 2 commits into
Conversation
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Interprocedural traces skip the callee body because the return edge points from its entry rather than its exit. Concurrent completion waits overwrite each other, while closing the actor system leaves request/completion promises unresolved; a failed ask builder also counts an unsent message.
Connect callee exit to caller return, retain all completion waiters, attach owned promises to system cancellation and clean them up on return. Isolate failed request replies through a request-local SupervisorJob so one failed reply does not kill the system. Increment the send count only after message construction succeeds.
This correction targets the original #225 branch without rewriting it. Current develop integration and broader IFDS ownership/supervision decisions remain separate gates.
Validation: the actual production trace fixture failed before and passed after the graph correction. All four new actor lifecycle regressions failed on the original source; all nine actor tests (including existing tests and failed-reply isolation) passed after the final correction. Focused harnesses compile the real graph/domain and complete actor sources; they do not claim full analyzer/runtime integration. The historical linked-worktree Gradle hook could not locate its Git root; the actor commit records explicit focused tests and diff-check as its validation.