feat: definition-site anchors in breadcrumbs and cycle paths (ERR-6)#291
Merged
Conversation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…e promotion (ERR-6) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…tors (ERR-6) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
The accepted ERR-6 item from the 2026-07-05 3.0 UX research: breadcrumb steps and cycle paths carry the Factory creator's definition site as a trailing
(module:line)anchor — a production traceback now names both ends of a failure and where each was declared.Factory.definition_site, lazy + memoized, error-path-only (zero declaration/import cost, verified by call-site grep):__code__.co_firstlinenofree for functions,inspect.getsourcelinesfor classes, silentNonefor C callables/partials/pathological creators. Format module:line (maintainer-ruled), e.g.app.services:17.ResolutionStepgains a defaultedlocation; chain lines renderUserService (app.services:17).Alias/ContextProvidersteps stay bare.CircularDependencyErrorgainscycle_locations(public.cycle_pathstays barelist[str]); both construction sites (validate DFS + RecursionError conversion) pass anchors.except Exception) with one reviewer-verified carve-out: a freshRecursionErrorduring capture propagates un-memoized so the runtime cycle guard's retry ladder re-converts with headroom — an instrumented probe confirmed anchors survive repeated stack exhaustion and no rawRecursionErrorescapes. Deterministic tests pin both branches.scope-not-initialized-error/scope-skipped-error/circular-dependency(the pages anchored tracebacks land on);scope-chainnotes it carries no chain;architecture/resolution.md+validation.mdpromoted.just test-ci(100% line coverage, 337 passed),just lint-ci,just docs-build --strict,just check-planningall green.Downstream note for the next release: exact-message assertions may break on the new trailing anchors; substring
match=survives (2.24.0-style note to carry in the notes).Design bundle (rationale home): planning/changes/2026-07-08.04-definition-sites.md
🤖 Generated with Claude Code