30 lines
1.9 KiB
Markdown
30 lines
1.9 KiB
Markdown
# Redis Topology Lane Java Migration Implementation Plan
|
|
|
|
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task.
|
|
|
|
**Goal:** Remove the last adapter-level procedural Groovy test lifecycle logic by moving Redis topology qualification into a typed Java convention plugin.
|
|
|
|
**Architecture:** `ca.redis-topology-lane` belongs in `build-logic`: it configures the default test exclusion, declares the strict `redisTopologyTest` lane, validates mode/properties, forwards topology system properties, and verifies executed required classes/no skips. The Redis leaf keeps only plugin and dependency declarations.
|
|
|
|
**Tech Stack:** Java 21, Gradle 9, JUnit Platform test tasks.
|
|
|
|
**Spec:** `docs/superpowers/specs/2026-09-16-verification-surface-reduction-design.md`
|
|
|
|
## Constraints
|
|
- Preserve supported modes: standalone, sentinel, cluster, tls.
|
|
- Preserve TLS deployment-mode mapping to standalone.
|
|
- Preserve required property and required executed-class semantics.
|
|
- Preserve fail-closed behavior for unknown mode and skipped topology tests.
|
|
- Keep `redisTopologyTest` opt-in; do not add it to normal `check`.
|
|
- Do not stage, commit, amend, or push.
|
|
|
|
### Task 1: Typed topology contract
|
|
- [ ] Write failing Java tests for mode validation, required properties, class coverage, and skipped-test rejection.
|
|
- [ ] Implement typed contract/result records and get focused tests GREEN.
|
|
|
|
### Task 2: Java convention plugin
|
|
- [ ] Implement `RedisTopologyLanePlugin` using `StrictTestLaneExtension` and a Java `TestListener` tracker.
|
|
- [ ] Register `ca.redis-topology-lane` in build-logic.
|
|
- [ ] Apply it in cache-redis and remove the Groovy topology lifecycle/configuration block.
|
|
- [ ] Verify build-logic tests, Redis unit `check`, task configuration, invalid-mode fail-closed behavior, and `git diff --check`.
|