PureXML/docs/rules/README.md
Mihaela Mihaljevic c6f305357c chore(rules): align lint config and pointer with canonical rules-swift
Make public/rules-swift the canonical source (per project direction) and adopt
its opt-in lint rules that PureXML lacked: empty_count, explicit_init, first_where,
sorted_first_last, unused_import, plus its todo disable. All pass with zero
violations on the existing sources.

PureXML keeps its coherent, stricter tuning where the canon is a self-described
'starting point': force_unwrapping/force_try/force_cast = error (safety), and
trailing commas mandated in both swiftformat (--commas always) and swiftlint
(mandatory_comma) to resolve the canon's formatter-adds vs linter-flags mismatch.
docs/rules/README.md now points at public/rules-swift and documents the tuning.
2026-06-18 20:30:46 +02:00

1.4 KiB

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 live at /Volumes/Code/DeveloperExt/public/rules-swift (especially validation-rules.md and parsing-rules.md). Prefer that source when docs/rules/ copies drift. 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.