Skip to content

Commit 4c69422

Browse files
aksOpsclaude
andcommitted
docs(changelog): document resolver pipeline wiring + 4 Java detector migrations
Extends the [Unreleased] entry with the Phase 4 + 6 follow-up work shipped on this branch — the resolver is now wired end-to-end into Analyzer and four Java detectors consume ctx.resolved() to emit RESOLVED-tier edges with stable target FQNs: - JpaEntityDetector — @onetomany / @manytoone MAPS_TO targets - RepositoryDetector — JpaRepository<T, ID> entity FQN - SpringRestDetector — @RequestBody DTO MAPS_TO edges - ClassHierarchyDetector — EXTENDS / IMPLEMENTS FQN targets Also covers the JavaSymbolResolver lazy-parse extension that lets the orchestrator pass raw source content for Java (the structured parser doesn't cover Java, so without this the resolver could never receive a CompilationUnit). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 7d19cc5 commit 4c69422

1 file changed

Lines changed: 45 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,51 @@ for that specific tag for the per-commit details.
8282
(detectors that explicitly stamp survive untouched). 11 atomic commits
8383
ship with ~290 new tests covering happy paths, legacy-data fallbacks,
8484
malformed inputs, determinism, concurrency-safe construction, and singleton
85-
invariants. Detector migrations to consume `ctx.resolved()` and the
86-
resolver-bootstrap-into-Analyzer hook follow in sub-project 1 Phase 5.
85+
invariants.
86+
87+
- **Resolver pipeline wiring + Java pilot detectors** (sub-project 1, plan
88+
Phases 4 + 6 — follow-up to the SPI scaffolding above): the resolver
89+
is now actually invoked end-to-end and four Java detectors consume
90+
`ctx.resolved()` to emit RESOLVED-tier edges with stable
91+
fully-qualified-name targets.
92+
- `Analyzer` now bootstraps `ResolverRegistry` exactly once per pipeline
93+
entry point (`run` / `runBatchedIndex` / `runSmartIndex`) and threads a
94+
`Resolved` onto every `DetectorContext` at all three detect call sites
95+
(`analyzeFile`, the batched-index variant, the regex-only fallback).
96+
Per-file `ResolutionException` + `RuntimeException` are swallowed and
97+
fall back to `EmptyResolved.INSTANCE`, so one resolver blow-up cannot
98+
take down the whole pass.
99+
- `JavaSymbolResolver.resolve()` now lazy-parses raw source `String`
100+
content with a fresh symbol-solver-configured `JavaParser` per call —
101+
a small per-call allocation that lets `Analyzer` pass the file content
102+
directly (the orchestrator-level structured parser doesn't cover Java).
103+
Permissive parsing returns `JavaResolved` with a possibly-error-laden
104+
`CompilationUnit` rather than refusing — production analysis must keep
105+
going across files with syntax errors.
106+
- Four detectors migrated to consume `ctx.resolved()` (purely additive —
107+
every existing detector test passes unchanged):
108+
- **JpaEntityDetector**`MAPS_TO` edges between entities now carry
109+
`target_fqn` and `Confidence.RESOLVED` when the symbol solver can
110+
pin the relationship target's FQN (handles `@OneToMany List<Owner>`,
111+
`@ManyToOne Owner`, both direct-field and generic-arg cases).
112+
- **RepositoryDetector** — Spring Data repo `QUERIES` edges plus the
113+
repo node carry the resolved entity FQN (`entity_fqn` /
114+
`target_fqn`) when `JpaRepository<User, Long>` resolves.
115+
- **SpringRestDetector** — endpoints emit a `MAPS_TO` edge to the
116+
`@RequestBody` DTO class when the parameter type resolves, with
117+
`parameter_kind=request_body` + `parameter_name` properties for
118+
downstream consumers (SPA, MCP).
119+
- **ClassHierarchyDetector**`EXTENDS` / `IMPLEMENTS` edges across
120+
classes, interfaces, and enums now stamp `Confidence.RESOLVED` +
121+
`target_fqn` when the parent type resolves, collapsing four
122+
duplicated in-line edge-emission blocks into a single
123+
`addHierarchyEdge` helper as a side-benefit.
124+
- Backward compatibility is total: when no resolver is registered or
125+
`JavaSymbolResolver.bootstrap` fails, every detector returns the
126+
same simple-name-targeted edge shape it shipped before this slice.
127+
- 18 new wiring + resolved-mode tests on top of the SPI's ~290 — every
128+
migration ships with the plan-required three-mode coverage (resolved,
129+
fallback, mixed).
87130

88131
### Changed
89132

0 commit comments

Comments
 (0)