Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions docs/architecture/persistence-ownership.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Graph Persistence Ownership

Status: adopted for the Core/Extensions split. Reviewed 2026-10-24.

ARGI Core owns the graph persistence contracts and reference implementations.
This repository owns optional durable backends and their operational behavior.
The decision is tracked with Core issue
[#190](https://github.com/agentic-ai-java/argi/issues/190).

## Owned modules

| Module | Owner scope | Core contract consumed |
| --- | --- | --- |
| `argi-graph-persistence-jdbc` | H2, MySQL, PostgreSQL and Oracle checkpoint savers and `DatabaseStore` | `BaseCheckpointSaver`, `Store`, serializers |
| `argi-graph-persistence-mongodb` | MongoDB checkpoint saver | `BaseCheckpointSaver`, serializers |
| `argi-graph-persistence-redis` | Redis checkpoint saver, versioned CAS, leases, Redis Store and RunStore | checkpoint, lease and runtime contracts |

These modules are the only maintenance locations for durable JDBC, MongoDB and
Redis graph persistence. Backend schemas, keys, transaction behavior, driver
versions, leases, retention and recovery tests stay here.

## Compatibility rules

- The modules consume `argi-loop-core`; no module depends on the removed
`argi-graph-core` coordinate for the persistence path.
- Existing Java package names in the Extensions adapters remain unchanged.
- Existing checkpoint fields, serializer markers, database table names, Redis
keys, namespace encoding and configuration meanings remain unchanged.
- The old Core backend classes are removed rather than kept as a second
implementation. Consumers migrate to the Extensions artifacts listed in the
module table.
- Cross-version compatibility tests may use the last published graph artifact
as a test-only historical writer; it is never a production dependency.
- The Extensions BOM must publish the persistence modules with the matching
Core version.

## Required backend evidence

Each module must keep tests for history/release, retention, serializer
compatibility, concurrent access and backend restart behavior. Redis additionally
must cover revision CAS, lease fencing and durable RunStore commit semantics.
Tests that require PostgreSQL, MySQL, Oracle, MongoDB or Redis must clearly
remain integration tests; an in-memory mock is not evidence of backend
durability.

## Deliberate non-goals

This migration does not rename `graph-persistence` artifacts, change wire
formats, change serializer ownership, or move the neutral `Store` and
`CheckpointSaver` contracts into Extensions. It also does not update unrelated
Extensions consumers of the historical graph coordinate; those belong to their
own migration tasks.
7 changes: 7 additions & 0 deletions graph-persistence/argi-graph-persistence-jdbc/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,17 @@
</properties>

<dependencies>
<dependency>
<groupId>io.github.agentic-ai-java</groupId>
<artifactId>argi-loop-core</artifactId>
<version>${argi.loop.version}</version>
</dependency>

<dependency>
<groupId>io.github.agentic-ai-java</groupId>
<artifactId>argi-graph-core</artifactId>
<version>${argi.version}</version>
<scope>test</scope>
</dependency>

<dependency>
Expand Down
7 changes: 7 additions & 0 deletions graph-persistence/argi-graph-persistence-mongodb/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,17 @@
</scm>

<dependencies>
<dependency>
<groupId>io.github.agentic-ai-java</groupId>
<artifactId>argi-loop-core</artifactId>
<version>${argi.loop.version}</version>
</dependency>

<dependency>
<groupId>io.github.agentic-ai-java</groupId>
<artifactId>argi-graph-core</artifactId>
<version>${argi.version}</version>
<scope>test</scope>
</dependency>

<dependency>
Expand Down
13 changes: 10 additions & 3 deletions graph-persistence/argi-graph-persistence-redis/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@
<dependencies>
<dependency>
<groupId>io.github.agentic-ai-java</groupId>
<artifactId>argi-graph-core</artifactId>
<version>${argi.version}</version>
<artifactId>argi-loop-core</artifactId>
<version>${argi.loop.version}</version>
</dependency>

<dependency>
Expand All @@ -49,11 +49,18 @@
<version>${redisson.version}</version>
</dependency>

<dependency>
<groupId>io.github.agentic-ai-java</groupId>
<artifactId>argi-loop-core</artifactId>
<version>${argi.loop.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>

<dependency>
<groupId>io.github.agentic-ai-java</groupId>
<artifactId>argi-graph-core</artifactId>
<version>${argi.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>

Expand Down
2 changes: 2 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,8 @@
<!-- ARGI Version -->
<revision>2.1.0-RC2-SNAPSHOT</revision>
<argi.version>2.1.0-RC1</argi.version>
<argi.loop.version>2.1.0-RC2-SNAPSHOT</argi.loop.version>
<argi.loop.version>2.1.0-RC2-SNAPSHOT</argi.loop.version>

<!-- Maven project basic config -->
<java.version>17</java.version>
Expand Down
Loading