36 — Tier-1 coarse reference scan on project create (CoarseScanner SPI +
Natural/Java scanners); durable ingestStatus lifecycle + warm concurrency cap.
40 — Unresolved-reference flag on placeholder nodes (search_identifier/inspect_node).
41 — Stale-source check: SourceHash per file, module_source/node_source return
STALE_SOURCE when the file on disk changed.
42 — Single refresh surface (REST/MCP/CLI) replacing ingest_all/ingest_module/
ingest-call-graph; ~20 ITs migrated. Full suite green (129 ITs + 55 unit).
RiskRepository-style repositories that get their Panache-ness through a
project base class (RiskRepository extends AbstractPurRepository<Risk,
String>, AbstractPurRepository implements PanacheRepositoryBase) never
resolved repositoryEntity, so db-accesses/sql-statements stayed empty
(J7). Parser now tags such a base class with panacheEntityTypeParam +
typeParams, and EXTENDS edges with typeArgs; a new
resolve-panache-inherited-entity enrichment step binds them to set
repositoryEntity before the existing resolve-java-db-access step runs.
J8 (constant-valued @Entity(name=...)) turned out to already work via
existing constant resolution — verified, no code change needed.
Adds JavaDbAccessInheritedRepoIT + fixtures; updates roadmap/features/
agent-module-analysis docs.
- Support class-to-class `CALLS` edges for typed-receiver, constructor, and static calls, spanning files consistently with Natural `CALLNAT`.
- Deduplicate placeholder module nodes for cross-class targets to avoid edge loss on merge-key collisions.
- Update `JavaParserTest` with new test for cross-class call graph resolution; expand IT test coverage.
- Extend docs and roadmap with implementation details and example use cases (e.g., `OrderController` fixture).
- Implement field-level dataflow for shared PDA fields across module boundaries (`field-flow` endpoint).
- Support `limit` and `offset` pagination in CLI commands (`callers`, `callees`, `search-identifier`, etc.).
- Add CLI test coverage for resolution logic and option parsing.
- Handle module-level placeholders for bare field references in Natural.
- AstEdge now carries the source line of the relationship; both parsers
populate it and Neo4j persists it as a relationship property so the
same edge at different lines is no longer deduped.
- Expose lineNo in callers/callees and variable read/write API responses.
- NaturalParser recognizes DECIDE FOR/ON as a CONTROL_FLOW block.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>