From d63218256c9e4832b161e4a54ed018bdba0a3382 Mon Sep 17 00:00:00 2001 From: Mihaela Mihaljevic Date: Sun, 5 Jul 2026 05:31:16 +0200 Subject: [PATCH] chore(release): stamp 0.4.8 from main and repoint to codeberg.org/Mihaela The earlier release/0.4.8 branch stamped the changelog but the tag was never cut, and main moved 60 commits past it. Fold the accumulated unreleased entries into the still-unpublished 0.4.8 section, redate it, repoint every remaining github.com/mihaelamj reference (badges, support links, roadmap, the XSLT vendor-url system property), and track the shared-rules baseline v1.1.2. --- .github/ISSUE_TEMPLATE/config.yml | 4 ++-- .rules-version | 1 + CHANGELOG.md | 5 ++++- README.md | 16 ++++++++-------- SUPPORT.md | 4 ++-- Sources/XSLT/XSLTFunctions.swift | 2 +- docs/roadmap.md | 12 ++++++------ docs/rules-swift-audit.md | 2 +- 8 files changed, 25 insertions(+), 21 deletions(-) create mode 100644 .rules-version diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 137d78f..e50a5de 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,8 +1,8 @@ blank_issues_enabled: false contact_links: - name: Questions and ideas - url: https://github.com/mihaelamj/PureXML/discussions + url: https://codeberg.org/Mihaela/PureXML/discussions about: Ask questions, float ideas, or discuss design in Discussions. - name: Security issue - url: https://github.com/mihaelamj/PureXML/blob/main/SECURITY.md + url: https://codeberg.org/Mihaela/PureXML/blob/main/SECURITY.md about: Do not file security issues publicly. Follow the security policy instead. diff --git a/.rules-version b/.rules-version new file mode 100644 index 0000000..45a1b3f --- /dev/null +++ b/.rules-version @@ -0,0 +1 @@ +1.1.2 diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fcb40d..4b37d88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +Nothing yet. + +## [0.4.8] - 2026-07-05 + ### Changed - A generated-value facet differential against libxml2 (`FacetValidationDifferentialTests`, opt-in via `FACET_DIFF` and `xmllint`) exercises the datatype and facet value space, the largest correctness surface the determinism and instance-content differentials do not touch: for each generated simple type restricting a built-in (`xs:int`, `decimal`, `double`, `string`, `token`, `boolean`, `date`, `dateTime`, `nonNegativeInteger`) by a subset of its facets (min/maxInclusive/Exclusive, length/min/maxLength, totalDigits/fractionDigits, pattern, enumeration, whiteSpace), it validates a pool of values chosen at and around the facet boundaries with PureXML and with libxml2 and flags every disagreement, asserting the cardinal rule (zero values PureXML rejects that libxml2 accepts). Over about ten thousand values it found one false positive, the `NaN` enumeration fixed below, and otherwise zero; the residual false negatives are contested datatype readings (whitespace collapse, `NaN` against a range facet) where PureXML matches the XSD spec and this libxml2 build is stricter. Test-only. @@ -53,7 +57,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - XSTS invalid-schemas-accepted (#145): a particle restriction whose restricting element has a union-typed base element now applies Type Derivation OK (Simple) (`cos-st-derived-ok`) rather than structural member subsetting. The NameAndTypeOK type clause (ยง3.9.6) requires the restricting element's type to be validly derived from the base element's type; PureXML accepted a *separately declared* union whenever its member types were a subset of the base union's members, which is not the spec's derivation relation. The restricting type is now valid over a union base only if it is the base type, derives from it through a declared restriction chain, or (clause 2.2.4) validly derives from one of the union's member types. Catches particlesIk011 (a fresh `union(integer)` is not a restriction of `union(integer, string)`): invalid-schemas-accepted 9 to 8, with valid-schemas-rejected held at 0 (verified over the full XSTS; the change is scoped to the element-restriction path, so no attribute or simple-type derivation check moved). Disclosed divergence: particlesIk025/Ik027, where the restricting type derives from a union *member*, are accepted per `cos-st-derived-ok` clause 2.2.4, a contested reading their XSTS `invalid` expectation does not share. -## [0.4.8] - 2026-06-27 ### Removed diff --git a/README.md b/README.md index 960a61d..d885bde 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # PureXML -[![Style and namespacing](https://github.com/mihaelamj/PureXML/actions/workflows/style.yml/badge.svg)](https://github.com/mihaelamj/PureXML/actions/workflows/style.yml) -[![Swift macOS](https://github.com/mihaelamj/PureXML/actions/workflows/swift-macos.yml/badge.svg)](https://github.com/mihaelamj/PureXML/actions/workflows/swift-macos.yml) -[![Swift Linux](https://github.com/mihaelamj/PureXML/actions/workflows/swift-linux.yml/badge.svg)](https://github.com/mihaelamj/PureXML/actions/workflows/swift-linux.yml) -[![Swift Windows](https://github.com/mihaelamj/PureXML/actions/workflows/swift-windows.yml/badge.svg)](https://github.com/mihaelamj/PureXML/actions/workflows/swift-windows.yml) -[![Swift WASM](https://github.com/mihaelamj/PureXML/actions/workflows/swift-wasm.yml/badge.svg)](https://github.com/mihaelamj/PureXML/actions/workflows/swift-wasm.yml) -[![XSTS conformance](https://github.com/mihaelamj/PureXML/actions/workflows/swift-xsts.yml/badge.svg)](https://github.com/mihaelamj/PureXML/actions/workflows/swift-xsts.yml) +[![Style and namespacing](https://codeberg.org/Mihaela/PureXML/actions/workflows/style.yml/badge.svg?branch=main)](https://codeberg.org/Mihaela/PureXML/actions?workflow=style.yml) +[![Swift macOS](https://codeberg.org/Mihaela/PureXML/actions/workflows/swift-macos.yml/badge.svg?branch=main)](https://codeberg.org/Mihaela/PureXML/actions?workflow=swift-macos.yml) +[![Swift Linux](https://codeberg.org/Mihaela/PureXML/actions/workflows/swift-linux.yml/badge.svg?branch=main)](https://codeberg.org/Mihaela/PureXML/actions?workflow=swift-linux.yml) +[![Swift Windows](https://codeberg.org/Mihaela/PureXML/actions/workflows/swift-windows.yml/badge.svg?branch=main)](https://codeberg.org/Mihaela/PureXML/actions?workflow=swift-windows.yml) +[![Swift WASM](https://codeberg.org/Mihaela/PureXML/actions/workflows/swift-wasm.yml/badge.svg?branch=main)](https://codeberg.org/Mihaela/PureXML/actions?workflow=swift-wasm.yml) +[![XSTS conformance](https://codeberg.org/Mihaela/PureXML/actions/workflows/swift-xsts.yml/badge.svg?branch=main)](https://codeberg.org/Mihaela/PureXML/actions?workflow=swift-xsts.yml) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) PureXML is a dependency-free XML package written entirely in Swift. @@ -20,7 +20,7 @@ intentionally strict about portability: - root Swift package layout - macOS, Linux, Windows, and WASI build gates -It is a sibling project to [PureYAML](https://github.com/mihaelamj/PureYAML) and +It is a sibling project to [PureYAML](https://codeberg.org/Mihaela/PureYAML) and follows the same structure, rules, and verification gates. ## Roadmap @@ -142,7 +142,7 @@ flowchart TB ## Status -**Current focus:** production readiness for IDE use ([#167](https://github.com/mihaelamj/PureXML/issues/167)). XSTS settled baselines (valid schemas rejected / invalid schemas accepted / valid instances rejected / invalid instances accepted), enforced in `Tests/XSTSSuiteTests.swift`: **0 / 39 / 0 / 26**. See [`docs/roadmap.md`](docs/roadmap.md) for milestones and open tasks. +**Current focus:** production readiness for IDE use ([#167](https://codeberg.org/Mihaela/PureXML/issues/167)). XSTS settled baselines (valid schemas rejected / invalid schemas accepted / valid instances rejected / invalid instances accepted), enforced in `Tests/XSTSSuiteTests.swift`: **0 / 39 / 0 / 26**. See [`docs/roadmap.md`](docs/roadmap.md) for milestones and open tasks. PureXML is a working, dependency-free XML library today: parse, emit, validate, query, and stream documents on macOS, Linux, Windows, and WASM. The test suite diff --git a/SUPPORT.md b/SUPPORT.md index 5669cb9..80792d9 100644 --- a/SUPPORT.md +++ b/SUPPORT.md @@ -2,8 +2,8 @@ Need help with PureXML? Here is where to go. -- **Questions and ideas**: open a [Discussion](https://github.com/mihaelamj/PureXML/discussions). -- **Bug reports**: open an [issue](https://github.com/mihaelamj/PureXML/issues/new/choose) +- **Questions and ideas**: open a [Discussion](https://codeberg.org/Mihaela/PureXML/discussions). +- **Bug reports**: open an [issue](https://codeberg.org/Mihaela/PureXML/issues/new/choose) using the bug form. - **Feature requests**: open an issue using the feature form. - **Security issues**: do not open a public issue. See [SECURITY.md](SECURITY.md). diff --git a/Sources/XSLT/XSLTFunctions.swift b/Sources/XSLT/XSLTFunctions.swift index 2483d89..7b2f725 100644 --- a/Sources/XSLT/XSLTFunctions.swift +++ b/Sources/XSLT/XSLTFunctions.swift @@ -322,7 +322,7 @@ extension PureXML.XSLT { switch localPart(name) { case "version": .number(1.0) case "vendor": .string("PureXML") - case "vendor-url": .string("https://github.com/mihaelamj/PureXML") + case "vendor-url": .string("https://codeberg.org/Mihaela/PureXML") default: .string("") } } diff --git a/docs/roadmap.md b/docs/roadmap.md index 73ffb2a..1468206 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -1,6 +1,6 @@ # Roadmap -Living index of open work. **Pin [#167](https://github.com/mihaelamj/PureXML/issues/167)** on GitHub for the checklist view. Released **v0.2.0** (2026-06-16); pre-1.0 until the production-readiness gates in `docs/production-readiness.md` are earned. +Living index of open work. **Pin [#167](https://codeberg.org/Mihaela/PureXML/issues/167)** on GitHub for the checklist view. Released **v0.4.8** (2026-07-05); pre-1.0 until the production-readiness gates in `docs/production-readiness.md` are earned. ## Current focus (priority order) @@ -9,7 +9,7 @@ Living index of open work. **Pin [#167](https://github.com/mihaelamj/PureXML/iss 3. **#169**: located schema diagnostics (line/column). 4. **#172โ€“#174**: instance-validation cluster tasks. -Parallel: **#130** (XSLT suite), **#139** (performance epic; tasks [#175](https://github.com/mihaelamj/PureXML/issues/175)โ€“[#178](https://github.com/mihaelamj/PureXML/issues/178)). +Parallel: **#130** (XSLT suite), **#139** (performance epic; tasks [#175](https://codeberg.org/Mihaela/PureXML/issues/175)โ€“[#178](https://codeberg.org/Mihaela/PureXML/issues/178)). **M1 done:** #171 schema differential harness (closed; opt-in; 231 XSTS oracle disagreements pinned) + generative fuzz + validation framework (#92). @@ -19,10 +19,10 @@ These mirror the ratchet asserted in `Tests/XSTSSuiteTests.swift`; update both t | Gate | Now | Issue | |---|---|---| -| Valid schemas rejected | 0 | [#148](https://github.com/mihaelamj/PureXML/issues/148) | -| Invalid schemas accepted | 43 | [#145](https://github.com/mihaelamj/PureXML/issues/145) | -| Valid instances rejected | 0 | [#146](https://github.com/mihaelamj/PureXML/issues/146) | -| Invalid instances accepted | 31 | [#147](https://github.com/mihaelamj/PureXML/issues/147) | +| Valid schemas rejected | 0 | [#148](https://codeberg.org/Mihaela/PureXML/issues/148) | +| Invalid schemas accepted | 43 | [#145](https://codeberg.org/Mihaela/PureXML/issues/145) | +| Valid instances rejected | 0 | [#146](https://codeberg.org/Mihaela/PureXML/issues/146) | +| Invalid instances accepted | 31 | [#147](https://codeberg.org/Mihaela/PureXML/issues/147) | Gates are **metric trackers**, not implementation tasks. Pick up **task** issues; ratchet baselines in `Tests/XSTSSuiteTests.swift` when counts fall. diff --git a/docs/rules-swift-audit.md b/docs/rules-swift-audit.md index 787eacc..8bed57f 100644 --- a/docs/rules-swift-audit.md +++ b/docs/rules-swift-audit.md @@ -3,7 +3,7 @@ Date: 2026-06-30 This audit checks PureXML against the Swift rule set at -. It separates mechanical proof from +. It separates mechanical proof from architecture findings. Fill every row before claiming conformance. A row left at `Gap` or `Partial` keeps `scripts/check-rules-swift.sh` red, which is the intended behavior until the repo actually conforms.