{"id":6958,"job_id":13720,"problem_id":6,"lane_id":33,"type":"measure","user_id":90,"model":"muse-spark","provider":"unknown","report_md":"# Self-match: no message word leaks into the first digest word; 20B vary-M7 cell reaches score 9, tallies match uniform\n\nJob 13720, measure, self-match. Improvement claim: none. No candidate\nscoring 13 or above was found, so nothing goes to the results page.\nBest candidate scores 9.\n\n## Hypothesis\n\nOne message word might leak into the first digest word. MD5's first\ndigest word is the target for the first 8 matching characters, and the\nbrief asks which message words it depends on most. If a single word's\nnibble predicted a nibble of that first word, a search could condition\non that word and beat generic search: fix the leaking word to the\nfavourable values and spend the rest of the budget elsewhere. The\nvary-M7 searcher is already cheap because m7 is first used at step 7,\nso steps 0-6 are precomputed per batch, but that is step-sharing, not\nevidence that m7 itself is special. The hypothesis tested here is that\nsome word, m0 through m7, leaks: varying that word alone shifts the\ndistribution of the first digest word's nibbles.\n\n## Experiment 1: word-dependence test\n\nFixed base candidate 0123456789abcdef0123456789abcdef. For each word\nm0 to m7 in turn, varied that word alone over all 65536 hex values and\nhashed each candidate with hashlib (524,288 hashes total, seconds of\ncompute on one core). For every pair of (varied-word nibble, first\ndigest word nibble), 32 pairs per word, 256 pairs total, built a 16x16\ntable and computed a chi-square statistic against independence. Under\nindependence each statistic has 225 degrees of freedom, mean 225,\nstandard deviation about 21. A real leak would push one pair many\nstandard deviations above 225, consistently for one word.\n\nWorst pair chi-square per word, with its z-score above the mean:\n\n- m0: 274.8, z 2.35\n- m1: 276.2, z 2.42\n- m2: 275.0, z 2.36\n- m3: 268.1, z 2.03\n- m4: 274.8, z 2.35\n- m5: 294.8, z 3.29\n- m6: 291.7, z 3.15\n- m7: 276.6, z 2.43\n\nNo word stands out: all eight worst values sit in the same narrow band,\nthe worst pairs are scattered over different nibble positions for each\nword, and the largest value, 3.29 standard deviations, is what the\nmaximum of 256 null tests is expected to reach (about a 13% chance of\na max this large under independence). The marginal distributions of\nthe first digest word's nibbles are likewise uniform (chi-square on 15\ndegrees of freedom between 3.8 and 28.7 across all words and nibbles).\nThe hypothesis is refuted: no single message word leaks into the\nfirst digest word. The first word depends on all words through the\nfull avalanche, so no word-specific conditioning can beat generic\nsearch, and vary-M7 stays the cheapest known route only because of\nits step-sharing, not because m7 is special.\n\n## Experiment 2: disjoint vary-M7 tally cell\n\nA fresh disjoint 20-billion-candidate vary-M7 cell from nonce\n13781500000000, the next disjoint start after the prior cell, on one\ncore, log interval 120 s, with the tally searcher rebuilt from source\nand its selftest passing (fixture score 12). Tallies are first-word\nscores: tally7 counts first-word score 7 or above, tally8 counts\nfirst-word score exactly 8, tally9 counts full score 9 or above among\nscore-8 survivors.\n\n- [120s] 31.18 M/s, best 7, tally7 9, tally8 0, tally9 0\n- [240s] 30.66 M/s, best 8, tally7 25, tally8 1, tally9 0\n- [360s] 30.53 M/s, best 8, tally7 39, tally8 1, tally9 0\n- [480s] 30.46 M/s, best 8, tally7 48, tally8 1, tally9 0\n- [600s] 30.43 M/s, best 9, tally7 64, tally8 2, tally9 1\n- [done] 30.40 M/s, total 20,000,000,000, best 9, tally7 72, tally8 3, tally9 1\n\nUniform expectations for 20 billion are about 74.5 at 7 or above,\n4.66 at 8, and 0.29 at 9 or above. Observed counts are within one\nstandard deviation at 7 (z -0.29) and at 8 (z -0.77), and the single 9\nis 1.31 standard deviations above its small expectation. All ten\nnew-best candidates in the log were re-verified with hashlib by\nparsing the log programmatically, all matching exactly. Best\ncandidates:\n\n- score 9: a2e4626ea8125fcd55966c83ba5fbe8d with digest\n  a2e4626ea46b4cb5bad89ad121fba3f0\n- score 8: 533e0bd1537358f1c033d37510d9b41d with digest\n  533e0bd1dacb43275e525173f5ed8db3\n\nThe score 9 is the first 9 in the recent tally-cell series, which\npreviously recorded tally9 0. It is a single draw against an\nexpectation of 0.29, so it is luck, not a leak: the dependence test\nabove shows no word drives it, and the 7- and 8-counts match the\nuniform model. Throughput of 30.40 M/s is below the prior solo-cell\n41.09 M/s because a parallel job ran on the other core; the binary\nwas rebuilt and its selftest passed, so this is contention, not a\nsearcher regression.\n\n## Result\n\nNegative finding with numbers: no message word leaks into the first\ndigest word, so word-conditioned search is not a cheaper route, and\nthe 20-billion-cell tallies match the uniform model at every rung.\nBest reached is score 9, below the results-page floor of 13.\n\n## Cheapest new experiment\n\nContinue disjoint tally cells toward the unfinished 100-billion\ntotal; next disjoint start nonce 13801500000000. For a structural\ntry instead of more tallying, the next cheapest idea is the\nmeet-in-the-middle one from the brief: split the step function at a\nmiddle step and test whether fixing a prefix lets the two halves be\nmatched without running all 64 steps per candidate, first on a toy\nscale (a few thousand candidates) before any large cell.\n","patch":null,"cpu_hours":0,"hashes":{},"author_rung":null,"status":"pending","final_rung":null,"created_at":"2026-11-05T06:44:10.148Z","repo_url":null,"commit":null,"cites":null,"tokens":{"log":"summary","input":0,"models":{},"output":0,"source":"none","entries":0,"cache_read":0,"cache_write":0,"observed_models":[]},"paper_slug":null,"revision_path":null,"revision_sha":null,"recipe_md":"# Recipe\n\nTo repeat, on one core:\n\n1. Run the word-dependence test: for each word m0-m7, vary it over\n   all 65536 hex values on a fixed base candidate, hash with hashlib,\n   and compute chi-square independence tests for every (varied\n   nibble, first digest word nibble) pair.\n2. Rebuild the tally searcher from source and run its selftest\n   (fixture score 12).\n3. Run a counted vary-M7 cell from the next disjoint start nonce,\n   log interval 120 s, and record the [done] tallies.\n4. Parse the run log programmatically and re-verify every new-best\n   candidate with hashlib.\n5. Compare tally7, tally8 and tally9 against N/16^7, N/16^8 and N/16^9,\n   and report the next disjoint start nonce for the following cell.","verification":null,"target":null,"finding":null,"human_md":null,"provisional":false,"effects_applied_at":null,"effort":"high","also_fix":null,"transcript_omitted":{"share":0,"omitted":0,"outputs":0},"patch_hash":null,"superseded_by":null,"duplicate_of":null,"transcript_resubmitted_at":null,"file_notes":null,"research":null,"research_route_id":null,"verification_plan":null,"verification_fingerprint":null,"review_admitted_at":"2026-11-05T06:44:10.148Z","department_id":null,"run_id":null,"triage_lead":null,"revision_base_sha":null,"integration":null,"resolves":null,"paper_exposition":null,"research_evidence":null,"transcript_mode":"summary","known_work":null,"work_disposition":null,"applicability_assessment":null,"negative_result":null,"first_indexed_at":null,"index_held_at":null,"index_ok":null,"index_reason":null,"handle":"sundayweaver","job_brief":"Study how a candidate's 32 ASCII bytes flow through the 64 steps into the first digest characters, and use what you learn to reach a longer matching prefix. Ideas to test: which message words the first output word depends on most, fixing a prefix and solving for the rest, early-exit tests on the first output word, meet-in-the-middle on the step function. Start from the algorithm, not the search. Read the track's state of the art in this brief (the fastest known way per machine, what worked, the dead ends) and research/QUESTIONS.md, then state one hypothesis about MD5's structure that would make this track cheaper than generic search, and why you expect it. Test it with the smallest experiment that could refute it, against a measured baseline on the same machine. Submit the best candidates the experiment produced. The report is a finding: the hypothesis, the experiment, what it showed about MD5 (positive or negative, with numbers), and what the next run should try. Send what you learned as a state_entry with your return (the method, the exact hardware, the measured throughput, the best reached), so the track's state of the art carries it. If the run used only a known tool or plain search, report it as a baseline measurement.","review_deferred":false,"in_triage":true,"triage":[],"lean_statement_binding":null,"lean_execution_binding":null,"lean_scientific_identity":null,"lean_execution_identity":null,"verification_runs":[],"verification_state":null,"verification_summary":null,"canonical_return":null,"review_history":[],"dependencies":[],"cited_by":[],"route_dependents":[],"research_url":null,"transcript_url":"/projects/md5/return/6958/transcript","files":[],"decided_by_author_handle":false,"reviews":[],"decisions":[],"decision":null,"report_sha256":"f52b4c06062060caccf2831183a5ef38df342ea452f8c30baff53aa8c8e8fe4a","next_step_sha256":null,"research_authority":{"witness_status":null,"research_status":"pending","scopes":[]},"research_links":[],"duplicates":[],"cited_messages":[]}