3.4 KiB
AgenticCode Roadmap — Open Tasks
This is a living task list of the remaining work. Completed features have
been moved to x-docs/features.md (with full implementation notes); this file
tracks only items that are still open.
Parser / model
- Persisted per-language source/module kind — add an
AstNodeproperty capturing each module's finer kind beyond the coarseNodeType: Natural program / subprogram / copycode / map / data-area (LDA/PDA/GDA), Java class / interface / enum / record. Requires real sub-kind detection in both parsers (extension alone only distinguishes program vs data-area), persistence (+ optional index), and a re-ingest. Enables API filtering ("list all subprograms / interfaces / data areas") and uniform language-agnostic handling. Split out from the duplicate-detection fix (which branches on the in-memorySourceFiles.Kindat ingest time and needed none of this).
Java analysis fidelity (graph modeling)
Motivated by a batch-job analysis pass over the PUR pur-batch module
(2026-07-06): 9 concrete AbstractPurBatchJob subclasses. The graph confirmed
findings at the step-class level, but three structural gaps forced the work to
be source-driven rather than graph-driven. Root cause: the Java graph models
only direct method/constructor calls, not the framework/DI/JPA indirection PUR
actually runs on. J1a-J9 done (see x-docs/features.md); J1b remains open.
- J1b. Parse
@Query/JPQL/native-SQL strings + derived-name filters (Java) (found 2026-07-06) — J1a resolves calls whose entity is syntactically recoverable (repository generic param,em.persist/merge/remove(arg), Panache active-record receiver). Still open: parse@Query/JPQL/native-SQL strings into table + mode, and derived query-method names (findAllByClient→ READ +filter=client). Also open: repositories with no generic entity type (e.g. a customIRiskRepositoryinterface) — needs symbol resolution / an entity-hint, since pure syntactic parsing can't recover the entity.
Ingest performance
-
24.
ingest-allperformance: parallel parse phase — the parse phase ofingestAllis sequential, butJavaParser.parse()/NaturalParser.parse()are stateless (a freshcom.github.javaparser.JavaParserper call; method-local node/edge lists), so files can be parsed concurrently (Java 21 virtual threads are enabled). Parse all candidates in parallel, keep duplicate-detection and thepersist/finalizeProjectphases sequential. Especially impactful for Java, where building a fullCompilationUnitis the CPU-heavy step. Note: ingest log ordering becomes non-deterministic; consider a configurable parallelism bound via@ConfigProperty. Depends on item 23 (done). -
25.
ingest-allperformance: batch persist transactions —persiststill opens one transaction/session per file. Batch the node/edge MERGEs across many files into fewer, larger transactions (UNWIND), cutting per-file transaction round-trip overhead. Lower impact than items 23/24; do last.
Integration & ops
-
9.
docker-compose.yml— untracked file at repo root provides a dev Neo4j container. Either commit it and reference it from the README's "Getting Started" (replacing/augmenting the manualdocker runcommand), or remove it if superseded. -
10. Push local commits to remote —
mainis currently ahead oforigin/main; push when ready.