Root Swift package mirroring PureYAML's structure, rules, and verification gates. Includes the XML node model (Node, Element, Attribute, QualifiedName), a working emitter (Serializer) with escaping and pretty/compact options, and structural validation. The parser surface is stable; parse() raises notImplemented until the scanner lands, pinned by a test. - dependency-free, namespaced under PureXML - portability and style gates carried over (style, namespacing, forbidden patterns, swiftformat, swiftlint, linux, wasm, windows CI) - 11 tests passing
41 lines
1.4 KiB
Markdown
41 lines
1.4 KiB
Markdown
# Verification Before Completion
|
|
|
|
Never claim a PureXML change is complete without fresh command output from the
|
|
relevant gates.
|
|
|
|
## Required Gate
|
|
|
|
Run this local gate before committing or reporting completion:
|
|
|
|
```sh
|
|
bash scripts/check-style.sh
|
|
bash scripts/check-namespacing.sh
|
|
bash scripts/check-forbidden-patterns.sh
|
|
bash scripts/check-changelog-touched.sh
|
|
swiftformat . --config .swiftformat --lint
|
|
swiftlint --config .swiftlint.yml --strict
|
|
swift build
|
|
swift test
|
|
bash scripts/check-linux.sh
|
|
bash scripts/check-wasm.sh
|
|
```
|
|
|
|
Hosted CI must also pass the Windows job, which runs `scripts/check-windows.ps1`.
|
|
|
|
## Claims and Evidence
|
|
|
|
| Claim | Required evidence |
|
|
|---|---|
|
|
| Style clean | `scripts/check-style.sh` exits 0 |
|
|
| Namespace clean | `scripts/check-namespacing.sh` exits 0 |
|
|
| Forbidden-pattern clean | `scripts/check-forbidden-patterns.sh` exits 0 |
|
|
| Format clean | `swiftformat . --config .swiftformat --lint` exits 0 |
|
|
| Lint clean | `swiftlint --config .swiftlint.yml --strict` exits 0 |
|
|
| Builds on macOS | `swift build` exits 0 |
|
|
| Tests pass | `swift test` exits 0 and reports zero failures |
|
|
| Linux compatible | `bash scripts/check-linux.sh` exits 0 |
|
|
| Windows compatible | hosted `scripts/check-windows.ps1` exits 0 |
|
|
| WASI compatible | `bash scripts/check-wasm.sh` exits 0 |
|
|
|
|
If a tool is unavailable, say so explicitly and do not claim that gate passed.
|