diff --git a/.agents/skills/polyxml-codegen-workflow/SKILL.md b/.agents/skills/polyxml-codegen-workflow/SKILL.md index a14af8c..3c23050 100644 --- a/.agents/skills/polyxml-codegen-workflow/SKILL.md +++ b/.agents/skills/polyxml-codegen-workflow/SKILL.md @@ -8,6 +8,17 @@ description: >- # PolyXML Polyglot Codegen Development & Verification Playbook +## CI generated-consumer prerequisites + +The Rust core tests execute Python dataclass/Pydantic models and call PolyXML XML +codecs. In the Rust CI job, install the editable Python extension with `[dev]` +extras into a dedicated Python 3.12+ venv **before** `cargo test`; prepend that +venv to `GITHUB_PATH` so subprocess `python3` uses the same interpreter. A local +gate's existing venv can hide this missing CI dependency. New all-seven consumer +tests require actual Java, Go, C++20, .NET and TypeScript tools; provision Node, +TypeScript, Java and Go explicitly rather than relying on the runner image. +Do not skip consumers to work around missing prerequisites. + ## Inherited simpleContent Normalize synthetic text fields only after root-level import/include merging and diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1461325..fec0d64 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,6 +34,34 @@ jobs: with: python-version: "3.12" + - name: Install uv + uses: astral-sh/setup-uv@v7 + + - name: Prepare Python generated-consumer environment + run: | + uv venv --python python .venv + uv pip install --python .venv/bin/python -e "./crates/polyxml-python[dev]" + echo "$PWD/.venv/bin" >> "$GITHUB_PATH" + + - name: Set up generated-consumer Node.js + uses: actions/setup-node@v7 + with: + node-version: "22" + + - name: Install generated-consumer TypeScript compiler + run: npm install --global typescript@5.9.3 + + - name: Set up generated-consumer Java + uses: actions/setup-java@v6 + with: + distribution: "temurin" + java-version: "25" + + - name: Set up generated-consumer Go + uses: actions/setup-go@v7 + with: + go-version: "1.26.x" + - name: Verify Multi-Language Version Parity run: python scripts/sync_version.py --check diff --git a/README.md b/README.md index 05bc108..a312cb9 100644 --- a/README.md +++ b/README.md @@ -100,11 +100,6 @@ polyxml generate schemas/uci.xsd --lang rust \ polyxml build --config polyxml.toml ``` -For Spring Boot 4, use `--backend jackson3`; `--backend jackson` retains Jackson 2 -for Spring Boot 3 applications. See the [Java guide](docs/languages/java.md#spring-boot-4-and-jackson-3) -for Boot-managed dependencies and the XML-text record customizer. Generated -models are verified on Java 25 with Spring Boot 4.1.1 in a dedicated CI job. - All 7 targets are declared in a single [`polyxml.toml` workspace manifest](docs/guides/compiler.md). ### Consume the Generated Models Instantly diff --git a/docs/languages/java.md b/docs/languages/java.md index a445aa8..f485aa0 100644 --- a/docs/languages/java.md +++ b/docs/languages/java.md @@ -54,7 +54,7 @@ optional and enabled with `--feature validation`. ## Spring Boot 4 and Jackson 3 Use `--backend jackson3` for Spring Boot 4. The `jackson`, `spring`, and -`spring-boot` backends retain Jackson 2 behavior for existing applications; +`spring-boot` backends retain Jackson 2 behavior for Spring Boot 3 applications; `jackson-3`, `jackson_3`, and `spring-boot-4` select Jackson 3. ```bash @@ -129,6 +129,8 @@ items, absent optional values, invalid requests, and XSD validation of returned ./scripts/verify_spring_boot.sh ``` +A dedicated CI job runs this integration fixture on Java 25 with Spring Boot 4.1.1. + See `tests/java-spring/` for the fixture. The test requires Maven and dependency downloads on its first run, so it is separate from the fast Rust test suites and runs in a dedicated Java 25 CI job.