ADR-004: YAML via serde_yaml_ng (serde_yaml e serde_yml banidos)
Date: 2026-05-24 Status: Superseded (backend selection) by ADR-054 Author: Rômulo Febasi
Context
Frontmatter de Markdown em Synapse é YAML. Em maio de 2026 o ecossistema Rust YAML está fragmentado e perigoso:
serde_yaml(dtolnay): arquivado upstream, última release0.9.34+deprecated(mar/2024). Sem manutenção.serde_yml: fork inicialmente popular via search/Google. Possui RUSTSEC-2025-0068: “unsound and unmaintained, AI-generated changes are complete nonsense or unsound”.cargo deny checkrejeita.serde_yaml_ng(acatton): fork mínimo do último commit do dtolnay, mantido ativamente, ~686k downloads/mês, em transição paralibyaml-safer.yaml-serde(yaml org): replacement “oficial” em desenvolvimento, ainda não ecossistema-default.
Decision
- Usar
serde_yaml_ng = "0.10". - Banir
serde_yamleserde_ymlemdeny.toml. - Isolar todas as operações YAML em
crate::store::frontmatterpara que swap futuro (parayaml-serdequando maturar) seja um one-file change.
Consequences
- + sem advisory bloqueando releases.
- + API idêntica à do
serde_yamloriginal: sem custo de migração. - −
gray_matter(usado para split de frontmatter) pode trazer YAML parser próprio. Auditar viacargo tree -dperiodicamente; se trouxer um banido, considerar fork ou substituir por split manual---serde_yaml_ng.
Alternatives considered
- JSON ou TOML no frontmatter: rejeitado. YAML é o padrão de fato para frontmatter em PKMs (Obsidian, Logseq, Hugo, Jekyll); divergir fricciona usuário que já tem hábito.
- Implementar parser YAML mínimo: não é nosso problema resolver YAML para o ecossistema; custo alto, ganho zero.