Implement a Qt6 replacement for the legacy Qt5/Grantlee5 CodeGen parser and integrate it into the Qt6 build flow. Context: - Legacy parser A (Qt5 + Grantlee5): `./qt-migration-legatus/qt5-before/qt5-legatus-legacy/Lts/Common/CodeGen` - Replacement parser B (Qt6 + KTextTemplate): `./qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Common/CodeGen` - Docker build entry: `./app/Dockerfile` - Relevant macros: - `./qt-migration-legatus/qt5-before/qt5-legacy-legatus/cmake/MacroCodeGenIdl.cmake` - `./qt-migration-legatus/qt6-after/qt6-migrated-legatus/cmake/MacroCodeGenIdl.cmake` Goals: 1. Analyze how A is built and invoked in the Qt5 flow. 2. Make B build reproducibly via `./app/Dockerfile` with Qt6 + KTextTemplate. 3. Find all relevant `*grantlee*` input files and test B against all of them. 4. Fix/extend B only as needed to support real repository inputs. 5. Integrate B into the Qt6 codegen/build flow based on how A is invoked. 6. Update the relevant CMake/macro wiring. 7. Preserve existing Qt6 migration work. Requirements: - Use Docker for building B. - Use Docker to create and remove folders/files - Inspect real call sites before changing integration. - Keep changes small and reviewable. - Touch Qt5-side files only if needed for analysis/comparison/minimal build clarity. - If Grantlee behavior cannot be matched exactly in KTextTemplate, implement the best practical transitional solution and document remaining gaps. - `./qt-migration-legatus/qt5-before/qt5-legacy-legatus` is read-only Done when: - B builds successfully through `./app/Dockerfile` - all relevant `*grantlee*` inputs were tested with B - Qt6 build flow uses B instead of Grantlee5 dependency - macro/CMake integration is updated - remaining incompatibilities are documented - provide a concise summary of changed files, test results, and open gaps - commit and push in `./qt-migration-legatus/qt6-after/qt6-migrated-legatus` after user feedback