Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .agents/skills/polyxml-codegen-workflow/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
28 changes: 28 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
5 changes: 0 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 3 additions & 1 deletion docs/languages/java.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down
Loading