{
  "id": 2117535,
  "title": "Your CI stack ships four YAML parsers and half of them are still on the 2009 spec",
  "url": "https://urgent.news/2026/08/20/your-ci-stack-ships-four-yaml-parsers-and-half-of-them-are-still-on",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-08-20T10:37:09.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/webgaudi/your-ci-stack-ships-four-yaml-parsers-and-half-of-them-are-still-on-the-2009-spec-15hf"
  },
  "original_language": "en",
  "account": "The article discusses the issue of YAML parsers and their compatibility with different specifications. It highlights that many teams have YAML parsers in their pipelines that are still on the 2009 specification, despite YAML 1.2 fixing certain issues in that year. The article provides examples of different YAML parsers being used in various contexts such as Ansible playbooks, Go controllers, Java services, Ruby tools, and more. It explains how these parsers can interpret the same YAML file in different ways, leading to discrepancies in the parsed values.\n\nFor instance, the article mentions a scenario where the \"mode\" key is interpreted differently by different parsers - as octal (420) in 1.1 and decimal (644) in 1.2. This can result in different file modes being applied, leading to potential issues. Similarly, the \"timeout\" key is interpreted as sexagesimal in 1.1 and decimal in 1.2, resulting in different timeout values being applied. The article emphasizes that these discrepancies can lead to silent data corruption without any errors being raised.\n\nThe article also discusses the importance of quoting strings that could be read as something else, using explicit type coercion, pinning parser versions, preferring JSON for machine-generated config, and using YAML validators that check the parsed result rather than just the file. It mentions the author's own linter tool that highlights values that resolve differently under different parser versions, providing a solution to the issue discussed.",
  "summary": "Everyone knows the Norway problem. country: NO becomes false , ha ha, quote your strings. What gets skipped is the part that actually costs you an afternoon: YAML 1.2 fixed this in 2009, and a large share of the parsers in your pipeline never moved. So the interesting failure is not one parser being wrong. It is two parsers in the same pipeline being right in different ways, on the same file.…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}