PureYAML/Sources/Tagged
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
..
Tagged.Check.Builtins.swift feat(validation): enforce tagged mapping-key uniqueness 2026-06-28 17:03:20 +02:00
Tagged.ConstructionContext.swift feat(tagged): add typed constructor policy 2026-06-05 16:24:11 +02:00
Tagged.ConstructionError.swift feat(tagged): add typed constructor policy 2026-06-05 16:24:11 +02:00
Tagged.Constructor.swift fix(ci): prepare 0.1.0 release 2026-06-05 21:20:20 +02:00
Tagged.Document.swift feat(tagged): add tag-preserving validation 2026-06-05 15:35:52 +02:00
Tagged.EventComposer.swift feat(tagged): add tag-preserving validation 2026-06-05 15:35:52 +02:00
Tagged.Mapping.swift refactor(code-style): one top-level type per source file 2026-06-26 06:14:21 +02:00
Tagged.Node.ModelValue.swift feat(tagged): add typed constructor policy 2026-06-05 16:24:11 +02:00
Tagged.Node.swift refactor(code-style): one top-level type per source file 2026-06-26 06:14:21 +02:00
Tagged.NodeKind.swift refactor(code-style): one top-level type per source file 2026-06-26 06:14:21 +02:00
Tagged.Pair.swift refactor(code-style): one top-level type per source file 2026-06-26 06:14:21 +02:00
Tagged.Parser.swift feat(tagged): add tag-preserving validation 2026-06-05 15:35:52 +02:00
Tagged.Scalar.swift refactor(code-style): one top-level type per source file 2026-06-26 06:14:21 +02:00
Tagged.Sequence.swift refactor(code-style): one top-level type per source file 2026-06-26 06:14:21 +02:00
Tagged.Tag.swift feat(tagged): add tag-preserving validation 2026-06-05 15:35:52 +02:00
Tagged.Validator.swift feat(validation): enforce tagged mapping-key uniqueness 2026-06-28 17:03:20 +02:00