<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0">
    <modelVersion>4.0.0</modelVersion>
    <groupId>build.jenesis</groupId>
    <artifactId>build.jenesis.repository.walk</artifactId>
    <version>0.1.0</version>
    <name>The shared artifact-walk SPI: one totally ordered, resumable, range-segmented, multi-node-aware enumeration of a
store's key space, kept separate from its implementation so the enumeration strategy can change without breaking a
consumer</name>
    <description>Everywhere the whole artifact set must be enumerated - garbage collection, retention eviction, every
derived-metadata rebuild - goes through {@code ArtifactWalk}, never a private {@code list()} loop. A walk pass is
durable in the walked store itself ({@code walks/&lt;consumer&gt;/...}): each segment is one compare-and-set state object
embedding its claim ({@code range, state, holder, expiry, cursor}), so threads &lt;em&gt;and different VMs&lt;/em&gt; take
disjoint segments, a checkpoint doubles as lease renewal, and a dead node's segment is reclaimed from its last
committed cursor - the walk never restarts from scratch. Delivery is exactly-once per pass in the absence of a
crash and at-least-once for the uncommitted stride tail after a crash-resume, so every consumer must be idempotent
per item. An implementation ships as its own module that {@code provides} a {@code WalkProvider}, discovered with
{@code ServiceLoader} and selected with {@code jenesis.repository.walk=&lt;name&gt;}; with none installed
{@code WalkProvider.resolve} is empty and every walk-riding surface degrades gracefully. {@code WalkConsumer} is
the walk half of the two-route derived-metadata contract (steady state = publication events; back-fill, periodic
refresh and self-heal = the walk), discovered the same way and driven by the shared {@code RebuildPass} - one
enumeration of the pointer roots feeding every discovered consumer.</description>
    <url>https://github.com/raphw/jenesis-repository</url>
    <licenses>
        <license>
            <name>Apache-2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
        </license>
    </licenses>
    <developers>
        <developer>
            <id>raphw</id>
            <name>Rafael Winterhalter</name>
            <email>rafael.wth@gmail.com</email>
        </developer>
    </developers>
    <scm>
        <connection>scm:git:https://github.com/raphw/jenesis-repository.git</connection>
        <developerConnection>scm:git:git@github.com:raphw/jenesis-repository.git</developerConnection>
        <url>https://github.com/raphw/jenesis-repository</url>
    </scm>
    <dependencies>
        <dependency>
            <groupId>build.jenesis</groupId>
            <artifactId>build.jenesis.repository.store</artifactId>
            <version>0.1.0</version>
        </dependency>
        <dependency>
            <groupId>build.jenesis</groupId>
            <artifactId>build.jenesis.repository.observation</artifactId>
            <version>0.1.0</version>
        </dependency>
    </dependencies>
</project>
