diff --git a/prompts/verify-legatus-qt6-migration.prompt.md b/prompts/verify-legatus-qt6-migration.prompt.md new file mode 100644 index 000000000..3de3f74e6 --- /dev/null +++ b/prompts/verify-legatus-qt6-migration.prompt.md @@ -0,0 +1,129 @@ +# Strict Qt5-to-Qt6 Migration and Regression Verification + +This is an implementation and validation task. Work autonomously, keep changes minimal, and do not modify unrelated files. + +## Fixed scope + +Work only on branch: + +`feature/regression-arcgis300-symbology-migration` + +Compare these exact directories recursively: + +- Qt5 reference, read-only: + `./qt-migration-legatus/qt5-before/qt5-legatus-legacy/` +- Qt6 target, writable: + `./qt-migration-legatus/qt6-after/qt6-migrated-legatus/` + +Do not swap, reinterpret, or invent paths. Never modify the Qt5 reference tree. + +## Mandatory Docker and build rules + +All analysis, comparison, source changes, builds, and tests must run inside Docker. Do not run compilers, CMake, Make, Ninja, CTest, Python tests, or application tests directly on the host. + +Use only this authoritative build and test script: + +`./qt6-migration-pipeline/qt-migration-legatus/qt6-after/qt6-migrated-legatus/new_docker_build.sh` + +Do not use another script or invent an alternative build procedure. + +Before doing any project analysis or modification: + +1. Read the complete script. +2. Verify its actual options, defaults, environment variables, Docker mounts, build groups, targets, test commands, logs, and failure behavior. +3. Build the script's prebuilt Docker image. +4. Use that same freshly built image for all subsequent work. + +Only use options that actually exist in the script. In particular, verify the real behavior of: + +- `--build-prebuilt-image` +- `--use-prebuilt-image` +- `--docker-image` +- `--tests-only` +- `--integration-test` +- `--no-ctest` +- `--group1` through `--group12` +- `--build-viewer-only` +- `--arcgis` +- `--grantlee` +- `--codification` +- `--cmake_build_flags` + +If the image cannot be built, stop and report the exact command, exit code, error, and blocker. + +## Tests + +Existing tests are located at: + +`./qt6-migration-pipeline/qt-migration-legatus/qt6-after/qt6-migrated-legatus/tests` + +Before adding tests, inspect and follow the existing directory structure, naming convention, CMake registration, and execution pattern. + +Every new regression test must be placed in that same `tests` tree and registered through the existing test mechanism. Do not create tests elsewhere unless the repository convention demonstrably requires it. + +## Verification procedure + +1. Compare the Qt5 and Qt6 trees recursively and functionally, not only by filename. +2. Classify every relevant difference as: + - correctly migrated + - missing migration + - regression or behavioral difference + - intentionally changed + - intentionally removed + - build/packaging-only + - generated or obsolete + - test-related + - unclear or blocked +3. Check source files, headers, APIs, CMake targets, dependencies, resources, UI files, plugins, configuration, code generation, tests, and active Qt5 references. +4. Check ArcGIS 300 Symbology with the appropriate `--arcgis` configuration. +5. Run the relevant build and test groups through the authoritative script. Prefer grouped execution when supported by the script. +6. Record every command, option, group, target, test, exit code, and log path. + +## Regression handling + +For every reproducible regression or missing migration: + +1. Reproduce it inside Docker. +2. Identify the root cause using the Qt5/Qt6 comparison and build/test logs. +3. Apply the smallest valid fix in the Qt6 tree or required test/build files. +4. Add a deterministic regression test under the required `tests` directory. +5. Register it using the existing CMake/test convention. +6. Re-run the affected build group and test through the authoritative script. +7. Re-run all other relevant tests affected by the change. + +Do not disable tests or targets, hide failures with `--no-ctest`, use dummy implementations, or replace generated outputs manually. + +## Success criteria + +The task succeeds only if: + +- the prebuilt Docker image was built before project work began; +- all project analysis, changes, builds, and tests ran inside Docker; +- every build and regression test used the authoritative script; +- all relevant build groups and tests were executed and passed; +- the Qt5/Qt6 comparison was complete and every relevant difference was classified; +- required Qt5 functionality exists in Qt6 or has a documented, justified replacement; +- ArcGIS 300 Symbology was validated, or the exact blocker and unvalidated scope are reported; +- every fixed regression has a deterministic regression test in the required test tree; +- the Qt5 tree is unchanged; +- no tests, targets, or functionality were disabled to claim success. + +A skipped, failed, or unavailable relevant check means the result cannot be reported as fully validated. + +## Final report + +Provide a factual report containing: + +- status: `VALIDATED`, `PARTIALLY VALIDATED`, or `BLOCKED`; +- branch and exact directories checked; +- Docker image name, image-build command, exit code, and result; +- authoritative script path and verified options; +- commands, groups, targets, tests, exit codes, and log paths; +- classified Qt5/Qt6 differences; +- regressions, root causes, fixes, and added tests; +- ArcGIS 300 Symbology result; +- changed files; +- skipped or failed checks with exact blockers; +- remaining risks. + +Do not claim complete migration or regression-free behavior without concrete, reproducible evidence. diff --git a/qt-migration-legatus b/qt-migration-legatus index c39dbec31..bec2a14ce 160000 --- a/qt-migration-legatus +++ b/qt-migration-legatus @@ -1 +1 @@ -Subproject commit c39dbec31ff5c59712669bb765485e2412337dc8 +Subproject commit bec2a14ce26cf3c0dc73fc90a83315f086bcce70