You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
id: build: stable note identity and revision graph #3814
Parent: #2048 (ID Zettelkasten design). Phase 1 — foundational, no hard dependency.
Implement the approved #2048 model in pkgs/id: a stable logical note identity, distinct from immutable content-revision event IDs, with append-only signed revisions and explicit causal parent revision IDs. Use blob-backed content snapshots and expose deterministic note history/head state. Concurrent revisions must remain separate heads; an explicit merge revision names the heads it joins. Preserve existing document.put and document.remove behavior for non-note documents.
Scope: core event representation, validation, local event-store fold/history, and focused tests. No editor/UI, full-text or backlink index, shared-write authorization, cross-store resolver, or migration of existing files. Do not add a deletion/erasure API in this phase: #2048 has an open product question about tombstone vs cryptographic erasure, and the current document.remove retains content.
Acceptance:
Note ID remains stable across revisions and is not a mutable filename or alias.
Every revision is signed, immutable, content-hash verified, and names its note plus causal parent revision(s).
Two concurrent revisions produce two deterministic heads; a merge explicitly names both; arrival order does not change history.
Existing document event fixtures and public behavior remain compatible.
Related inputs: #2047 (friendly names resolve to stable IDs); #2238 (writer-set/view projection is a separate visibility layer). This phase establishes data identity only; it does not decide who may write a shared note.
Picked up by queue worker lane E (task 5824) — resuming from the parked checkpoint. Fresh revalidation: issue #3814 open, PR #3908 open on branch queue/5824-3814-stable-note-revisions with no hard-stop labels; Codex P1/P2 findings on PR #3908 already fixed in 74ab277 and replied. Remaining step is the verified CodeRabbit finding: include note ID + parent revision IDs from NoteOp::Revise in prune_behind_cut dependencies, plus a regression test.
Done (task 5824, queue worker lane E): PR #3908 merged as 8540505 — issue #3814 closed. This shift: implemented the outstanding CodeRabbit finding (prune_behind_cut now treats NoteOp::Revise note + parent revision IDs as prune dependencies, commit 1e410fa, with regression test), fixed the E0063 note-field breakage the notes change had left in 13 pkgs/id integration-test files (commit 8a5ccbf; all 12 affected targets compile again), merged current main into the branch (1149ba7, picking up the #3871 voiding fix), and verified on the laptop: retention_pruning 5/5, voiding_scenarios 12/12, documents 5/5, tag_claims 12/12, content_removal 7/7, aliases 12/12, search 13/13, cli_documents 8/8, bridge_poc 7/7. Codex P1/P2 on PR #3908 were fixed in 74ab277 (earlier shift) and replied; CodeRabbit confirmed the prune fix and resolved its thread. Known pre-existing, unrelated: id-core lib-test vt100 compile failure (code#3923) still blocks cargo test --lib for the id crate.
Activity
developing-today commentedon Nov 1, 2026
CODE-1550
dezren39 commentedon Nov 1, 2026
agent-note:v1 — queued, parent #2048 phase 1; queue task 5824, dedupe
repo-health:v1:fix:developing-today/code:issue:3814. Resume after claim: implement stable signed note identity/revisions, deterministic heads and explicit merge; deletion policy is explicitly out of scope pending Drew’s Q1 answer. Filed by repo-worker-code, OpenChamber scheduled lane, 2026-11-01T16:54Z.dezren39 commentedon Nov 1, 2026
agent-note:v1 — holder: repo-worker-code (OpenChamber scheduled lane), status: picked up, task: 5824, at: 2026-11-01T17:02Z. Revalidated #3814 open; no related open PR found. Preparing a dedicated laptop worktree for the foundational note identity/revision implementation; deletion remains explicitly out of scope pending Drew’s Q1 answer.
27 remaining items
dezren39 commentedon Nov 1, 2026
Picked up by queue worker lane E (task 5824) — resuming from the parked checkpoint. Fresh revalidation: issue #3814 open, PR #3908 open on branch
queue/5824-3814-stable-note-revisionswith no hard-stop labels; Codex P1/P2 findings on PR #3908 already fixed in 74ab277 and replied. Remaining step is the verified CodeRabbit finding: include note ID + parent revision IDs fromNoteOp::Reviseinprune_behind_cutdependencies, plus a regression test.fix(id): treat note revision references as prune dependencies (#3814)
fix(id): add missing note field to ChainExt literals in integration t…
Merge pull request #3908 from developing-today/queue/5824-3814-stable…
dezren39 commentedon Nov 1, 2026
Done (task 5824, queue worker lane E): PR #3908 merged as 8540505 — issue #3814 closed. This shift: implemented the outstanding CodeRabbit finding (
prune_behind_cutnow treatsNoteOp::Revisenote + parent revision IDs as prune dependencies, commit 1e410fa, with regression test), fixed the E0063note-field breakage the notes change had left in 13 pkgs/id integration-test files (commit 8a5ccbf; all 12 affected targets compile again), merged current main into the branch (1149ba7, picking up the #3871 voiding fix), and verified on the laptop: retention_pruning 5/5, voiding_scenarios 12/12, documents 5/5, tag_claims 12/12, content_removal 7/7, aliases 12/12, search 13/13, cli_documents 8/8, bridge_poc 7/7. Codex P1/P2 on PR #3908 were fixed in 74ab277 (earlier shift) and replied; CodeRabbit confirmed the prune fix and resolved its thread. Known pre-existing, unrelated: id-core lib-test vt100 compile failure (code#3923) still blockscargo test --libfor the id crate.fix(id): ChainExt literal in idset tests missing the #3814 note field (…