Skip to content

P1: task-list content is not persisted across restart without a live replica #557

Description

@dirvine

P1: source-confirmed task-list durability gap

Pinned main 2a85749f4dab8f0ef56650e43bf96781dc18d0ec (tree 06f47fe73789bbae0d91464160b1648709879aa8). This is a source-path finding, not a new runtime observation.

Task-list create persists registration metadata (kind/id/name/topic/role), while add/claim/complete mutate the in-memory replica and publish deltas best-effort. TaskListStorage exists in src/crdt/persistence.rs but has no production caller. Startup src/server/crdt_subscriptions.rs:657-707 recreates/joins a fresh list; src/lib.rs:13676-13775 starts from TaskList::new and relies on peer sync. With no live holder retaining task state, the list cannot recover its content.

Existing tests/crdt_subscription_persistence.rs:61-66,176-267 keeps Alice authoritative while Bob restarts, so it proves registration/replication recovery rather than all-holder or standalone disk durability. Accepted ADR-0023 context explicitly lists CRDT task lists among state kept across daemon restarts. The API local-commit response does not disclose that this task replica is volatile.

Next: one deterministic no-network regression through actual create/mutate/rehydrate and query paths, using a fresh state and the same data directory with no surviving replica. Preserve task IDs, title, claim/provenance, order and version material; corrupt/truncated persistence must not silently install empty state. Then review persistence acknowledgement/failure semantics and every local mutation/admitted remote merge/startup path before implementation. No new architecture decision is accepted by filing this issue.

Operational owner: Codex/Sol for regression and design; Claude and OMP review before merge. This is separate from #321, #461 and #531. No issue closure or recovery acceptance is claimed.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions