Migrate NamespaceCandidates onto the SymbolSource seam - #376
Merged
Conversation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #376 +/- ##
=========================================
Coverage 98.14% 98.14%
Complexity 1711 1711
=========================================
Files 107 107
Lines 4308 4308
=========================================
Hits 4228 4228
Misses 80 80 ☔ View full report in Codecov by Harness. |
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.
Slice S2.3 — Migrate
NamespaceCandidatestochildrenOfSlice: S2.3 (
docs/architecture/build-manifest.md, Wave 1)Plan step:
docs/architecture/0002-execution-plan.mdStep 2 (§5.5consumer-migration table; §5.3 name-type model) — a consumer migration onto
the S2.1 seam, no behavior change.
Depends on: S2.1 (
SymbolSource/SymbolSink+ delegating facade, #374)— merged.
RFC sections: 0001 §4.2 (Symbol Discovery Authority), §4.4 (FQN-based
knowledge queries), §5.1 (typed identifiers).
Routes
NamespaceCandidates' namespace enumeration throughSymbolSource::childrenOfinstead of namingNamespaceCatalogdirectly. Eachof the four call sites now wraps the namespace string in a
NamespaceName(the typed identifier the manifest flagged as needed by this slice, already
landed in S2.1). The consumer is constructed with the one shared
DelegatingSymbolSourcefacade wired inServer.phpin S2.2.Behavior preservation
The plan requires this migration be identical. The facade's
childrenOfunwraps
NamespaceNameand delegates to the sameNamespaceCatalogtheconsumer used before, so no enumeration result changes. The frozen
ChildrenOfParityTestgolden (children-of.json) is unchanged — this slicedoes not touch the enumeration surface itself — and the full
NamespaceCandidatesunit suite plus theCompletionHandlernamespace-navigation cases stay green across every path (absolute,
use, bare descend,inline/node, multibyte range).
Acceptance criteria
NamespaceCandidatesreads namespace enumeration throughSymbolSource::childrenOf, no longer namingNamespaceCatalogdirectly.NamespaceNametyped identifier ateach call site (RFC 1 §5.1).
NamespaceCandidatesTestandCompletionHandlerTestcoverage green).ChildrenOfParityTestgolden is unchanged (the enumeration surfaceis untouched).
DelegatingSymbolSourceinstance inServer.php.composer testgreen (PHPStan + tests + PHPCS).Not in this slice
SymbolIndex/ClassRepository/NamespaceCatalognames outside abackend lands in S2.6 (scoped-exempt), once the remaining consumers
(S2.4, S2.5) have migrated.
Candidate closes (pending review verification)
None — the manifest lists no
Closesfor S2.3.🤖 Generated with Claude Code