Repository navigation
Speed up Python entrypoint discovery and strengthen binding tests - #119
Merged
Merged
Conversation
tob-scott-a
force-pushed
the
perf/graph-and-mutation-coverage
branch
from
October 26, 2026 21:40
5964a5e to
1eaa0ae
Compare
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.
Python entrypoint discovery built lexical scopes for files without decorated functions and scanned every file for replacement writes even when no local identity decorator needed proving. Select decorated functions with a cached Tree-sitter query and defer the replacement scan until an identity proof needs it, preserving binding evidence and source order.
On a fixed 143-file Python corpus, seven alternating A/B runs reduced median full Trailmark analysis time from 2.268s to 1.978s (12.8%), with identical complete graph output: 4,308 nodes, 12,996 edges, and all serialized metadata. Small fixture and TypeScript controls showed no material timing change; the gain is specific to Python decorator/entrypoint analysis.
Add regression cases for decorator bindings, source ordering, file edits, argument boundaries, Python imports, and PHP callable-reference context and dispatch. Focused mutation checks now kill 21 unchanged mutants that survived the latest main CI campaign. Add a reusable analysis benchmark and correct component test ordering for private helpers while retaining every fallback test.
Validation: