cultcache-rs: a unique-index refusal names the least violation by UTF-16 order; walk refusals.msgpack #102

Merged
libby merged 6 commits from hands/variants-pair-order-rs into main 2026-11-11 12:16:57 +00:00
Member

Spec variants:cut_spec:cut-pair-order-rs.r1, rule variants:question:unique-index-refusal-pair-rule (least-pair).

  • judge_against collects every violation (alias, two least holders, schema) and names the least, each field compared by UTF-16 code unit (utf16_cmp), not UTF-8/BTreeSet order. Holders, released/taken change and image judge are unchanged; holder identity stays ordinal (case-sensitive).
  • New vectors_refusals_hold_the_rule walks all 24 rows of tests/vectors/unique-index/refusals.msgpack (asserts 24). Deleted the_refusal_names_the_ordinal_pair_whatever_the_order: every case it held is a vector row.
  • Merges hands/variants-holder-case (rows 23-24, holder-case-store.cc).

Tests: cargo test -p cultcache-rs 215 passed, 0 failed (unique_index 23). cargo-mutants over the changed lines: 3 mutants, 1 caught, 2 unviable, 0 survivors. Hand mutants, each fails vectors_refusals_hold_the_rule: UTF-8 byte order (batch-surrogate-keys), case-insensitive holders (batch-key-case), first-found violation (batch-interleaved-types).

🤖 Generated with Claude Code

Spec `variants:cut_spec:cut-pair-order-rs.r1`, rule `variants:question:unique-index-refusal-pair-rule` (least-pair). - `judge_against` collects every violation (alias, two least holders, schema) and names the least, each field compared by UTF-16 code unit (`utf16_cmp`), not UTF-8/BTreeSet order. Holders, released/taken change and image judge are unchanged; holder identity stays ordinal (case-sensitive). - New `vectors_refusals_hold_the_rule` walks all 24 rows of `tests/vectors/unique-index/refusals.msgpack` (asserts 24). Deleted `the_refusal_names_the_ordinal_pair_whatever_the_order`: every case it held is a vector row. - Merges `hands/variants-holder-case` (rows 23-24, `holder-case-store.cc`). Tests: `cargo test -p cultcache-rs` 215 passed, 0 failed (unique_index 23). cargo-mutants over the changed lines: 3 mutants, 1 caught, 2 unviable, 0 survivors. Hand mutants, each fails `vectors_refusals_hold_the_rule`: UTF-8 byte order (batch-surrogate-keys), case-insensitive holders (batch-key-case), first-found violation (batch-interleaved-types). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Unique-index vectors: pin holder identity by case (rows 23-24)
Some checks failed
CultMesh QUIC native / Build win32-x64 (pull_request) Has been skipped
CultMesh QUIC native / Build linux-x64 (pull_request) Has been skipped
CultMesh QUIC native / Release native binaries (pull_request) Has been skipped
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Has been cancelled
CultMesh QUIC native / Verify committed binaries match SHA256SUMS (pull_request) Has been cancelled
d02b56a692
Two holders of one value whose keys differ only by case are two holders; a case-folding dedupe would see one and miss the refusal.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
cultcache-rs: walk the 24 refusals rows
All checks were successful
CultMesh QUIC native / Build win32-x64 (pull_request) Has been skipped
CultMesh QUIC native / Build linux-x64 (pull_request) Has been skipped
CultMesh QUIC native / Release native binaries (pull_request) Has been skipped
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Successful in 25m5s
CultMesh QUIC native / Verify committed binaries match SHA256SUMS (pull_request) Successful in 1m5s
677644c766
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
cultcache-rs: walk the 33 refusals rows; name the row when a refusal is missing
Some checks failed
CultMesh QUIC native / Build win32-x64 (pull_request) Has been skipped
CultMesh QUIC native / Build linux-x64 (pull_request) Has been skipped
CultMesh QUIC native / Release native binaries (pull_request) Has been skipped
CultMesh QUIC native / Verify committed binaries match SHA256SUMS (pull_request) Has been cancelled
CultMesh portability and performance / ubuntu-latest reactive semantics and leases (pull_request) Has been cancelled
3863cce1a1
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Author
Member

Round 2: merged origin/main a57397aa (rows 1-33; superseded the holder-case merge); the PR diff is Rust only (lib.rs, unique_index.rs). The walk asserts 33. cargo test -p cultcache-rs: 215 passed, 0 failed. Hand mutants killed: case-insensitive holders (batch-key-case), group without type (batch-interleaved-types), value lowercase/trim/NFC/NFKC (batch-distinct-values), key NFC and NFD (batch-keys-by-normal-form), held-key exclusion case-insensitive (batch-replaced-by-case), alias descending (batch-two-aliases), alias case-fold (batch-alias-case). Survivor: alias by code point (bytes) instead of UTF-16, equivalent for every vector alias (ASCII); the known unpinned alias-code-unit (cut-pair-order-cs.s6), the UTF-16 compare is kept.

🤖 Generated with Claude Code

Round 2: merged origin/main a57397aa (rows 1-33; superseded the holder-case merge); the PR diff is Rust only (lib.rs, unique_index.rs). The walk asserts 33. cargo test -p cultcache-rs: 215 passed, 0 failed. Hand mutants killed: case-insensitive holders (batch-key-case), group without type (batch-interleaved-types), value lowercase/trim/NFC/NFKC (batch-distinct-values), key NFC and NFD (batch-keys-by-normal-form), held-key exclusion case-insensitive (batch-replaced-by-case), alias descending (batch-two-aliases), alias case-fold (batch-alias-case). Survivor: alias by code point (bytes) instead of UTF-16, equivalent for every vector alias (ASCII); the known unpinned alias-code-unit (cut-pair-order-cs.s6), the UTF-16 compare is kept. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
libby merged commit 17caa0c874 into main 2026-11-11 12:16:57 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/CultLib!102
No description provided.