# Public-type validation coverage manifest (validation-rules.md). # Every public type in the PureYAML target is classified exactly once. # Columns (tab-separated): # `validated`: carries a runtime invariant the type system does not enforce; backed by a # Validation in the framework phase. # `excluded`: a caseless namespace, a closed sum type whose illegal states are unrepresentable, # a pure data-transfer type, an error value, or engine/machinery that is not a validated subject. # scripts/check-validation-coverage.sh fails the build if a public type is missing here or a line # here is no longer public. # --- namespaces (caseless enums) --- PureYAML excluded caseless namespace; holds no instances or state PureYAML.Decoding excluded caseless namespace; holds no instances or state PureYAML.Emitting excluded caseless namespace; holds no instances or state PureYAML.Encoding excluded caseless namespace; holds no instances or state PureYAML.Model excluded caseless namespace; holds no instances or state PureYAML.Parsing excluded caseless namespace; holds no instances or state PureYAML.Stream excluded caseless namespace; holds no instances or state PureYAML.Tagged excluded caseless namespace; holds no instances or state PureYAML.Validation excluded caseless namespace; holds no instances or state # --- model --- PureYAML.Model.Value validated core YAML value; mapping-key uniqueness and merge/alias shape are runtime invariants PureYAML.Model.Mapping validated mapping keys must be unique within a mapping PureYAML.Model.Pair excluded data-transfer key/value pair; no invariant beyond its components PureYAML.Model.Key excluded closed sum type (string/sequence/mapping); illegal states unrepresentable # --- stream --- PureYAML.Stream.Document excluded wraps a validated Model.Value plus an index; no own invariant PureYAML.Stream.Issue excluded diagnostic data-transfer type PureYAML.Stream.Issue.Collection excluded error aggregate; data-transfer PureYAML.Stream.Result excluded diagnostic result data-transfer type # --- parsing --- PureYAML.Parsing.ParseError excluded error enum; cases are unrepresentable-illegal, carries diagnostics only PureYAML.Parsing.Parser excluded parsing engine; produces values, is not itself a validated subject # --- emitting --- PureYAML.Emitting.Dumper excluded emitter engine; not a validated subject PureYAML.Emitting.Options excluded emitter configuration; no cross-field invariant PureYAML.Emitting.CollectionStyle excluded closed enum; illegal states unrepresentable PureYAML.Emitting.ScalarStyle excluded closed enum; illegal states unrepresentable # --- decoding / encoding (Codable machinery) --- PureYAML.Decoding.Decoder excluded Codable decoding machinery; not a validated subject PureYAML.Decoding.Error excluded error enum; data-transfer PureYAML.Encoding.Encoder excluded Codable encoding machinery; not a validated subject PureYAML.Encoding.Error excluded error enum; data-transfer # --- tagged node subsystem --- PureYAML.Tagged.Node validated tagged node tree; mapping-key uniqueness is a runtime invariant PureYAML.Tagged.Mapping validated tagged mapping keys must be unique PureYAML.Tagged.Pair excluded data-transfer key/value pair PureYAML.Tagged.Scalar excluded data-transfer scalar (value + tag) PureYAML.Tagged.Sequence excluded data-transfer ordered nodes PureYAML.Tagged.Tag excluded data-transfer tag identifier PureYAML.Tagged.NodeKind excluded closed enum; illegal states unrepresentable PureYAML.Tagged.Document excluded wraps a validated Tagged.Node PureYAML.Tagged.Context excluded construction context data-transfer type PureYAML.Tagged.ConstructionContext excluded construction context data-transfer type PureYAML.Tagged.ConstructionError excluded error enum; data-transfer PureYAML.Tagged.Constructor excluded tag-construction engine; not a validated subject PureYAML.Tagged.Rule excluded validation machinery; duplicates Validation.Rule, slated for de-dup (principle 10) PureYAML.Tagged.Validator excluded validation machinery; duplicates Validation.Validator, slated for de-dup (principle 10) # --- validation framework's own types --- PureYAML.Validation.Validator excluded validation machinery; not a validated subject PureYAML.Validation.Rule excluded the Validation analog; a rule type, not a subject PureYAML.Validation.Context excluded validation context passed to checks; not a subject PureYAML.Validation.Issue excluded validation error data-transfer type PureYAML.Validation.Issue.Collection excluded error aggregate; data-transfer PureYAML.Validation.Result excluded validation result data-transfer type PureYAML.Validation.Severity excluded closed enum; illegal states unrepresentable PureYAML.Validation.Path excluded coding-path data-transfer type PureYAML.Validation.Path.Component excluded coding-path element; closed enum PureYAML.Validation.Report excluded diagnostic report data-transfer type PureYAML.Validation.ReportError excluded error type; data-transfer PureYAML.Validation.SourceReport excluded diagnostic report data-transfer type PureYAML.Validation.Source excluded source descriptor data-transfer type PureYAML.Validation.BatchReport excluded diagnostic report data-transfer type PureYAML.Validation.Diagnostic excluded diagnostic data-transfer type PureYAML.Validation.DiagnosticKind excluded closed enum; illegal states unrepresentable PureYAML.Validation.PreflightScanner excluded pre-parse scanner engine; not a validated subject