8.6 KiB
Project Quality Run 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. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Persist and execute four project quality checks, then require a matching passed Quality Run for certified download.
Architecture: Add a Run/Check ledger and a scheduled worker with conditional claims. The real executor uses an isolated source workspace, the existing MySQL preview initializer, bounded command execution, and the existing run-preview service for API smoke. Delivery readiness reads the latest run matching the current Generation Run and aggregate hash.
Tech Stack: Java 8, Spring, MyBatis, MySQL, JUnit 4, Mockito, Vue 3, Element Plus, Node test runner, Vite.
Global Constraints
- Quality Run identity is server-derived from the current user, project, Generation Run and aggregate hash.
- Persist only sanitized summaries and bounded logs; never persist credentials, JDBC URLs or raw environment maps.
- Add schema to the upgrade script,
front_workbench.sql, anddb.sqlin the same task. - Do not freeze downloadable ZIP bytes in P1-L.
- Do not change model credential or TLS development configuration.
Task 1: Quality Run schema and mapper
Files:
- Create:
sql/factory_project_quality_run.sql - Modify:
sql/front_workbench.sql - Modify:
sql/db.sql - Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/factory/quality/model/ProjectQualityRun.java - Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/factory/quality/model/ProjectQualityCheck.java - Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/factory/ProjectQualityRunMapper.java - Create:
ruoyi-generator/src/main/resources/mapper/factory/ProjectQualityRunMapper.xml - Test:
ruoyi-generator/src/test/java/com/ruoyi/generator/factory/quality/ProjectQualityRunSchemaScriptTest.java - Test:
ruoyi-generator/src/test/java/com/ruoyi/generator/factory/quality/ProjectQualityRunMapperContractTest.java
Interfaces:
-
Produces mapper operations to insert a Run and four checks, query current/active runs, claim queued work, update checks, finish runs, and interrupt expired runs.
-
Write schema and mapper contract tests that require both tables in all three SQL files, immutable identity columns, unique check constraints, bounded claim queries and user/project-scoped reads.
-
Run the two tests and confirm they fail because files and mapper operations are absent.
-
Add models, SQL and mapper operations with conditional status transitions.
-
Parse all mapper XML and run the tests until green.
Task 2: Run creation, query and worker state machine
Files:
- Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/factory/quality/ProjectQualityRunService.java - Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/factory/quality/ProjectQualityRunWorker.java - Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/factory/quality/ProjectQualityExecution.java - Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/factory/quality/ProjectQualityExecutor.java - Test:
ruoyi-generator/src/test/java/com/ruoyi/generator/factory/quality/ProjectQualityRunServiceTest.java - Test:
ruoyi-generator/src/test/java/com/ruoyi/generator/factory/quality/ProjectQualityRunWorkerTest.java
Interfaces:
-
ProjectQualityRunService.create(Long userId, Long projectId)returns the existing active run or creates one Run plus four checks. -
ProjectQualityRunService.list/getLatestenforce project ownership. -
ProjectQualityExecutor.execute(ProjectQualityRun run)returns four ordered check executions. -
Write failing tests for server-derived identity, active-run idempotency, ownership, fixed check order, all-pass completion, partial failure and interrupted lease release.
-
Run tests and confirm RED.
-
Implement transactional creation/query and the scheduled conditional-claim worker.
-
Run focused tests until green.
Task 3: Real quality executor
Files:
- Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/factory/quality/ProjectQualityWorkspace.java - Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/factory/quality/ProjectQualityCommandRunner.java - Create:
ruoyi-generator/src/main/java/com/ruoyi/generator/factory/quality/DefaultProjectQualityExecutor.java - Test:
ruoyi-generator/src/test/java/com/ruoyi/generator/factory/quality/ProjectQualityWorkspaceTest.java - Test:
ruoyi-generator/src/test/java/com/ruoyi/generator/factory/quality/ProjectQualityCommandRunnerTest.java - Test:
ruoyi-generator/src/test/java/com/ruoyi/generator/factory/quality/DefaultProjectQualityExecutorTest.java
Interfaces:
-
Workspace safely extracts the current source ZIP under
easycode.quality.workspace-rootand rejects traversal. -
Command runner returns exit code, duration, timeout flag and a sanitized bounded log.
-
Executor runs
JAVA_TEST,FRONTEND_BUILD,SQL_IMPORT,API_SMOKEin fixed order and always cleans database, preview and workspace resources. -
Write failing tests for ZIP traversal, backend/frontend discovery, command timeout/log truncation, four-check ordering and cleanup on failure.
-
Run tests and confirm RED.
-
Implement the workspace, runner and executor using existing preview services.
-
Run focused tests until green.
Task 4: Delivery readiness and HTTP API
Files:
- Modify:
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/front/dto/ProjectDeliveryReadiness.java - Modify:
ruoyi-generator/src/main/java/com/ruoyi/generator/service/front/ProjectDeliveryReadinessServiceImpl.java - Modify:
ruoyi-admin/src/main/java/com/ruoyi/web/controller/front/FrontProjectController.java - Modify:
ruoyi-generator/src/test/java/com/ruoyi/generator/service/front/ProjectDeliveryReadinessServiceImplTest.java - Modify:
ruoyi-admin/src/test/java/com/ruoyi/web/controller/front/FrontProjectControllerRunPreviewTest.java
Interfaces:
-
Delivery readiness exposes
baselineReadyand latest sanitized Quality Run details. -
qualityAcceptedrequires a matchingPASSEDQuality Run; certified download continues to use the same server gate. -
Controller exposes create/list/latest endpoints using
SecurityUtils.getUserId()only. -
Write failing tests for no run, failed run, stale run, passed matching run, controller ownership and certified download gating.
-
Run tests and confirm RED.
-
Implement readiness integration and APIs.
-
Install the generator module and run admin tests until green.
Task 5: EasyCode quality report
Files:
- Modify:
easycode-web/src/api/project.js - Modify:
easycode-web/src/components/ProjectDeliveryReadinessPanel.vue - Modify:
easycode-web/src/views/GenerateView.vue - Modify:
easycode-web/src/components/projectDeliveryReadinessPanel.test.mjs
Interfaces:
-
API exposes create/list/latest Quality Run calls.
-
Panel emits
start-quality-run, renders four checks, and disables duplicate starts while queued/running. -
Generate view polls the latest run and refreshes delivery readiness on terminal status.
-
Write failing source-contract tests for API methods, four check labels, start/retry action and terminal refresh.
-
Run tests and confirm RED.
-
Implement API, panel and polling integration.
-
Run EasyCode main-flow tests and production build until green.
Task 6: Regression and roadmap
Files:
-
Modify:
docs/superpowers/specs/2026-07-10-ai-software-factory-roadmap.md -
Modify:
docs/superpowers/specs/2026-07-12-project-quality-run-design.md -
Modify:
docs/superpowers/plans/2026-07-12-project-quality-run.md -
Run P1-H through P1-L focused backend tests and
ruoyi-adminfull tests. -
Run EasyCode focused tests and
npm run build. -
Parse Mapper XML, inspect SQL consistency, check whitespace and verify
http://localhost:5174. -
Record P1-L completion, validation evidence and the remaining P1-M artifact-freezing boundary.
Completion Record
- Completed on 2026-07-12.
- P1-H through P1-L focused backend suite: 50 tests passed.
ruoyi-adminfull suite: 43 tests passed.- EasyCode main-flow suite: 73 tests passed; production build passed.
- Quality Run Mapper XML parsed successfully, SQL consistency tests passed, and
http://localhost:5174returned HTTP 200. - No external database migration was executed. Deployments must apply
sql/factory_project_quality_run.sqlor the synchronized aggregate schema. - P1-M remains open: certified downloads still regenerate ZIP bytes at request time and do not yet serve an immutable, hashed artifact frozen from the passed Quality Run.