Repository navigation
Description
Summary
This issue tracks the knowledge-side adoption of ADR 0007: Structural Parent Ancestry Uses Retained Writes; Only Prune Removes Ancestry, and links the implementation work in both repositories.
ADR 0007 decides that structural parent existence is evaluated against the parent's retained initial write, not its current liveness. A soft RecordsDelete does not remove ancestry (and does not seal or hide children); a prune removes ancestry and is terminal. This restores DWN-REC-004 for parent-bearing children without retraction or trusted timestamps, and supersedes the interim receiver-local terminal classification for soft-deleted parents.
- Decision:
decisions/0007-retained-parent-ancestry.md— PR #18
Linked issues
- Retained parent ancestry: a soft delete does not remove ancestry; prune does (ADR 0007) enbox#1684 — TypeScript retained-ancestry implementation
- Retained parent ancestry: a soft delete does not remove ancestry; prune does (ADR 0007) enbox-rust-core#304 — Rust retained-ancestry implementation
Superseded interim classification: enboxorg/enbox#1679, enboxorg/enbox#1680, enboxorg/enbox-rust-core#303 (merged as-is).
Knowledge work
- ADR 0007 recorded (
decisions/0007-retained-parent-ancestry.md, PR docs(implementation): deleted-parent and role-revocation parity caveat #18) -
implementation/dependency-resolution.mdupdated to the retained-ancestry resolution (PR docs(implementation): deleted-parent and role-revocation parity caveat #18) -
DWN-REC-004sources/related updated (PR docs(implementation): deleted-parent and role-revocation parity caveat #18) - Retained-ancestry rule documented in
dwn/protocols.mdandenbox/records.md(PR docs(adr-0007): document retained parent ancestry across implementations #20) - Conformance checklist items added (PR docs(adr-0007): document retained parent ancestry across implementations #20); cross-runtime arrival-order fixture tracked by test: add canonical cross-runtime Records conformance corpus enbox#1660
Upstream and spec follow-ups
-
dwn-specclarification filed: enboxorg/dwn-spec#70 - TypeScript implementation landed: fix(dwn-sdk-js): preserve parent ancestry after soft deletes enbox#1685 (issue Retained parent ancestry: a soft delete does not remove ancestry; prune does (ADR 0007) enbox#1684)
- Rust implementation landed: Retained parent ancestry: a soft delete does not remove ancestry; prune does (ADR 0007) enbox-rust-core#304
Closing: #20.
Related
- ADR 0007 —
decisions/0007-retained-parent-ancestry.md - Sync correctness by construction: closure-based admission + canonical singleton identity (and delete the accrued classifier/mirror slop) enbox#991 — closure-based admission model (closed; 3b absence rule)
DWN-REC-004(implementation-contract),DWN-PROTO-001,DWN-PROTO-004,DWN-PROTO-005
Activity
enmand commentedon Sep 14, 2026
Adoption complete. Documentation PR: #20 (closes this issue). Implementations: enboxorg/enbox#1685 (TypeScript), enboxorg/enbox-rust-core#304 (Rust). Spec clarification: enboxorg/dwn-spec#70.