Goal
The read-path half of the #79 seam (design §3.3/§3.5, merged in #138): replace the tolerant serde_json deserialize path with a strict canonical parser for the five fixed event grammars.
End state (design §3.5)
With #141's write path and this card, production serder is serde-free; serde/serde_json demote to dev-dependencies as the cross-backend differential oracle. Default-flip and demotion are separate breaking steps (design §6 staging).
Acceptance
Spawned by #79 (design: docs/superpowers/specs/2026-07-10-79-serialization-backend-seam-design.md). Depends on: #141. Related: #129 (C-a), #139.
Goal
The read-path half of the #79 seam (design §3.3/§3.5, merged in #138): replace the tolerant
serde_jsondeserialize path with a strict canonical parser for the five fixed event grammars.&strfields → feeds C-a C-a · Zero-copy event input — borrow-ify KeriEvent across serder #129's borrow-ifiedKeriEvent<'a>directlyd/ivalue byte offsets → SAID verification becomes copy-once + overwrite-slot + hash (today: 2–3Value-tree parses plus a full re-render per event,deserialize.rs)End state (design §3.5)
With #141's write path and this card, production
serderis serde-free;serde/serde_jsondemote todev-dependenciesas the cross-backend differential oracle. Default-flip and demotion are separate breaking steps (design §6 staging).Acceptance
EventLayoutslots), byte-range SAID verify (no re-render)nix flake checkSpawned by #79 (design:
docs/superpowers/specs/2026-07-10-79-serialization-backend-seam-design.md). Depends on: #141. Related: #129 (C-a), #139.