4.4 KiB
Preview SQL Delivery Rehearsal Implementation Plan
For agentic workers: Implement task-by-task with tests first. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Add the first reviewed real SQL delivery Plugin, a non-secret manual target probe, and an end-to-end isolated rehearsal.
Architecture: A normal installed FeaturePlugin owns immutable classpath apply/rollback SQL. Existing Plan 1.2 and sql-jdbc:v1 execute it. A separate read-only probe validates the guarded target connection and receipt ledger without executing a contribution.
Tech Stack: Java 8, Spring Boot 2.5, JDBC, Druid MySQL AST, H2 1.4.200, JUnit 4, Mockito, Vue 2.
Global Constraints
- Installing the Plugin must not publish or execute it automatically.
- The SQL target remains disabled by default.
- Probe and Registry APIs must never expose URL, username, password, SQLState, or driver errors.
- Tests use the real SQL resources, planner, resolver, parser, Executor, and H2 target ledger.
- Existing plaintext development credentials and TLS verification settings remain out of scope by explicit user decision.
Task 1: Delivery Plugin Contract
Files:
-
Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/factory/plugin/delivery/PreviewDatabaseBaselinePlugin.java -
Create:
ruoyi-generator/src/main/resources/plugin-delivery/preview-baseline/V1__preview_delivery_baseline.sql -
Create:
ruoyi-generator/src/main/resources/plugin-delivery/preview-baseline/U1__preview_delivery_baseline.sql -
Test:
ruoyi-generator/src/test/java/com/ruoyi/generator/factory/plugin/delivery/PreviewDatabaseBaselinePluginTest.java -
Write failing tests for trusted manifest identity, declared payload/resource identity, idempotence, reversibility, and parser acceptance.
-
Implement the installed Plugin and dedicated apply/rollback resources.
-
Run the Plugin contract tests and confirm they pass.
Task 2: End-To-End Preview Rehearsal
Files:
-
Modify:
ruoyi-generator/src/test/java/com/ruoyi/generator/factory/plugin/delivery/PreviewDatabaseBaselinePluginTest.java -
Write a failing H2 test for Plan 1.2 apply, trusted re-resolution, execution, duplicate delivery, and compensation.
-
Reuse production planner, resolver, SQL parser, Executor, and target ledger in the test.
-
Confirm one marker row, one apply execution, one compensation execution, and final table removal.
Task 3: Read-Only Target Probe
Files:
-
Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/factory/plugin/model/PluginSqlTargetProbeStatus.java -
Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/factory/plugin/execution/sql/PluginSqlTargetProbeService.java -
Modify:
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/FeaturePluginController.java -
Test:
ruoyi-generator/src/test/java/com/ruoyi/generator/factory/plugin/execution/sql/PluginSqlTargetProbeServiceTest.java -
Test:
ruoyi-generator/src/test/java/com/ruoyi/generator/controller/FeaturePluginControllerTest.java -
Write failing tests for disabled, invalid, ready, unreachable, and ledger-unavailable states.
-
Implement the guarded zero-row receipt-ledger probe and generic status messages.
-
Expose the permission-protected probe endpoint and prove the response model has no secret fields.
-
Run probe and controller tests and confirm they pass.
Task 4: Admin Probe State
Files:
-
Modify:
ruoyi-ui/src/api/generator/plugin.js -
Modify:
ruoyi-ui/src/views/generator/plugin/index.vue -
Modify:
ruoyi-ui/test/pluginRegistryView.test.mjs -
Write a failing static contract for the probe API, loading state, result state, and non-secret rendering.
-
Add the manual probe command and concise last-result label to the Registry status band.
-
Run frontend static tests and the production build.
Task 5: Documentation And Regression
Files:
-
Modify:
docs/superpowers/specs/2026-07-10-ai-software-factory-roadmap.md -
Modify:
docs/superpowers/plans/2026-07-11-preview-sql-delivery-rehearsal.md -
Document the first delivery Plugin, activation order, probe semantics, and remaining production boundary.
-
Run focused Plugin/SQL/probe tests.
-
Run the generator full regression and compare with the 18 documented baseline failures.
-
Run admin critical tests, frontend static tests, and production build.
-
Confirm EasyCode and RuoYi UI endpoints return HTTP 200.