PureYAML/Sources/Validation
Mihaela M 47960a85c8 feat(validation): enforce tagged mapping-key uniqueness
The coverage manifest claimed Tagged.Mapping and Tagged.Node validate key
uniqueness, but the tagged validator's only default check was the built-in
tag check: the claim was false. Tagged.Mapping keeps every parsed pair, so a
duplicate key survives into the tree and is as invalid as in the plain model.

Add Tagged.BuiltinCheck.mappingKeysAreUnique, a Check<Mapping, Node> on the
one validation framework, to the tagged validator's defaults; the traversal
now offers each mapping to the checks. It reports each duplicate at its key
path, with failing, near-miss, and nested fixtures, and the two default
tagged checks are pinned by description.

Correct the Model.Value coverage reason: merges and aliases resolve at parse
time, so they are not a validation-phase invariant. Every validated manifest
entry now names an invariant a check actually enforces. 403 tests pass.
2026-06-28 17:03:20 +02:00
..
AnyCheck.swift refactor(validation): fold the tagged validator onto one framework 2026-06-28 10:41:10 +02:00
Check.Builtins.swift refactor(validation): retire the legacy Rule for one check type 2026-06-28 16:43:31 +02:00
Check.Combinators.swift refactor(validation): fold the tagged validator onto one framework 2026-06-28 10:41:10 +02:00
Check.swift refactor(validation): fold the tagged validator onto one framework 2026-06-28 10:41:10 +02:00
DiagnosticValidation.swift
Issue.Collection.swift
Issue.swift
Path.Component.swift
Path.swift
PreflightScanner.swift
Result.swift
Severity.swift
SubjectContext.swift refactor(validation): fold the tagged validator onto one framework 2026-06-28 10:41:10 +02:00
Validatable.swift feat(validation): enforce tagged mapping-key uniqueness 2026-06-28 17:03:20 +02:00
Validation.BatchReport.swift
Validation.Diagnostic.swift
Validation.DiagnosticKind.swift
Validation.Report.swift
Validation.ReportError.swift
Validation.Source.swift
Validation.SourceReport.swift
Validator.swift refactor(validation): retire the legacy Rule for one check type 2026-06-28 16:43:31 +02:00