Every object (content/type/relation post) now carries a stable :cid = hash of its canonical, key-sorted content. The runtime has no hash primitive, so host/blog--canon (recursive, sorts keys -> identical across processes regardless of dict insertion order) and a tail-recursive double-hash (host/blog--hash-go / host/blog--cid-of) are built in SX. The slug (a name) and any prior :cid are excluded -> the CID hashes content only. git-shaped: slug = mutable name -> CID = immutable content identity. Single choke point host/blog--write! stamps the CID on every record write; routed all three write sites (put!, set-schema!, seed-rel!) through it. Accessors host/blog-cid and host/blog-by-cid (reverse lookup). +6 conformance tests (blog suite 134/134). Plan: new 'Content-addressability is universal' section (CID model, git-shape, federation: types flow across fed-sx as shared content-addressed vocabulary; structure/behaviour trust-split). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
68 KiB
68 KiB