Page actions
instrument mechanism / verified-clean
Consistent Hashing Ring Visualizer mechanism
The inspectable method record for Consistent Hashing Ring Visualizer, kept separate from implementation and qualification.
Model scope
The clockwise successor concept is standard and the arithmetic is correct under the explicitly stated demo hash and tie rules. The specification is not fully reproducible as written because the hash function, node hashing, collision policy, wrap/equality semantics, and rebalance-delta definition are unspecified.
- The node-position formula is implicit: node identifiers must also be hashed, but the specification only explicitly writes hash(key) mod ring_size.
- The 'simple demo hash' is not defined, so results are not reproducible. A byte encoding, hash algorithm, and integer arithmetic rule are required.
- Hash collisions between nodes, or between a node and a key, have no specified deterministic ordering or assignment rule.
- 'Next node clockwise' must define whether a node at exactly the key position is selected and how wraparound is handled.
- 'Rebalance delta' is undefined: it should specify whether this means the count of moved keys, fraction moved, byte load, or another metric.
- The simplified modulo ring is valid for teaching, but without virtual nodes it can produce highly uneven ownership; the honest-label warning should remain prominent.
Units and conventions
- ring_size is a positive, dimensionless integer; positions are integers in [0, ring_size - 1].
- For these deterministic vectors, hash(s) is defined as the sum of UTF-8 byte values of string s.
- Node positions are hash(node_id) mod ring_size, and key positions are hash(key) mod ring_size.
- Clockwise order increases position numerically and wraps from ring_size - 1 to 0.
- A key at the same position as a node maps to that node; if multiple nodes share a position, input list order is the deterministic tie-break.
- For these vectors, rebalance delta means the number of keys whose assigned node changes, with the moved fraction also reported.
Inspectable vector
One of 4 source-bound review vectors:
{
"inputs": {
"hash_function": "H(s) = sum of UTF-8 byte values",
"ring_size": 16,
"nodes": [
"A",
"B",
"C"
],
"keys": [
"alpha",
"beta",
"gamma"
],
"topology_change": "none"
},
"expected_outputs": {
"node_positions": {
"A": 1,
"B": 2,
"C": 3
},
"key_positions": {
"alpha": 6,
"beta": 12,
"gamma": 3
},
"key_to_node": {
"alpha": "A",
"beta": "A",
"gamma": "C"
},
"rebalance_delta": {
"moved_keys": 0,
"moved_fraction": 0
}
},
"working": "Node positions: H(A)=65, 65 mod 16=1; H(B)=66, 66 mod 16=2; H(C)=67, 67 mod 16=3. Key positions: H(alpha)=97+108+112+104+97=518, 518 mod 16=6; H(beta)=98+101+116+97=412, 412 mod 16=12; H(gamma)=103+97+109+109+97=515, 515 mod 16=3. Clockwise ownership: alpha at 6 passes 7..15, wraps to A at 1; beta at 12 also wraps to A at 1; gamma is exactly at C's position 3, so it maps to C. No topology change means 0 of 3 keys move, so moved fraction=0/3=0."
}Failure boundary
BREAK_CLAIMED · SELF_FLAGGED
The specified calculation is undefined for ring_size = 0 and requires explicit input rejection. Additionally, the specification does not define the hash function details or whether clockwise corresponds to increasing or decreasing numeric positions; the latter changes the mapping for the same valid input.
Other records
Sources and evidence
These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.
VERIFIED_LEDGER.jsonevidence-tranche6/tranche6-results.jsonBOUNDARY_HAZARD_CATALOG.json