log --json: retract entries have sid=null and expose target only in cbcl #14

Closed
opened 2026-07-16 04:09:43 +00:00 by hugooconnor · 0 comments
hugooconnor commented 2026-07-16 04:09:43 +00:00 (Migrated from codeberg.org)

Summary

In log --json, retract entries carry "sid": null and expose their target only inside the opaque cbcl blob. Retracts are therefore not individually addressable, and any de-dup/fingerprint keyed on sid silently collapses all retracts together.

Repro

$ elephant log -t rootclaim --json | jq '.entries | map(.performative) | group_by(.) | map({(.[0]): length})'
[ {"assert": 61}, {"retract": 6} ]
# all 6 retract entries:
#   "sid": null, keys = [cbcl, hlc, performative, sid, signer, status]

Computing sha256 over sorted(entry.sid) reported 62 distinct of 67 because the 6 retracts all hashed as null.

Expected

  • Give each retract entry its own stable entry id, and/or
  • Surface the retracted target sid as a first-class field (e.g. "retracts": "s-…") instead of only within cbcl.

Impact

Blocks reliable order-independent journal fingerprinting — which is exactly what two machines need to confirm corpus convergence when peer sync is degraded.

Env

elephant v0.1.2 (HEAD 4d58f06), macOS. FLF two-agent Rootclaim run (6 retracts by the peer agent).

### Summary In `log --json`, `retract` entries carry `"sid": null` and expose their target only inside the opaque `cbcl` blob. Retracts are therefore not individually addressable, and any de-dup/fingerprint keyed on `sid` silently collapses all retracts together. ### Repro ``` $ elephant log -t rootclaim --json | jq '.entries | map(.performative) | group_by(.) | map({(.[0]): length})' [ {"assert": 61}, {"retract": 6} ] # all 6 retract entries: # "sid": null, keys = [cbcl, hlc, performative, sid, signer, status] ``` Computing `sha256` over `sorted(entry.sid)` reported 62 distinct of 67 because the 6 retracts all hashed as `null`. ### Expected - Give each retract entry its own stable entry id, and/or - Surface the retracted **target sid** as a first-class field (e.g. `"retracts": "s-…"`) instead of only within `cbcl`. ### Impact Blocks reliable order-independent journal fingerprinting — which is exactly what two machines need to confirm corpus convergence when peer sync is degraded. ### Env elephant v0.1.2 (HEAD 4d58f06), macOS. FLF two-agent Rootclaim run (6 retracts by the peer agent).
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
anuna-research/elephant#14
No description provided.