Classification
Response-contract correctness and semantic clarity.
Problem
A checkpoint may lawfully name any retained rope head that belongs to the stated worldline, including a noncanonical historical head.
The native response currently combines two coordinate sets:
basisHeadId and basisByteLength describe the retained checkpoint basis;
- the embedded
BufferResponse describes the current canonical buffer snapshot, including headId, rootNodeId, byteLength, lineCount, and bufferVersion.
The TypeScript adapter then constructs textBasis from the retained basis but places the current canonical bufferVersion beside it in CreateTextBufferCheckpointResult. Nothing in the type names tells a consumer that those values may refer to different heads.
Evidence
Why it matters
A caller can incorrectly interpret bufferVersion as the version of textBasis.headId, which would produce a false coordinate claim. The implementation is authoritative; the response vocabulary is underspecified.
Constraints
- Do not change checkpoint identity or mint a text mutation.
- Do not require the checkpoint basis to be the canonical head.
- Do not synthesize a historical buffer version if Echo/Jim does not store one.
- Preserve opaque checkpoint, receipt, and tick identities.
- Any compatibility alias must state exactly which head it describes.
Acceptance criteria
Related
Classification
Response-contract correctness and semantic clarity.
Problem
A checkpoint may lawfully name any retained rope head that belongs to the stated worldline, including a noncanonical historical head.
The native response currently combines two coordinate sets:
basisHeadIdandbasisByteLengthdescribe the retained checkpoint basis;BufferResponsedescribes the current canonical buffer snapshot, includingheadId,rootNodeId,byteLength,lineCount, andbufferVersion.The TypeScript adapter then constructs
textBasisfrom the retained basis but places the current canonicalbufferVersionbeside it inCreateTextBufferCheckpointResult. Nothing in the type names tells a consumer that those values may refer to different heads.Evidence
Why it matters
A caller can incorrectly interpret
bufferVersionas the version oftextBasis.headId, which would produce a false coordinate claim. The implementation is authoritative; the response vocabulary is underspecified.Constraints
Acceptance criteria
checkpointBasisandcurrentBuffer, or rename/omit fields that do not share a basis.Related