Skip to content

fix(graph): bind builder callers through typed locals (#1355) - #1371

Closed
ScriptedAlchemy wants to merge 1 commit into
codex/tracedecay-total-redesign-plan-reopenedfrom
agent/1355-callers-typed-locals
Closed

ScriptedAlchemy wants to merge 1 commit into
codex/tracedecay-total-redesign-plan-reopenedfrom
agent/1355-callers-typed-locals

Conversation

@ScriptedAlchemy

@ScriptedAlchemy ScriptedAlchemy commented Sep 16, 2026 •

Copy link
Copy Markdown
Owner

Summary

Motivation

Tip aeb2b5c35 still reproduces the class-1 miss: bare build is blocklisted and the dotted receiver is dropped, so callers look complete with zero edges. Measured tip repro is in the agent store (internal/issue-1355/tip-repro-extraction.log, 1361-closed-unmerged.md).

Changes

  • Extractor (rust_extractor.rs): lexical LocalTypeScope; mut/ref binding unwrap; Type::new-only inference; when a local new method exists, require return Self/type (abstain for Factory::new() -> Product); cross-file new keeps the convention.
  • Seal (helpers.rs): associated_type_method_matches for Type::method; resolve import aliases (use dep::WalkBuilder as Builder → owner WalkBuilder); module-segment + inline-module path matching.
  • Fixtures: production + MCP mut-builder regressions; aliased-import production test; extraction coverage for shadow/new/annotation cases.

Test plan

  • Extraction: mut_builder_local_*, new_with_non_self_return_*, shadow/annotation suite
  • Production: cross_file_builder_method_calls_bind_through_typed_locals, cross_file_aliased_builder_method_calls_bind_through_typed_locals
  • MCP (test-transport): callers_of_cross_file_builder_method_include_typed_local_sites
  • Full workspace / CI

Checklist

  • CHANGELOG.md updated (under [Unreleased] if no version bump)
  • No secrets, credentials, or .env files included
  • Breaking changes documented (if any) — none

Merge remains Zack’s call.

Open in Web Open in Cursor 

Closure decision (2026-09-16)

Closed unmerged. This replacement is larger than #1361 (+1090/−71) and still retains convention-based cross-file Type::new() inference without canonical return-type evidence, plus the reviewed local-scope/path-matching complexity. It therefore repeats the unsafe architecture instead of using existing signature/import/type authorities. #1355 remains open. Next step is read-only authority mapping, followed by a smaller fix that proves receiver type or abstains.

Carry the closed #1361 lexical LocalTypeScope redesign onto a fresh
campaign-tip lane, and address remaining Codex P1s: resolve import
aliases when matching Type::method owners, verify local new return
types before qualifying bindings, and accept inline module segments.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
@changeset-bot

changeset-bot Bot commented Sep 16, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 03d318f

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

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.

2 participants