Add G-0002: raw checksum, the first capability claim (+ the 3-store cluster profile) - #6
Merged
Conversation
9 tasks
eduralph
force-pushed
the
g0002-raw-checksum
branch
2 times, most recently
from
July 14, 2026 00:35
ad4b9ac to
4b2d3ce
Compare
… cluster profile The first roadmap-execution slice (docs/parity-roadmap.md §5.6 + §8): - parity protocol: open_raw_client / raw_put / raw_checksum commands, plus a ChecksumObs evidence field on Observation — recorded, never projected: crc64/total_bytes cover prefix-included key bytes and legitimately differ between the two runs of one comparison. - Go driver: rawkv client (same declared router-client deviation as txn), server-side Checksum answered with evidence attached. - Rust driver: raw client + raw_put; raw_checksum answers `unsupported` — client-rust has no such request (rules RAW-4), and the driver must not emulate one. - scenarios/raw-checksum.json + ledger G-0002: expect=diverges, class ok-vs-unsupported plus the unsupported.detail row, declared field-complete from the observed divergence report. - cluster/: a 3-store profile (pd-3store.toml raises max-replicas to 3; wait-ready.sh grows an expected-store-count argument) — the harness prerequisite for roadmap §5.4's replica/stale-read scenarios. Boot-verified; mutually exclusive with the single-node profile by ports. - PR template categories updated to the repo's actual shape (crates/, go/, scenarios/ + ledger.toml, docs/); roadmap §5.6/§8 and rules RAW-4 flipped from prospective to landed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Codex review on PR #5 caught a real hazard in the precondition gate: a region_error on the asserted scan_locks step carries zero locks, so the lock_count assert reported 'setup failed' with transient hard-coded false — turning a retryable cluster event (a split or leader change mid-run) into a fatal scenario failure that never reached the retry loop. The assert is now evaluated only for ADMISSIBLE observations. An inadmissible one passes through to the end-of-run classification, which reports it as itself: region_error stays transient (retried, bounded), driver_error stays fatal, and an OK-but-wrong observation still fails the precondition exactly as before. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
eduralph
force-pushed
the
g0002-raw-checksum
branch
from
July 14, 2026 00:44
4b2d3ce to
c0a0fc9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
The first roadmap-execution slice (roadmap §5.6 + §8 prerequisites 0 and 1): the parity ledger's first capability claim —
raw checksumexists in client-go and not in client-rust — plus the 3-store cluster profile the replica/stale-read scenarios (§5.4) will need.open_raw_client/raw_put/raw_checksumcommands inparity-protoand both drivers; aChecksumObsevidence field onObservation— recorded, never projected (crc64/total_bytes cover prefix-included key bytes, so they legitimately differ between the two runs of one comparison).scenarios/raw-checksum.json+ ledger G-0002 (kind = "capability",expect = "diverges"): oracle answersokwith server-side crc64 evidence (total_kvs: 3matching the three seeded pairs); the subject answersunsupported— the driver does not emulate the feature. Declared field-complete (class +unsupported.detail) from the observed divergence report. The day client-rust gains the request, XCONVERGE fires and G-0002 is re-stated as a regression guard.cluster/docker-compose-3store.yml+pd-3store.toml(max-replicas 3) +make cluster-up-3store;wait-ready.shgrows an expected-store-count argument. Boot-verified: three storesUp. Mutually exclusive with the single-node profile (same host ports), documented as such.Kind of change
crates/,go/)scenarios/,ledger.toml)findings/) — none: a capability claim lives in the ledger; afindings/write-up follows when G-0002 is filed upstream (roadmap §9)cluster/,Makefile,scripts/)README.md,docs/)Checklist
make checkis green (fmt, clippy-D warnings, check, go vet/verify)make gateagainst a real TiKV/PD cluster (exit 0: verdict as expected, both ledger claims XDIVERGE)unsupported, never emulatedREADME.md/ findings updated (Layout comment; roadmap + rules flipped to landed)Evidence
Oracle trace evidence:
checksum: { crc64_xor: …, total_kvs: 3, total_bytes: 149 }— theokis inspectable, not bare. Strict mode enforced: the first adjudication attempt was refused ("produced by a DIRTY harness") until the changes were committed — the instrument-pinning gate working as designed.🤖 Generated with Claude Code