6.5 KiB
FT546WMS Takeover Readiness 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: Produce a testable candidate that reports equivalent outbound failures correctly, refreshes reliably, and never dispatches a blocked rear outbound before its relocation completes.
Architecture: Keep Legacy as the production executor while hardening observation and dispatch safety. Separate refresh timeout from request comparison timeout; classify outbound comparisons by business meaning; enforce the relocation dependency both before WMS HTTP dispatch and, where the WCS contract permits, before WCS execution. ACTIVE takeover remains disabled until a dedicated mutation adapter and field evidence exist.
Tech Stack: Java 17, Spring Boot, MyBatis, SQL Server 2016, JUnit 5, Mockito, PowerShell integration fixtures.
Spec: User instruction in this thread: relocation precedes associated outbound; completion and inventory update release outbound; WCS must guard bypasses; unrelated channels continue normally.
Global Constraints
- No production switch, restart, synthetic production task, or business-data mutation during implementation.
- Existing mixed-pilot lane scope and Legacy allocation behavior remain unchanged.
- Every behavior change follows red-green testing and is independently revertible.
- SQL Server 2016 syntax only; no online dependency downloads are assumed.
Task 1: Outbound comparison semantics
Files:
- Modify:
ruoyi-admin/src/test/java/com/ruoyi/algorithm/shadow/ShadowPlanningEngineTest.java - Modify:
ruoyi-admin/src/main/java/com/ruoyi/algorithm/shadow/ShadowPlanningEngine.java
Interfaces:
-
Consumes:
OutboundShadowObservation.resultCode()and Legacy numeric result code. -
Produces: stable
MATCH,DIFFERENT,NOT_COMPARABLEcomparison codes while retaining raw evidence inreason. -
Add a failing test proving shadow
ERROR_STOCK_NOT_FOUNDplus Legacy3is an equivalent no-inventory outcome, and successful/technical/skipped cases are not falsely matched. -
Run only
ShadowPlanningEngineTestand observe the exactLEGACY_3failure. -
Add a private outbound comparison classifier; do not alter planning or Legacy execution.
-
Re-run focused and shadow-module tests.
-
Commit independently.
Task 2: Dedicated refresh timeout
Files:
- Modify:
ruoyi-admin/src/test/java/com/ruoyi/algorithm/shadow/ShadowConfigurationTest.java - Modify:
ruoyi-admin/src/test/java/com/ruoyi/algorithm/shadow/ShadowPlanningEngineTest.java - Modify:
ruoyi-admin/src/main/java/com/ruoyi/algorithm/shadow/ShadowObservationProperties.java - Modify:
ruoyi-admin/src/main/java/com/ruoyi/algorithm/shadow/ShadowPlanningEngine.java - Modify:
ruoyi-admin/src/main/java/com/ruoyi/algorithm/shadow/ShadowSafetyGuard.java - Modify:
ruoyi-admin/src/main/resources/application.yml
Interfaces:
-
Consumes:
FORTUCKY_SHADOW_REFRESH_TIMEOUT_SECONDS, default 10 seconds. -
Produces: a refresh-only transaction timeout; the 3-second Legacy comparison deadline stays unchanged.
-
Add failing property/guard tests and a transaction-manager test that distinguishes planning timeout from refresh timeout.
-
Run focused tests and observe missing property/incorrect timeout failure.
-
Use separate transaction templates or per-refresh timeout without sharing mutable template state.
-
Re-run focused and shadow-module tests.
-
Commit independently.
Task 3: WMS dispatch dependency gate
Files:
- Create or modify focused mapper/service files under
ruoyi-admin/src/main/java/com/ruoyi/apiandruoyi-admin/src/main/resources/mapperafter locating the existing job mapper contract. - Create: focused JUnit test for
ToWcsServiceImpl.pushOutMydoJob(). - Modify:
scripts/mixed-pilot/tests/behavior.sqlonly if an SQL regression is required by the confirmed race.
Interfaces:
-
Consumes: candidate outbound job plus current lane obstruction / unresolved relocation state.
-
Produces: dispatch decision
READYorWAITING_FOR_RELOCATION; only READY calls WCS and advances status. -
Add a failing service test: blocked rear outbound makes zero HTTP calls, unrelated/front outbounds still dispatch, and completing relocation makes the rear job dispatch exactly once.
-
Reproduce the task-creation race in the SQL scratch fixture if it bypasses the existing status-8 trigger.
-
Add the smallest read-only pre-dispatch guard and atomic claim/update boundary supported by current service patterns.
-
Re-run Java and SQL mixed-pilot regression suites.
-
Commit independently.
Task 4: WCS defense and release candidate
Files:
- Modify only the actual FT546-WCS receiving/execution module identified by repository audit.
- Add focused WCS tests at its receive or execution seam.
- Add deployment and rollback notes under
scripts/in each affected repository.
Interfaces:
-
Consumes: WMS job payload and WCS current/declared dependency evidence.
-
Produces: explicit accepted/waiting/rejected behavior without treating HTTP receipt as physical completion.
-
Add a failing WCS test proving a blocked rear task cannot enter executable state, including manual/replayed payloads.
-
Implement the minimal defense compatible with the existing WMS/WCS contract; if WCS lacks authoritative obstruction data, reject ambiguous rear tasks rather than inventing state.
-
Run both repository test suites and inspect package contents offline.
-
Prepare versioned artifacts and rollback scripts; do not deploy or switch without a maintenance decision.
-
Request independent code review and address findings.
Task 5: ACTIVE takeover gate
Files:
- No production code change until Tasks 1-4 and field evidence pass.
- Update readiness documentation with exact remaining mutation adapter and rollback requirements.
Interfaces:
-
Consumes: verified planner result and explicit operator mode.
-
Produces: a future single-writer execution path, never simultaneous Legacy and algorithm allocation.
-
Preserve
ShadowSafetyGuardrejection of ACTIVE in this candidate. -
Define endpoint-by-endpoint single-writer tests before adding any ACTIVE mutation adapter.
-
Require fresh inbound, successful outbound, no-inventory outbound, refresh and relocation field evidence before implementation approval.
-
Do not claim formal takeover readiness merely because the candidate builds.