Repository navigation
rfc: a later check reports a held version as a loss - #1119
Conversation
Why
WhatThe check paragraph now reports a loss when the attempted HowA linear ImpactA later reader can settle an unknown linear write. The reader does not need an acknowledgement bit that no later read stores. The publisher attempt that saw a success return keeps its in-doubt result. This edit adds no type, no row, and no second record. Further control facts still share one attempt id and one version key. Tradeoff and liabilityThe edit removes a condition the check cannot observe. That condition would leave a held version unknown for the life of the branch. The in-doubt result stays on the one attempt that saw the success return. Two observers answer from the evidence each one holds. That is one rule with two inputs. It is one source of truth. The observable graph state is the version. When that version holds another publication, the attempt did not commit there, and put-if-absent will not replace the object. The publisher in-doubt path is the case where a success return and the version disagree. A later reader has only the version, so loss is the client outcome. Five similar control facts need no new record and no new fence. BlockingNone. Optional
RecommendationMerge. The check rule matches the linear version key. The optional notes are wording. They do not change the decision. ValidationReviewed head Main is Inspection of main
Lance 13.0.0 source, crates.io:
Lance transaction page, fetched 2026-10-21. Put-if-not-exists lets one writer create a given manifest file. The page also describes rebase after a conflict. The catalog publish does not take that rebase. Zero retries skip it. Open heads:
Command, in a detached worktree at
Result: This pull request changes RFC text only. LimitationsThe loss rule assumes the store honors put-if-absent. Lance 13 refuses default commits to Tencent COS because that store can ignore the precondition. OmniGraph installs A detached proposal still settles by its tag, as #1093 §5 says. No catalog test was run. This pull request does not change publisher code, and that code is unchanged across the main range above. No performance number was checked. Inline
Optional. This clause says the publisher read-back holds the request record.
Optional. Say "another publication", not "another commit". The publication id is a graph commit id or a control-fact attempt id. A control fact records no graph commit, and two facts on one chain can share a head. Also set frontmatter |
What
disposition.checkis a later read. It carries the branch, the publication id and the head before the write, and it cannot see whether the store acknowledged the attempt. The RFC said a check reports a loss only when the attempted version holds another commit and the store never acknowledged this attempt, a condition the check cannot evaluate. It now reports a loss once the attempted version holds another commit, since a create-if-absent cannot land once its version is held. The in-doubt result of an acknowledged attempt stays on the publisher's read-back, which holds the request record.Why
Optional finding of the final review of #1017 at
33ba2940("The later check cannot see the acknowledgement"), which the reviewer said could land after merge. It matches §5 of storage outcomes per operation (#1093): once another commit holds the version, the write is not committed.Verification
python3 scripts/check-docs.py: Documentation OK. RFC text only; the decision log records the change.