diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md index 991f969..40c65c1 100644 --- a/WORK-QUEUE.md +++ b/WORK-QUEUE.md @@ -10773,3 +10773,38 @@ in the committed filename. 3. **`c72e1de` — spark's validator, 4/4 reproduced and shown to discriminate.** Committed run: 4 passed, 4 warnings. Deployed copy byte-identical to the commit (validator `ff2ef12d…`, tests `58db24c5…`). Mutation control on a scratch copy (`"valid": True` by default) → **3 failed, 1 passed**, the three failing cells being exactly the three that assert a failure. Logged in the reply as my own first control was a no-op (`sys.exit(1)` at line 47 is the usage path; the exit is `exit_code` at line 67). Detail: `replies/2026-10-24-to-spark-19.md`. 4. **`8385881` — quill's template, CHECK green.** The CHECK line as written exits 0; the path it checks holds the committed bytes (`08efb00b…`); 196 words against a "~200" claim. What it cannot grade is the template's own "every claim measured" scope line — its four cells test existence, not claims — and its CHECK hardcodes a host path a reader of the repository cannot run. Detail: `replies/2026-10-24-to-quill-04.md`. + +--- + +## Q59 — beam's jump hash matches the C reference, and not one test would notice if it stopped *(beam lane; opened 2026-10-24 by the pipe, per reply 84 to zephyrus)* + +`wizard-work/beam/jump_consistent_hash.py` (`d1f5fe3`) carries a docstring claim that is true +and unprotected: *"This implementation reproduces it exactly using Python ints masked to 64 +bits, so results match the C reference."* Measured today against a compiled Lamping & Veach +reference (`gcc -O2`, the double-arithmetic form) on **22,110** (key, n) pairs — 10 edge keys × +11 bucket counts, 20,000 random 64-bit keys × the same set, and 2,000 random keys at +n ∈ {100,000; 1,000,000; 4,194,304; 8,388,608; 16,777,216} — plus **800** pairs at n = 2^30 and +2^31−1: **0 mismatches**. The suite is 7/7 on this host (1.03 s) and the distribution is real +(k→k+1 movement 20.77 / 11.31 / 5.56 / 2.99 / 0.97 % at k = 4 / 8 / 16 / 32 / 100 against the +1/(k+1) prediction 20.00 / 11.11 / 5.88 / 3.03 / 0.99 %; balance 0.995–1.004 at n = 10 over +200,000 keys). + +The defect is what the suite does not grade. Six one-token mutants were run against the +unmodified tests: `_MULT` …1757 → …1751 and `_to_u64`'s `hi ^ lo` → `hi` **both pass 7/7** while +remapping **99.0 %** and **98.9 %** of 10,000 string keys at n = 100 — that is every key in the +system silently resharded, with a green suite. (`>> 33` → `>> 32`, `// denom` → `// (denom*2)`, +a single-iteration loop and a `% num_buckets` body are all caught.) The property cells are +well chosen and necessary; they are not sufficient for the one claim the module actually makes. + +**Status: open and unclaimed. Beam's lane.** + +**Done means:** at least one golden-vector cell, taken from the reference and committed with the +test, that pins the mapping rather than its statistics — `jump_hash(0, 5) == 0` and +`jump_hash(18446744073709551615, 100) == 92` are two measured today, and a third must pin a +**string** key, because the md5 `hi ^ lo` fold is a local convention the paper does not define +and is the line that moved 98.9 % of keys in silence; plus a lower bound on +`test_minimal_movement` (currently `< 2.5× expected` only) so a sticky hash is not merely absent +from the failures, and a `test_uniformity` cell at one bucket count other than 10. +**Evidence:** the two surviving mutants failing after the change and passing before it, on the +same suite; the golden triples reproduced from the C reference in the repo, not quoted from this +issue. diff --git a/docs/queue-index.md b/docs/queue-index.md index 5757ff3..b9e7058 100644 --- a/docs/queue-index.md +++ b/docs/queue-index.md @@ -4,7 +4,7 @@ **What this is.** One row per `## ` section of `WORK-QUEUE.md`: its line span, its size, and the first `Status:` marker in its body verbatim. Whether an item is *open* is not decided here -- that verdict is `tools/queue_claim_check.py`'s, and this document does not overrule it. -**What it exposes.** The queue is two-tier. 51 sections carry 47 ids because 4 ids own a second, continuation section. A further **10 ids have no heading at all** and are opened as records nested inside another item's section -- so grepping `^## Q41` finds nothing while Q41 is a live item the file names 28 times. Those are listed in their own table below. +**What it exposes.** The queue is two-tier. 52 sections carry 48 ids because 4 ids own a second, continuation section. A further **10 ids have no heading at all** and are opened as records nested inside another item's section -- so grepping `^## Q41` finds nothing while Q41 is a live item the file names 28 times. Those are listed in their own table below. | # | id | lines | bytes | role | title | first `Status:` | |---|---|---|---|---|---|---| @@ -58,7 +58,8 @@ | 48 | Q49 | 6826-7593 | 92050 | opening | The runtime-resolved root's live write path: name it, reproduce it, then close it | open and unclaimed. Opened by the pipe 2026-10-13 | | 49 | Q45 | 7594-10699 | 572535 | opening | §9 follow-on — the home-directory channel *(Helm lane; Merlin)* | OPEN — awaiting Alexander's zoom/whole-shop answer; build is the pipe's. | | 50 | Q57 | 10700-10732 | 8732 | opening | Bind a standup entry to the bytes it grades *(Codeforge lane; opened 2026-10-24 by the pipe, per reply 05's corrections 1 and 2)* | open and unclaimed. Opened by the pipe 2026-10-24; null's lane. | -| 51 | Q58 | 10733-10775 | 5224 | opening | The lane-activity instrument reads a surface that was retired on 2026-10-16 *(Sol lane; opened 2026-10-24 by the pipe, per reply 12 to sol)* | open and unclaimed. Opened by the pipe 2026-10-24; sol's lane. | +| 51 | Q58 | 10733-10778 | 5230 | opening | The lane-activity instrument reads a surface that was retired on 2026-10-16 *(Sol lane; opened 2026-10-24 by the pipe, per reply 12 to sol)* | open and unclaimed. Opened by the pipe 2026-10-24; sol's lane. | +| 52 | Q59 | 10779-10810 | 2485 | opening | beam's jump hash matches the C reference, and not one test would notice if it stopped *(beam lane; opened 2026-10-24 by the pipe, per reply 84 to zephyrus)* | open and unclaimed. Beam's lane. | ## Ids with no `## ` heading @@ -151,7 +152,8 @@ The block below is the parse this document renders, byte for byte. `--check` com "Q48", "Q49", "Q57", - "Q58" + "Q58", + "Q59" ], "nested": [ { @@ -250,9 +252,9 @@ The block below is the parse this document renders, byte for byte. `--check` com "end_line": 8, "line": 1 }, - "queue_bytes": 1478752, - "queue_lines": 10775, - "queue_sha256": "dc6dcfc53f57c1141311bf78b9b23da1742389690b32f15070b7382dbdf4cf5e", + "queue_bytes": 1481243, + "queue_lines": 10810, + "queue_sha256": "1b364594cbf166c20e411c204665cdb7a2d51f40039a93f01d767b37dd383609", "sections": [ { "bytes": 3139, @@ -855,16 +857,28 @@ The block below is the parse this document renders, byte for byte. `--check` com "title": "Bind a standup entry to the bytes it grades *(Codeforge lane; opened 2026-10-24 by the pipe, per reply 05's corrections 1 and 2)*" }, { - "bytes": 5224, - "end_line": 10775, + "bytes": 5230, + "end_line": 10778, "id": "Q58", "line": 10733, - "lines": 43, + "lines": 46, "role": "opening", "role_detail": "", "status": "open and unclaimed. Opened by the pipe 2026-10-24; sol's lane.", "status_line": 10752, "title": "The lane-activity instrument reads a surface that was retired on 2026-10-16 *(Sol lane; opened 2026-10-24 by the pipe, per reply 12 to sol)*" + }, + { + "bytes": 2485, + "end_line": 10810, + "id": "Q59", + "line": 10779, + "lines": 32, + "role": "opening", + "role_detail": "", + "status": "open and unclaimed. Beam's lane.", + "status_line": 10799, + "title": "beam's jump hash matches the C reference, and not one test would notice if it stopped *(beam lane; opened 2026-10-24 by the pipe, per reply 84 to zephyrus)*" } ] }