Completes first migration quality accessment

This commit is contained in:
torsten committed 2026-10-23 08:36:25 +00:00
1 parent 83f1333cd3
commit 575cc61247
2 files changed
+130 -1

No files matched your search

@@ -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.