196-yaml-parsing-moves-off-unsafe-libyaml

YAML parsing moves off unsafe-libyaml

Lifecycle approvedImplementation completeVerification unknownQualification unknown

Every YAML read in the engine (spec frontmatter, compaction plans, the delta classifier, the dependency-only waiver, workflow manifests) goes through `serde_yaml` 0.9, which is deprecated and parses with `unsafe-libyaml`, a c2rust translation of libyaml that RUSTSEC-2024-0449 marks unmaintained. `deny.toml` ignores that advisory by id so `cargo-deny` can pass; this spec removes the reason for the ignore. The engine moves to a YAML crate written in safe Rust, the committed registry and index shard trees stay byte-identical, every refusal the current parser produces on authored frontmatter is kept, and the ignore entry is deleted in the same change.

Read the full pinned specification ↗

Relationships

Claimed units

  • establishes
    {
      "kind": "file",
      "path": "crates/spec-spine-types/src/yaml.rs"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/spec-spine-types/tests/yaml_parity.rs"
    }
  • establishes
    {
      "kind": "file",
      "path": "crates/spec-spine-core/tests/yaml_workflow_parity.rs"
    }
  • extends
    {
      "nature": "additive",
      "spec": "001-compile-registry",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-types/src/lib.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "012-declared-extra-frontmatter-passthrough",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-types/src/frontmatter.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "096-compaction-is-a-verb-not-a-session",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/src/compact.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "071-a-change-is-classified-under-the-bases-rules",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/src/delta.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "005-coupling-gate",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/src/dep_only.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "004-codebase-index",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/src/manifest.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "111-a-move-is-a-reviewed-mapping",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-types/src/moves.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "109-impact-and-conflict-are-declared",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-types/src/impact.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "013-edge-paths-grammar-sugar",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-types/tests/grammar.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "094-one-gate-and-the-boundaries-it-holds",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/tests/gate.rs"
      }
    }
  • extends
    {
      "nature": "corrective",
      "spec": "091-an-unclassified-review-failure-blocks-the-merge",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/tests/ai_review_policy.rs"
      }
    }
  • extends
    {
      "spec": "135-the-toolchain-floor-and-dependencies-are-checked",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-types/Cargo.toml"
      }
    }
  • extends
    {
      "spec": "135-the-toolchain-floor-and-dependencies-are-checked",
      "unit": {
        "kind": "file",
        "path": "crates/spec-spine-core/Cargo.toml"
      }
    }

Source headings

  1. 196: YAML parsing moves off unsafe-libyaml
  2. 1. Purpose
  3. 1.1 The parser is unmaintained
  4. 1.2 Where YAML is read
  5. 2. Territory
  6. 3. Behavior
  7. 3.1 The parser
  8. 3.2 The registry and index do not move
  9. 3.3 Every refusal is kept
  10. 3.4 Workflows
  11. 3.5 The ignore goes
  12. 4. Out of scope
  13. 5. Resolved decisions
  14. Verification

Frozen anchors

No frozen anchors declared.