PureXML/docs/rules/README.md

39 lines
1.7 KiB
Markdown

# PureXML Rules
Load these rules before changing code:
- `code-style.md`
- `namespacing.md`
- `cross-platform.md`
- `testing.md`
- `verification.md`
- `commits.md`
- `research-first.md`
Project-specific overrides:
- PureXML uses a root `Package.swift`.
- Sources live directly under `Sources`.
- Tests live in `Tests` (test target `PureXMLTests`).
- `Package.swift` must keep `dependencies: []`.
- Public API must live under the `PureXML` namespace tree.
- The package must build on macOS, Linux, Windows, and WASI.
- Validation coverage gates: `docs/validation-coverage-registry.txt` (public types),
`docs/validation-field-registry.txt` (document/subject fields), enforced by
`scripts/check-validation-coverage.sh` and `scripts/check-validation-fields.sh`.
The broader rule files are retained for detailed guidance. When they include
generic examples, apply the PureXML-specific overrides above.
Canonical Swift rules are vendored at `docs/rules/rules-swift/` and mirrored
from `/Volumes/Code/DeveloperExt/public/rules-swift` (especially
`validation-rules.md`, `parsing-rules.md`, and the `core/` spine). Prefer that
vendored source when root `docs/rules/` copies are missing or have drifted, but
do not let its generic Tiledown examples weaken PureXML's root-package,
dependency-free, Windows, and WASI requirements. PureXML's committed
`.swiftlint.yml` and `.swiftformat` are the coherent project tuning of that
canon: they adopt its opt-in rule set and shared formatter directives, keep
stricter safety (`force_unwrapping`/`force_try`/`force_cast` = error), and
resolve the canon's `--commas always` vs default-`trailing_comma` mismatch by
mandating trailing commas in both tools.