Files
agenticCode/x-docs/roadmap.md
Ingo Schnabel c49901e919 Payload and sql
2026-07-13 14:29:39 +02:00

3.6 KiB
Raw Blame History

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.

All remaining items are postponed as of 2026-07-13 (43 auto-invalidation, 24/25 ingest-all performance, 26 MCP session reliability). No active roadmap work is scheduled; revisit when prioritised.

Lazy / deferred ingest (three-tier model)

Reworks ingest from eager whole-project parsing into a lazy, on-demand model. Three tiers: Tier 1 = cheap eager reference index (per file: nodes, identifiers, coarse call/DB references — no deep bodies); Tier 2 = lazy deep ingest (control flow, statement-level dataflow, precise reads/writes) triggered on demand; Tier 3 = source served from the filesystem, no longer stored on nodes. Reverse queries (callers, search_identifier, flow_backward) stay answerable because Tier 1 pre-indexes coarse references globally.

Items 36–42 are done (Tier-1 reference index + tri-state status, Tier-2 lazy deep-ingest, depth/node caps, unresolved-reference nodes, Tier-3 source-from-disk with stale check, and the refresh surface) — see x-docs/features.md. The only open item in this track:

  • 43. Automatic invalidation (deferred) — file-watch / hash-based staleness detection that auto-transitions changed modules back to not-ingested. Deferred; refresh (item 42) covers the gap until then. Would also address the current gap where a whole-project refresh MERGEs current files but does not remove nodes for deleted files (orphans linger until a clean wipe + re-ingest).

Ingest performance

  • 24. ingest-all performance: parallel parse phase — the parse phase of ingestAll is sequential, but JavaParser.parse()/NaturalParser.parse() are stateless (a fresh com.github.javaparser.JavaParser per 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 the persist/finalizeProject phases sequential. Especially impactful for Java, where building a full CompilationUnit is 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-all performance: batch persist transactions — persist still 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.

Agent API / MCP tooling gaps

  • 26. MCP session reliability (investigated 2026-07-07, not fixed — see below) — mcp__agenticcode__module_functions (and potentially other MCP tools) intermittently failed with "the first message from the client must be initialize: tools/call" after a sequence of prior successful MCP calls in the same session, forcing a fallback to the equivalent REST endpoint. Findings: no session/idle-timeout is configured server-side (quarkus.http.idle-timeout unset), and application.properties only sets quarkus.mcp.server.server-info.*. The error shape (client sent tools/call without a fresh initialize) points at the MCP client's reconnect handling on a new SSE stream, not a server-side bug this codebase's config can fix. Left open pending either a quarkus-mcp-server-sse version bump with related fixes, or evidence this is in fact server-triggered.