chore: sync upstream v8 (3 commits) and renumber the fork's unreleased section to 0.9.35 - #36
Merged
Merged
Conversation
…bind can't drop a true call (Graphify-Labs#2472) Track C# receiver types per lexical declaration scope (byte ranges) and resolve by the call's position, instead of a method-wide flat table that poisoned a name on any None-typed binding. A typed static local-function parameter now keeps resolving even when an out var reuses the name in the enclosing body. Fixes a regression from Graphify-Labs#2346; Graphify-Labs#2299 cross-method independence and field-conflict poisoning are unchanged. Thanks @JensD-git for the bisect and repro. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Graphify-Labs#2487) graphify path and the MCP shortest_path tool now build a digraph from the true _src/_tgt directions and respect edge direction by default, so a returned path no longer traverses edges backwards. --undirected (CLI) / undirected=true (MCP) opt out; no directed path is reported plainly instead of silently returning a reversed one. Thanks @luliaz0601. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ls; bump to 0.9.34 Graphify-Labs#2486 (thanks @adminwat): normalize dict-shaped hyperedge members to ids (or drop with a warning) so a malformed hyperedge can't abort a completed merge with a TypeError. Graphify-Labs#2484 (thanks @sortakool; approach from @oleksii-tumanov's Graphify-Labs#1691): merge-graphs relabels hyperedge member ids and ids with the repo prefix, unions both inputs' hyperedges instead of clobbering, and writes both persistence slots. Graphify-Labs#2485 (thanks @sortakool): build_from_json reads hyperedges from the top-level and nested slots; a full validation wipeout is reported loudly. Graphify-Labs#2490 (thanks @PapiScholz): the skill Step-5 flow passes curated community_labels to to_json, so graph.json ships community_name. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Brings in the three upstream commits since the fork point 4e7e6b1: - e300587 fix(csharp): scope receiver types per declaration so an untypeable rebind can't drop a true call (Graphify-Labs#2472) - 94ebee1 fix(path): respect edge direction by default in path and shortest_path (Graphify-Labs#2487) - 07b9143 fix(hyperedge,skill): merge/load hyperedge integrity + community labels; bump to 0.9.34 Conflicts resolved (3 files, all in regions both sides edited): * CHANGELOG.md — both sides opened a `## 0.9.34 (unreleased)` section. Upstream RELEASED 0.9.34 (tag v0.9.34 at 07b9143), so upstream's section keeps that number and its six bullets verbatim, and the fork's own unreleased section is renumbered to 0.9.35. pyproject.toml follows to 0.9.35 for the same reason. The AST-cache bullet now names 0.9.35 as the bump that rolls `graphify-out/cache/ast/v{version}/`. Upstream's own 0.9.34 header read "(unreleased)" despite the tag, which would have left two "(unreleased)" sections stacked here; it is dated `2026-08-05` from the tag itself (`git log -1 --format=%ci v0.9.34` -> 2026-08-05 22:08:29 +0100), matching the date upstream stamped on 0.9.33 in that same commit. Header text only — every upstream bullet is byte-identical to theirs. FLAGGED FOR MAINTAINER REVIEW: the 0.9.35 renumber is a fork-side decision, not something upstream asked for. * graphify/extractors/engine.py — two comment/type-annotation regions. `walk_calls`'s `receiver_types` parameter now types all three shapes: Java's flat name -> short type, C#'s (scoped bindings, field base) tuple from Graphify-Labs#2472, and PHP's flat name -> (short, qualified) pair. The `receiver_types_by_body` merge unions all three per-method tables. No behavior change on either side: the C# stamp site reads upstream's positional `_csharp_scoped_receiver_type`, and the PHP stamp site reads the fork's pair-valued table, exactly as each parent wrote them. Verified byte-for-byte against both parents: every file touched by only one side is blob-identical to that side, and for the three both-touched files the diff-of-diffs against each parent's own contribution is empty outside the resolved regions above. `_csharp_method_receiver_types` (7643 bytes) and the new `_csharp_scoped_receiver_type` (1235 bytes) match upstream exactly; the fork never touched them. Suite: 4167 passed, 36 skipped, 0 failed (fork baseline at 5517334 was 4124 passed / 36 skipped; upstream adds 24 plain tests plus two parametrized ones expanding over 16 skill bodies and 3 core fragments = +43).
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.
Pulls upstream
v8(Graphify-Labs) into the fork — the three commits upstream merged since the fork's base, plus the version-collision resolution.Upstream commits brought in
e300587— C# per-declaration receiver scoping (upstream C#: an untypeable declaration poisons an already-typed receiver name within the same method Graphify-Labs/graphify#2472)94ebee1—path/shortest_pathrespect edge direction by default (upstream path: shortest path runs on an undirected view, so results can traverse edges backwards Graphify-Labs/graphify#2487)07b9143— hyperedge merge/load integrity + community-label skill fixes; upstream's bump to (and release of) 0.9.34Version-collision resolution (flagged for maintainer review)
Both sides claimed 0.9.34: upstream released it (tag
v0.9.34), while the fork's CHANGELOG carried its own large unreleased 0.9.34 section (all of this week's PHP + isolation work). Resolution: the fork's unreleased section is renumbered to 0.9.35 withpyprojectfollowing, upstream's released 0.9.34 section sits below it dated from the tag (2026-08-05). The 0.9.35 bump also rolls the version-namespaced AST cache, which the fork's own changelog notes is required after the raw-call field changes.Merge verification
Three layers, no hand-waving: blob identity for every single-side file (17 fork-only including
extract.py/extractors/php.py, 48 upstream-only — zero mismatches); diff-of-diffs on both-touched files (engine.py,cli.py,CHANGELOG.md— every hunk traced to exactly one parent except the two hand-resolved ones); AST-level function extraction for the C# region proving_csharp_method_receiver_types/_csharp_scoped_receiver_typeare byte-identical to upstream and untouched by the fork's resolver-scoping work (which lives inresolution.py, untouched by upstream).Test evidence
5517334, incl. PR feat(php): positive alias binding via declared FQNs + incremental parity marker (#22, #23) #35): 4124 passed / 36 skipped.🤖 Generated with Claude Code