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
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,17 @@ public interface CountStore extends VelocityBackend {
* APPLIED|FAILED|SKIPPED} — a {@code SKIPPED} being a backend-owned outcome such as an idempotent
* replay) alongside the {@link FeatureResult} (ADR 0009, FR-34).
*
* <p>The result cardinality is <strong>one {@link
* com.codeheadsystems.velocity.spi.model.PerFeature PerFeature} per {@code (intent × each of the
* intent's feature's windows)}</strong>, not one per intent: a feature tracked over several
* windows contributes one entry per window, each carrying that window's post-apply value. The
* entries are therefore not positionally aligned with {@code intents}; disambiguate by the
* entry's feature and its {@link com.codeheadsystems.velocity.spi.model.FeatureValue#window()
* window}.
*
* @param ctx the namespace + optional deadline context
* @param intents the count intents to apply
* @return the per-intent apply outcomes, positionally aligned with {@code intents}
* @return one apply outcome per {@code (intent × the intent's feature's windows)}
*/
ApplyResult applyCount(ApplyContext ctx, List<CountIntent> intents);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,17 @@ public interface DistinctStore extends VelocityBackend {
* com.codeheadsystems.velocity.spi.model.ApplyStatus apply status} ({@code
* APPLIED|FAILED|SKIPPED}) alongside the {@link FeatureResult} (ADR 0009, FR-34).
*
* <p>The result cardinality is <strong>one {@link
* com.codeheadsystems.velocity.spi.model.PerFeature PerFeature} per {@code (intent × each of the
* intent's feature's windows)}</strong>, not one per intent: a feature tracked over several
* windows contributes one entry per window, each carrying that window's post-apply value. The
* entries are therefore not positionally aligned with {@code intents}; disambiguate by the
* entry's feature and its {@link com.codeheadsystems.velocity.spi.model.FeatureValue#window()
* window}.
*
* @param ctx the namespace + optional deadline context
* @param intents the distinct intents to apply
* @return the per-intent apply outcomes, positionally aligned with {@code intents}
* @return one apply outcome per {@code (intent × the intent's feature's windows)}
*/
ApplyResult applyDistinct(ApplyContext ctx, List<DistinctIntent> intents);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,17 @@ public interface SumStore extends VelocityBackend {
* com.codeheadsystems.velocity.spi.model.ApplyStatus apply status} ({@code
* APPLIED|FAILED|SKIPPED}) alongside the {@link FeatureResult} (ADR 0009, FR-34).
*
* <p>The result cardinality is <strong>one {@link
* com.codeheadsystems.velocity.spi.model.PerFeature PerFeature} per {@code (intent × each of the
* intent's feature's windows)}</strong>, not one per intent: a feature tracked over several
* windows contributes one entry per window, each carrying that window's post-apply value. The
* entries are therefore not positionally aligned with {@code intents}; disambiguate by the
* entry's feature and its {@link com.codeheadsystems.velocity.spi.model.FeatureValue#window()
* window}.
*
* @param ctx the namespace + optional deadline context
* @param intents the sum intents to apply
* @return the per-intent apply outcomes, positionally aligned with {@code intents}
* @return one apply outcome per {@code (intent × the intent's feature's windows)}
*/
ApplyResult applySum(ApplyContext ctx, List<SumIntent> intents);

Expand Down
4 changes: 0 additions & 4 deletions velocity-testkit/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,9 @@ dependencies {
// contract; both are on the api surface so backend modules inherit them from their tests.
api(project(":velocity-spi"))
api(libs.jspecify)
api(libs.bundles.jackson)
// AssertJ is on the api surface because the *Scenarios TCK asserts with `assertThat`; backend
// modules drive these scenarios from their integration tests and inherit the dependency.
api(libs.assertj.core)

implementation(libs.caffeine)
implementation(libs.slf4j.api)

testRuntimeOnly(libs.logback.classic)
}
Loading
Loading