57 lines
3.1 KiB
Markdown
57 lines
3.1 KiB
Markdown
# Plugin Local H2 Delivery Rehearsal Implementation Plan
|
|
|
|
> **For agentic workers:** Implement task-by-task with tests first. Steps use checkbox (`- [ ]`) syntax for tracking.
|
|
|
|
**Goal:** Execute all six delivery rehearsal scenarios against an ephemeral local H2 target and persist integrity-verifiable evidence without enabling external MySQL.
|
|
|
|
**Architecture:** A control-plane coordinator persists Attempt and Receipt state through conditional MyBatis updates. `PluginDeliveryLocalH2Sandbox` creates one isolated MySQL-mode H2 database per Attempt and reuses the trusted SQL, permission, and menu JDBC Executors. The execution service runs ordered scenarios synchronously and verifies evidence on read.
|
|
|
|
**Tech Stack:** Java 8, Spring Boot 2.5, MyBatis, H2 MySQL mode, JUnit 4, Vue 2, Element UI.
|
|
|
|
### Task 1: Attempt And Receipt Ledger
|
|
|
|
- [x] Add `LOCAL_H2` Attempt and Scenario Receipt models.
|
|
- [x] Add control tables, unique identities, Run/Scenario foreign keys, and status indexes to all three schema scripts.
|
|
- [x] Add conditional start, finish, fail, and abort Mapper updates.
|
|
- [x] Bind every Attempt to the immutable parent Run fingerprints.
|
|
|
|
### Task 2: Local H2 Session
|
|
|
|
- [x] Package H2 at runtime without importing H2 APIs into production source.
|
|
- [x] Create a unique in-memory database and destroy it on Session close.
|
|
- [x] Seed only the parent menu, role, target Receipt, permission ownership, and menu ownership contracts required by the baseline.
|
|
- [x] Resolve all baseline content from installed trusted Plugin releases.
|
|
- [x] Reuse the production SQL, permission, and menu Executors.
|
|
|
|
### Task 3: Six Scenarios
|
|
|
|
- [x] Execute approval request/approval with separation evidence.
|
|
- [x] Execute request expiry and approval revocation.
|
|
- [x] Execute SQL, permission, and menu mixed apply.
|
|
- [x] Create a target Receipt failure and retry the exact same idempotency identity.
|
|
- [x] Execute menu, permission, and SQL compensation in reverse order.
|
|
- [x] Require all target state and Receipt assertions before a Scenario succeeds.
|
|
|
|
### Task 4: Recovery And Evidence
|
|
|
|
- [x] Persist canonical evidence and SHA-256 per terminal Receipt.
|
|
- [x] Verify ordered Scenario identity, evidence fingerprints, counts, and Attempt state on detail reads.
|
|
- [x] Permit replay links only from failed or aborted Attempts.
|
|
- [x] Permit manual abort only from pending or running Attempts.
|
|
- [x] Keep raw evidence JSON and all local connection details out of REST responses.
|
|
|
|
### Task 5: API And Workspace
|
|
|
|
- [x] Add start, list, detail, and abort endpoints under `generator:delivery:verify`.
|
|
- [x] Add Attempt history, progress, replay, abort, and evidence actions to the delivery report.
|
|
- [x] Render evidence in a responsive expandable table.
|
|
- [x] Keep external target selection absent.
|
|
|
|
### Task 6: Regression
|
|
|
|
- [x] Run 182 focused Plugin tests with no failures.
|
|
- [x] Run 825 generator tests: 807 pass and the exact 18 known baseline failures remain.
|
|
- [x] Run 38 admin tests and four frontend contract tests.
|
|
- [x] Run the production frontend build with only the three existing warning classes.
|
|
- [x] Confirm both development endpoints still return HTTP 200.
|