YAML Norway Problem (Boolean Coercion)
The Norway problem in full: eleven bare words that a YAML 1.1 resolver turns into booleans, a matching quoted control group that survives, and a country-code list where position two silently becomes false. The definitive fixture for resolver-version behaviour.
# The Norway problem. Under the YAML 1.1 resolver — PyYAML, SnakeYAML's default, Ruby Psych —
# every bare word below on the left of the `unquoted` map resolves to a BOOLEAN. The country
# code for Norway becomes false, `y` and `n` become true and false, and `on`/`off` join them.
# YAML 1.2's core schema resolves only true and false, so most of this stays a string there.
#
# The fix is always the same: quote it. The `quoted` map shows the same values surviving.
unquoted:
norway: NO
yes_word: yes
no_word: no
on_word: on
off_word: off
y_letter: y
n_letter: n
true_word: true
false_word: false
True_title: True
OFF_upper: OFF
quoted:
norway: "NO"
yes_word: "yes"
on_word: "on"
y_letter: "y"
country_codes:
- GB
- NO
- SE
- FI
expected_note: >-
Under YAML 1.1 the country_codes list contains a boolean in position two.
Under YAML 1.2 core it contains four strings.
Specifications
- Coerced Under Yaml11
- 11
- Quoted Controls
- 4
- Country Code Affected
- NO
- Yaml12 Core Schema
- only true/false resolve as boolean
Testing contract
Expected to recover- Scenario
- Load a document containing bare NO, yes, on, off, y and n under each YAML schema version
- Expected result
- A YAML 1.1 loader returns booleans for all eleven unquoted values including NO, while a YAML 1.2 core-schema loader returns strings for all but true and false
What is a .yaml file?
YAML (YAML Ain't Markup Language) is a human-readable data-serialization format using indentation, key-value pairs, and lists, and is a superset of JSON. It supports comments, anchors, and multiple documents per file, favoring readability for configuration. Its indentation sensitivity makes it error-prone to hand-edit.
How to use this file
Use an example YAML file to test config parsers, indentation and anchor handling, multi-document streams, and safe-loading to avoid arbitrary object construction.
How to use this file for testing
“YAML Norway Problem (Boolean Coercion)” is a deterministic Novus Examples fixture for Config parsing, Encoding detection, Editor testing. TOML and INI configuration files with nested sections and typed values — for testing config parsers and loaders.
Documented properties for this file: YAML · 916 bytes. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
Pipeline and infrastructure fixtures are inert configuration: steps reference fictional images and scripts, and nothing here executes. Run your linter, schema validator, migrator, or policy engine against them, and expect the deprecated-syntax and intentionally invalid variants to be rejected.
Point your config loader at the file and assert it reads the documented sections and typed values, including any deliberately-tricky nesting or comments.
Code examples
import yaml # pip install pyyaml
with open("norway-problem.yaml") as f:
data = yaml.safe_load(f)
print(data)Related files
- yamlYAML Anchors and AliasesAnchors and aliases across mapping, sequence and scalar nodes, including an anchor nested inside another anchored node. The point most tooling misses: an alias is a reference to the same node, so a shallow-loading parser can share mutable state between jobs.

- yamlYAML Block Scalars and Chomping IndicatorsEvery block-scalar variation in one file: literal and folded styles, all three chomping indicators, an explicit indentation indicator, a folded block with a paragraph break, and an embedded shell-shaped script whose own indentation must survive.

- yamlYAML Bounded Anchor ReuseNested anchor reuse kept deliberately small: two anchors, six references, thirty-one expanded nodes. It is here to test alias resolution and expansion accounting on a safe input, and is explicitly not a billion-laughs expansion bomb.

- yamlYAML Directives and CommentsA two-document stream where each document declares its own %YAML directive and the second adds a %TAG handle used by a local tag. Comments appear in every position they are legal, and every one of them is lost by a non-round-tripping loader.

- yamlYAML Duplicate KeysDuplicate keys at three nesting levels, including a duplicated top-level sequence. The spec forbids them; most loaders keep the last silently, a few keep the first, and strict linters reject the document. The file publishes the last-wins answer.

- yamlYAML Explicit and Local TagsExplicit tags across the standard set — !!str, !!float, !!int, !!bool, !!null, !!binary, !!timestamp, !!omap, !!set — alongside two application-local ! tags. CI dialects use local tags in the wild, so a pipeline parser has to decide whether to reject, ignore, or resolve them.

Generated by generation/pipelines.py. Free for any use, no attribution required — license.