From 381831ea554ea983e16224dabed8921b7d0ffdbc Mon Sep 17 00:00:00 2001 From: seslly <161339320+seslly@users.noreply.github.com> Date: Tue, 13 Oct 2026 11:22:04 -0700 Subject: [PATCH] Certify k8 entrance demotion filling T16 unit gaps --- research/demote635-t16/CERTIFICATE.json | 346 +++ research/demote635-t16/CLAIM.json | 15 + research/demote635-t16/NOTICE.md | 25 + research/demote635-t16/README.md | 115 + research/demote635-t16/SEARCH.json | 46 + research/demote635-t16/SOURCES.json | 12 + research/demote635-t16/VALIDATION.json | 195 ++ research/demote635-t16/construct.py | 115 + research/demote635-t16/controls.py | 71 + .../demote635-t16/data/BASELINE-WORD.json.gz | Bin 0 -> 57222 bytes research/demote635-t16/data/RECIPE.json | 402 +++ research/demote635-t16/data/REGISTRY.json | 639 ++++ research/demote635-t16/data/SPEC.json | 2589 +++++++++++++++++ research/demote635-t16/independent.py | 343 +++ research/demote635-t16/reproduce.py | 165 ++ 15 files changed, 5078 insertions(+) create mode 100644 research/demote635-t16/CERTIFICATE.json create mode 100644 research/demote635-t16/CLAIM.json create mode 100644 research/demote635-t16/NOTICE.md create mode 100644 research/demote635-t16/README.md create mode 100644 research/demote635-t16/SEARCH.json create mode 100644 research/demote635-t16/SOURCES.json create mode 100644 research/demote635-t16/VALIDATION.json create mode 100644 research/demote635-t16/construct.py create mode 100644 research/demote635-t16/controls.py create mode 100644 research/demote635-t16/data/BASELINE-WORD.json.gz create mode 100644 research/demote635-t16/data/RECIPE.json create mode 100644 research/demote635-t16/data/REGISTRY.json create mode 100644 research/demote635-t16/data/SPEC.json create mode 100644 research/demote635-t16/independent.py create mode 100644 research/demote635-t16/reproduce.py diff --git a/research/demote635-t16/CERTIFICATE.json b/research/demote635-t16/CERTIFICATE.json new file mode 100644 index 0000000000..cea965fcce --- /dev/null +++ b/research/demote635-t16/CERTIFICATE.json @@ -0,0 +1,346 @@ +{ + "status": "PASS_GAUGE44_NATIVE_EXACT_GLOBAL_ASSEMBLY", + "kappa": "836390079976271/500000000000000000", + "kappa_decimal": "0.001672780159952542", + "complex_lower": "1675583042021589509879/1000000000000000000000000", + "complex_decimal": "0.001675583042021589509879", + "bit_lower": "1733427039589844234749/1000000000000000000000000", + "bit_decimal": "0.001733427039589844234749", + "binding": "complex", + "gain_over_pr635_percent": "0.007510101508373399189865643661655020351114811135578009464898758336740800", + "complex_profile": { + "1": 348300, + "2": 61064, + "3": 63022, + "4": 20012, + "5": 11808, + "7": 6, + "8": 1152, + "48": 4866 + }, + "provider_counts": { + "demote635": 109, + "gauge44": 35 + }, + "surcharge_model": { + "complex": false, + "bit": true + }, + "conservative_complex_lower": "837791519581163613999/500000000000000000000000", + "conservative_complex_decimal": "0.001675583039162327227998", + "conservative_kappa": "836390078551419/500000000000000000", + "conservative_kappa_decimal": "0.001672780157102838", + "conservative_moments": [ + { + "side": "conservative_complex", + "surcharge": true, + "endpoint": "837791519581163613999/500000000000000000000000", + "accept": true, + "mercator": [ + "-497355020071808675924648147395846345900693/26959946667150639794667015087019630673637144422540572481103610249216", + "-497355020071808675924648147395846345900691/26959946667150639794667015087019630673637144422540572481103610249216" + ], + "base_two": [ + "-184486839966630036449/10000000000000000000000000000000000000000000000", + "-46119209991657509077/2500000000000000000000000000000000000000000000" + ] + }, + { + "side": "conservative_complex", + "surcharge": true, + "endpoint": "1675583039162327227999/1000000000000000000000000", + "accept": false, + "mercator": [ + "78460987295341292802078993761561217219055817/26959946667150639794667015087019630673637144422540572481103610249216", + "78460987295341292802078993761561217219055819/26959946667150639794667015087019630673637144422540572481103610249216" + ], + "base_two": [ + "14551396580196326531809/5000000000000000000000000000000000000000000000", + "29102803160392653063759/10000000000000000000000000000000000000000000000" + ] + } + ], + "conservative_bootstrap": [ + { + "exponent": "418209975849331661541481098494946946862845326774487930660607474265132743745104801621331227999/250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "685783941250145458018232609293262555347673725512069339392525734867256254895198378668772001/250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "4784184236294" + }, + { + "exponent": "209447305351320659180953702094781639202817529721609053979097139344819054755644141153270248705151777111556902051587766117821648365664502841999/125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "574543970244318795963457338465506278970528390946020902860655180945244355858846729751294848222888443097948412233882178351634335497158001/125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1704025087914674329" + }, + { + "exponent": "104723939466297385852692137437062598429878474942865197755860105367730401677887036857862294441594288965571965930987668920945699192817824915988334531130725113966970094113386458715254678455999/62500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "481348065897182695338997453924669775182134802244139894632269598322112963142137705558405711034428034069012331079054300807182175084011665468869274886033029905886613541284745321544001/62500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "606937642203420496627631" + }, + { + "exponent": "52361969973419456547361961618313218424781228451258567595824748527287356268737563872875800823376846145133555802730339143089871352408223605415602073852584238755711719000091591207157382013306596622279941814541755205986703724337935858069999/31250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "403269327575454769716807752492896611241432404175251472712643731262436127124199176623153854866444197269660856910128647591776394584397926147415761244288280999908408792842617986693403377720058185458244794013296275662064141930001/31250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "216178332194773906146983664615" + }, + { + "exponent": "26180984986911025081845958279716547551727426235603787498698146588513563620229944316568896526374997048644875100990814160640553593369387848374996628390584781687259065550212156427022160949397545678913932424456966137084150968209763037630506246757755757962948417931459772609705252041683999/15625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "337855622749914298465536909636295646212501301853411486436379770055683431103473625002951355124899009185839359446406630612151625003371609415218312740934449787843572977839050602454321086067575543033862915849031790236962369493753242244242037051582068540227390294747958316001/15625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "76998142907819548065173238710621651" + }, + { + "exponent": "13090492493455681185681778514316454585834490307497920118587662368014259189657115063733038556316091635787776565998562448431170644800574037217518729200427286255701399513816464274366377108504822646771420689816161887958850643885078228802651321103627872399825220102287784491884601720646101021345888737653970103335655681079272747229297999/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "283052575582691051958484040958127079881412337631985740810342884936266961443683908364212223434001437551568829355199425962782481270799572713744298600486183535725633622891495177353228579310183838112041149356114921771197348678896372127600174779897712215508115398279353898978654111262346029896664344318920727252770702001/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "27425107553847285878625506362648504871149" + }, + { + "exponent": "6545246246727840734130038001084968367853897906840196036328956830025892761440364662909851910559870568879737843298684206457024778806230954861346524108105640121420208975436821436159292891098408956610340006608681024163894791867054201176930422811473717705394817195749239101993447682774956582599969644298640142023367529994687431009969959808949240103165590584489474023721479965420911999/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "237139047418784904305367725972303963671043169974107238559635337090148089440129431120262156701315793542975221193769045138653475891894359878579791024563178563840707108901591043389659993391318975836105208132945798823069577188526282294605182804250760898006552317225043417400030355701359857976632470005312568990030040191050759896834409415510525976278520034579088001/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "9768242400865855422374989944834013527907191658" + } + ], + "conservative_outer": { + "bit_positive": "6545246246727840734130038001084968367853897906840196036328956830025892761440364662909851910559870568879737843298684206457024778806230954861346524108105640121420208975436821436159292891098408956610340006608681024163894791867054201176930422811473717705394817195749239101993447682774956582599969644298640142023367529994687431009969959808949240103165590584489474023721479965420911999/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "237149498915031632146102093159803963671043169974107238559635337090148089440129431120262156701315793542975221193769045138653475891894359878579791024563178563840707108901591043389659993391318975836105208132945798823069577188526282294605182804250760898006552317225043417400030355701359857976632470005312568990030040191050759896834409415510525976278520034579088001/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "14787208480418836386001/500000000000000000000000", + "beta_positive": "1/1000000000000000000000000", + "beta_below_one": "999999999999999999999999/1000000000000000000000000", + "leaf_saving_above_bit": "237142953668784904305367725972303963671043169974107238559635337090148089440129431120262156701315793542975221193769045138653475891894359878579791024563178563840707108901591043389659993391318975836105208132945798823069577188526282294605182804250760898006552317225043417400030355701359857976632470005312568990030040191050759896834409415510525976278520034579088001/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "3272623123363920367065012455296237456086214823382096933196110561115039540524146002498095929387173844075206011797431543357943509665272178746466805029274013829755243141194302612439525025340229041483733844011449413672990785593520491907441047510944991798496231667451808077279018446570282542060882828701637296055101165027699416864842956536944625364151785322284928062620636817119871510025976278520034579088001/1953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "6545246246727840734130038001084968367853897906840196036328956830025892761440364662909851910559870568879737843298684206457024778806230954861346524108105640121420208975436821436159292891098408956610340006608681024163894791867054201176930422811473717705394817195749239101993447682774956582599969644298640142023367529994687431009969959808949240103165590584489474023721479965420911999/1953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "118578022080639179993417993024153066803889438884960459475853997501904070612826155924793988202568456642056490334727821253533194970725986170244756858805697387560474974659770958516266155988550586327009214406479508092558952489055008201503768332548191922720981553429717457939117171298362703944898834972300583135157043463055374635848214677715071937379363182880128489974023721479965420911999/1953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "3272623123363920367065500736546237456086214823382096933196110561115039540524146002498095929387173844075206011797431543357943509665272178746466805029274013829755243141194302612439525025340229041483733844011449413672990785593520491907441047510944991798496231667451808077279018446570282542060882828701637296055101165027699416864842956536944625364151785322284928062620636817119871510025976278520034579088001/1953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "1949852376876636079632934499263453762543913785176617903066803889438884960459475853997501904070612826155924793988202568456642056490334727821253533194970725986170244756858805697387560474974659770958516266155988550586327009214406479508092558952489055008201503768332548191922720981553429717457939117171298362703944898834972300583135157043463055374635848214677715071937379363182880128489974023721479965420911999/1953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000000000", + "lambda_above_tau": "6545246246727840734130038001084968367853897906840196036328956830025892761440364662909851910559870568879737843298684206457024778806230954861346524108105640121420208975436821436159292891098408956610340006608681024163894791867054201176930422811473717705394817195749239101993447682774956582599969644298640142023367529994687431009969959808949240103165590584489474023721479965420911999/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "237156044161278359986836223197805048639411023872014078755671666046978115332890871484925066553226353413544100931612343822859932916673166109534652371087286669480828529110566480211096152684210074245061818472952407504093741083318149348806359734673572371724257712042239166639132349149042632933215069974956867630172063558580754584265419385470334925518623200169672490474023721479965420911999/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "6545246246727840734130038001084968367853897906840196036328956830025892761440364662909851910559870568879737843298684206457024778806230954861346524108105640121420208975436821436159292891098408956610340006608681024163894791867054201176930422811473717705394817195749239101993447682774956582599969644298640142023367529994687431009969959808949240103165590584489474023721479965420911999/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "6545246246727840734130038001084968367853897906840196036328956830025892761440364662909851910559870568879737843298684206457024778806230954861346524108105640121420208975436821436159292891098408956610340006608681024163894791867054201176930422811473717705394817195749239101993447682774956582599969644298640142023367529994687431009969959808949240103165590584489474023721479965420911999/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "118578022080639179993417993024153066803889438884960459475853997501904070612826155924793988202568456642056490334727821253533194970725986170244756858805697387560474974659770958516266155988550586327009214406479508092558952489055008201503768332548191922720981553429717457939117171298362703944898834972300583135157043463055374635848214677715071937379363182880128489974023721479965420911999/1953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000000000", + "lambda_prime_below_one": "3272623123363920367065012455296237456086214823382096933196110561115039540524146002498095929387173844075206011797431543357943509665272178746466805029274013829755243141194302612439525025340229041483733844011449413672990785593520491907441047510944991798496231667451808077279018446570282542060882828701637296055101165027699416864842956536944625364151785322284928062620636817119871510025976278520034579088001/1953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "1953124999999999999999998046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/1956397623123363920367065012455296237456086214823382096933196110561115039540524146002498095929387173844075206011797431543357943509665272178746466805029274013829755243141194302612439525025340229041483733844011449413672990785593520491907441047510944991798496231667451808077279018446570282542060882828701637296055101165027699416864842956536944625364151785322284928062620636817119871510025976278520034579088001", + "epsilon_below_one": "3272623123363920367066965580296237456086214823382096933196110561115039540524146002498095929387173844075206011797431543357943509665272178746466805029274013829755243141194302612439525025340229041483733844011449413672990785593520491907441047510944991798496231667451808077279018446570282542060882828701637296055101165027699416864842956536944625364151785322284928062620636817119871510025976278520034579088001/1956397623123363920367065012455296237456086214823382096933196110561115039540524146002498095929387173844075206011797431543357943509665272178746466805029274013829755243141194302612439525025340229041483733844011449413672990785593520491907441047510944991798496231667451808077279018446570282542060882828701637296055101165027699416864842956536944625364151785322284928062620636817119871510025976278520034579088001", + "guard_width": "3272623123363920367066965580296237456086214823382096933196110561115039540524146002498095929387173844075206011797431543357943509665272178746466805029274013829755243141194302612439525025340229041483733844011449413672990785593520491907441047510944991798496231667451808077279018446570282542060882828701637296055101165027699416864842956536944625364151785322284928062620636817119871510025976278520034579088001/1956397623123363920367065012455296237456086214823382096933196110561115039540524146002498095929387173844075206011797431543357943509665272178746466805029274013829755243141194302612439525025340229041483733844011449413672990785593520491907441047510944991798496231667451808077279018446570282542060882828701637296055101165027699416864842956536944625364151785322284928062620636817119871510025976278520034579088001", + "K_geometry": "1468116373123363920367065500736546237456086214823382096933196110561115039540524146002498095929387173844075206011797431543357943509665272178746466805029274013829755243141194302612439525025340229041483733844011449413672990785593520491907441047510944991798496231667451808077279018446570282542060882828701637296055101165027699416864842956536944625364151785322284928062620636817119871510025976278520034579088001/1956397623123363920367065012455296237456086214823382096933196110561115039540524146002498095929387173844075206011797431543357943509665272178746466805029274013829755243141194302612439525025340229041483733844011449413672990785593520491907441047510944991798496231667451808077279018446570282542060882828701637296055101165027699416864842956536944625364151785322284928062620636817119871510025976278520034579088001000000000000000000000000", + "K_dominates_log": "3272623123363920367065497463923114092165847757881360386958654474900216158427212806387534814347633319929203513701502156184099434459260381314923447085764348557576496674389273338425695270097087847181121404486424073443949301859676480458027374520159398278004324226404297132287219950338615090252805549683190725772559104144870715227546901435779597664734920479328391117995272665334549225097913657883217459216490974023721479965420911999/1956397623123363920367065012455296237456086214823382096933196110561115039540524146002498095929387173844075206011797431543357943509665272178746466805029274013829755243141194302612439525025340229041483733844011449413672990785593520491907441047510944991798496231667451808077279018446570282542060882828701637296055101165027699416864842956536944625364151785322284928062620636817119871510025976278520034579088001000000000000000000000000", + "record_suffix": "3272623123363920367066965580296237456086214823382096933196110561115039540524146002498095929387173844075206011797431543357943509665272178746466805029274013829755243141194302612439525025340229041483733844011449413672990785593520491907441047510944991798496231667451808077279018446570282542060882828701637296055101165027699416864842956536944625364151785322284928062620636817119871510025976278520034579088001/1956397623123363920367065012455296237456086214823382096933196110561115039540524146002498095929387173844075206011797431543357943509665272178746466805029274013829755243141194302612439525025340229041483733844011449413672990785593520491907441047510944991798496231667451808077279018446570282542060882828701637296055101165027699416864842956536944625364151785322284928062620636817119871510025976278520034579088001", + "phase_local": "26180984986911362936533768244746776284769351522044320169331428402705492942096234823874206320057850228455645596283522959689704002116165632540191082290682445365863198662749391625502370447478691137567258312566569969154884801014319923810114707096774340867477945898566953673240349076330592884678985350594651798158267259338766633281447597194391975213797417735322887556339730385173649795279747607523459512832497974023721479965420911999/15651180984986911362936520099642369899648689718587056775465568884488920316324193168019984767435097390752601648094379452346863548077322177429971734440234192110638041945129554420899516200202721832331869870752091595309383926284748163935259528380087559934387969853339614464618232147572562260336487062629613098368440809320221595334918743652295557002913214282578279424500965094536958972080207810228160276632704008000000000000000000000000", + "phase_boundary": "5236196997382272587305188530850856565817576652398899796876320811569239882741700407886392371979937626374327120779961082198865540258423688562803530103328756855429642559105854905889410285301225272071361710893293721647743773215788775602492003026726393357102063226875381978654631018280784615489335246904173103405619803161490365346452675357946372883225991672699347955567654755606472131113499424995238206669291574023721479965420911999/3130236196997382272587304019928473979929737943717411355093113776897784063264838633603996953487019478150520329618875890469372709615464435485994346888046838422127608389025910884179903240040544366466373974150418319061876785256949632787051905676017511986877593970667922892923646429514512452067297412525922619673688161864044319066983748730459111400582642856515655884900193018907391794416041562045632055326540801600000000000000000000000", + "gamma_sublinear": "1/2000000000000000000000000", + "cell_above_band": "3906249999999999999999994137352376876636079632934987544703762543913785176617903066803889438884960459475853997501904070612826155924793988202568456642056490334727821253533194970725986170244756858805697387560474974659770958516266155988550586327009214406479508092558952489055008201503768332548191922720981553429717457939117171298362703944898834972300583135157043463055374635848214677715071937379363182880128489974023721479965420911999/7825590492493455681468260049821184949824344859293528387732784442244460158162096584009992383717548695376300824047189726173431774038661088714985867220117096055319020972564777210449758100101360916165934935376045797654691963142374081967629764190043779967193984926669807232309116073786281130168243531314806549184220404660110797667459371826147778501456607141289139712250482547268479486040103905114080138316352004000000000000000000000000", + "prime_interval_packing": "3272623123363920367066965580296237456086214823382096933196110561115039540524146002498095929387173844075206011797431543357943509665272178746466805029274013829755243141194302612439525025340229041483733844011449413672990785593520491907441047510944991798496231667451808077279018446570282542060882828701637296055101165027699416864842956536944625364151785322284928062620636817119871510025976278520034579088001/1956397623123363920367065012455296237456086214823382096933196110561115039540524146002498095929387173844075206011797431543357943509665272178746466805029274013829755243141194302612439525025340229041483733844011449413672990785593520491907441047510944991798496231667451808077279018446570282542060882828701637296055101165027699416864842956536944625364151785322284928062620636817119871510025976278520034579088001", + "alpha_positive": "6545246246727840734131974762969351548252062581751738570154765036015255698951358808885630743734807164004409525498933699542042944124532560061390252115038362387331739815583575950865220295437316888664855248497873487116940087453196972365468422031104390076500555893856105209566238396908897632313688378384828021827660269172570132092389857972724223028886705801613319180615909482454420735123889936403252038304491974023721479965420911999/3912795246246727840734130024910592474912172429646764193866392221122230079081048292004996191858774347688150412023594863086715887019330544357492933610058548027659510486282388605224879050050680458082967467688022898827345981571187040983814882095021889983596992463334903616154558036893140565084121765657403274592110202330055398833729685913073889250728303570644569856125241273634239743020051952557040069158176002000000000000000000000000", + "alpha_below_one": "3906249999999999999999998050147623123363920367065012455296237456086214823382096933196110561115039540524146002498095929387173844075206011797431543357943509665272178746466805029274013829755243141194302612439525025340229041483733844011449413672990785593520491907441047510944991798496231667451808077279018446570282542060882828701637296055101165027699416864842956536944625364151785322284928062620636817119871510025976278520034579088001/3912795246246727840734130024910592474912172429646764193866392221122230079081048292004996191858774347688150412023594863086715887019330544357492933610058548027659510486282388605224879050050680458082967467688022898827345981571187040983814882095021889983596992463334903616154558036893140565084121765657403274592110202330055398833729685913073889250728303570644569856125241273634239743020051952557040069158176002000000000000000000000000", + "alpha_below_one_fourth": "971653565314954119449400531464678767179791044829939309896443290244542264071310714192363417220958779758033193480399782072136928810708103529311843150399598644527545881755013575355354542217232797632077011673507851219719555305343563273588252101724368105822747559939869798829073270826376243638716753035965990626199890313341279576340031620295748089653189186859529144850694408926105515019889098202856765251239508525976278520034579088001/3912795246246727840734130024910592474912172429646764193866392221122230079081048292004996191858774347688150412023594863086715887019330544357492933610058548027659510486282388605224879050050680458082967467688022898827345981571187040983814882095021889983596992463334903616154558036893140565084121765657403274592110202330055398833729685913073889250728303570644569856125241273634239743020051952557040069158176002000000000000000000000000", + "delta_positive": "1/8000000000000000000000000", + "delta_below_one_eighth": "999999999999999999999999/8000000000000000000000000", + "short_record_fallback": "7616589427050144533623053624786070351377371351329268223154678255749564445076656347453374269184036370790620596778121660733188304794138968032434962596392609331947093269901394637256538757669176045860817898099797045353105322289406716826185636775158447180834565981561011677403018078599561755295820741941072072091705482951496076649705177839739313958358691920209771862699389132687356309995912912479571721278917886730144874268264725854577743028673653317309980504158107826243607494675469352938674402816255367246117103510145192328015407046932382228717184234318350099256470565790803743694963135488911100077168647418082886848874383390667048943646831368527540162101650550109978605344647197154921437273012930527849721614024370636992514806387876913197631151940289789861066453462264327790366980902176001/7642178215325640313933847704903500927562836776653836316145297306879355623205172445322258187224168647828418773483583716966241966834629969448228385957145601616522481418520290244579841894630235269693295835328169724272160120256224689421513441591839628874212875904950983625301871165806915166179925323549615770687715238925889450847128292798972439942828717911415175500244611862566874498086038969837968885074562503906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000000000", + "artificial_boundary": "109584447879895290903492182291331828567281278849891491569613263444170007000739836143748209822825897747593251192249323406936429916844195454832068505595704065880920871800436850455018171090887504082237866803335307838495758534729186843516424468059672836255665234549040058249780832576069193085047320732873960126658374100744421248784261837383667951106403964855155105006841596848751027743496446669687192664421246594077928835560103737264003/15651180984986911362936520099642369899648689718587056775465568884488920316324193168019984767435097390752601648094379452346863548077322177429971734440234192110638041945129554420899516200202721832331869870752091595309383926284748163935259528380087559934387969853339614464618232147572562260336487062629613098368440809320221595334918743652295557002913214282578279424500965094536958972080207810228160276632704008000000000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "409610225286144675914381017944938397553828601292347206072484301432624738909979803803654670638490716342966403616174460664769604300481821963651004742256633389032026914393411638464147374392862374811795969436342866253167198267292837305676726624433806322957250678186460685794509815735651911355022255519221980892215670928767848432118735243502639243671879169712500692985012308112750212754284309150727179795576581/978198811561681960183532506227648118728043107411691048466598055280557519770262073001249047964693586922037603005898715771678971754832636089373233402514637006914877621570597151306219762512670114520741866922005724706836495392796760245953720523755472495899248115833725904038639509223285141271030441414350818648027550582513849708432421478268472312682075892661142464031310318408559935755012988139260017289544000500000000000000000", + "coordinate_movement_above_kappa": "10948758044879796630038001084968367853897906840196036328956830025892761440364662909851910559870568879737843298684206457024778806230954861346524108105640121420208975436821436159292891098408956610340006608681024163894791867054201176930422811473717705394817195749239101993447682774956582599969644298640142023367529994687431009969959808949240103165590584489474023721479965420911999/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "819218494174666228464841668824864339811419746498479588762871669669138916704920067083163338778885503298758963157142909532107665243020134262029830738046461748790039999031580135733992136346199724283362897388951888494884982861594889017832961341426565134969509557876689704137211554192285376139761968977561133082794045802434531836538053622162321950399132975273216063685096553604863608388697108275478081071118582911999/1956397623123363920367065012455296237456086214823382096933196110561115039540524146002498095929387173844075206011797431543357943509665272178746466805029274013829755243141194302612439525025340229041483733844011449413672990785593520491907441047510944991798496231667451808077279018446570282542060882828701637296055101165027699416864842956536944625364151785322284928062620636817119871510025976278520034579088001000000000000000000000000", + "bulk_exposure_above_kappa": "10948758044879796630038001084968367853897906840196036328956830025892761440364662909851910559870568879737843298684206457024778806230954861346524108105640121420208975436821436159292891098408956610340006608681024163894791867054201176930422811473717705394817195749239101993447682774956582599969644298640142023367529994687431009969959808949240103165590584489474023721479965420911999/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "1310750764518039839562098890358790416876014068049296236049852831388288603396895831647548943545074362910318647496552262329831190403598320618411036428754421815628472296303674101890968985617634574057518060712563327998685620782346293784645033290747132722518210371700442527090623333075067669765788675600627510153452850916955949955080535914365489042805387978928216895267111323340163863693838279256350696825810480111999/3130236196997382272587304019928473979929737943717411355093113776897784063264838633603996953487019478150520329618875890469372709615464435485994346888046838422127608389025910884179903240040544366466373974150418319061876785256949632787051905676017511986877593970667922892923646429514512452067297412525922619673688161864044319066983748730459111400582642856515655884900193018907391794416041562045632055326540801600000000000000000000000", + "scalar_work_above_kappa": "6553761648180691691266175920054001905565020164591340473777651889725885261444637320334328727717755532100288613783585358838882125449765641753143897129639329195238416800539343074232055377846272971648506469497752016039225758603694611297307134083499853656371019052487139305260348974491412135110073546246668865573813438805184409886200347031199271361805441351248225765475268867183366586948677436385658598209190716911999/15651180984986911362936520099642369899648689718587056775465568884488920316324193168019984767435097390752601648094379452346863548077322177429971734440234192110638041945129554420899516200202721832331869870752091595309383926284748163935259528380087559934387969853339614464618232147572562260336487062629613098368440809320221595334918743652295557002913214282578279424500965094536958972080207810228160276632704008000000000000000000000000", + "dimension_above_kappa": "974926188438318040226075765933496557186337910533247349087230546011789686302222228431375690945286216881617067632592000571287431861341824575396370897967184956736127120686036237725807151880741523943405507470856650104959474043546106007213477743537364809777478508600080418918611168963175544523479374321301092706994704936708131183783249450499376119436659350841496779640568851303940757229999319973490195464740308650727179795576581/978198811561681960183532506227648118728043107411691048466598055280557519770262073001249047964693586922037603005898715771678971754832636089373233402514637006914877621570597151306219762512670114520741866922005724706836495392796760245953720523755472495899248115833725904038639509223285141271030441414350818648027550582513849708432421478268472312682075892661142464031310318408559935755012988139260017289544000500000000000000000" + }, + "conservative_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "model_controls": [ + "native_complex_endpoint_rejected_with_old_surcharge", + "omitting_bit_surcharge_would_fail_next_endpoint_rejection" + ], + "native_correction_gain": "2.849704E-12", + "template_sha256": "9b123811f22660bfb0515bbe2aa0bbd10547ce5f80e0254e361f81fe5ce70411", + "input_sha256": { + "owner_audit": "a574b33fb253fb0186ab93ba179a1c3cc647fb55825c8bdf86d8e37985ca67ba", + "fresh_invoice": "36cc1e687415c4f0218defae183a4ed9c0e66440e7d489e6152276fb3277125a", + "package:inputs/PR589-EXPECTED.json": "b9f0e5ca038abe837b0007c8fe006f366a6f02009244ac57705a8a200e2301f4", + "engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "bit_supplier": { + "pr": 589, + "repository": "CrocSwap/integer-mult-bounds", + "commit": "a5afc8c6169ea61ba7c51dfd3cade02cc7b13b46", + "merged_as": "b3eb785ac5b4b1ca2beea0f80db078a505626a90", + "path": "research/e8-bit-p111-tuned/tune/EXPECTED.json", + "git_blob_sha1": "e293ddc557742637f9f679f083a1a282d87b1b13", + "word": { + "v": 111, + "decoder_constant": 63, + "copy_ranks": [ + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7 + ] + }, + "derived_deficit": 10272, + "deficit_formula": "T(2Kv-L*cst), L=9 T=32 K=4 M=64", + "replay_scope": "Cited unchanged supplier; this assembly reprices its full profile and does not rebuild its bit circuit." + }, + "moments": [ + { + "side": "bit", + "surcharge": true, + "endpoint": "1733427039589844234749/1000000000000000000000000", + "accept": true, + "mercator": [ + "-43100600330766044577088869872467188970742291/26959946667150639794667015087019630673637144422540572481103610249216", + "-43100600330766044577088869872467188970742289/26959946667150639794667015087019630673637144422540572481103610249216" + ], + "base_two": [ + "-799345163337715793503/500000000000000000000000000000000000000000000", + "-3197378653350863173989/2000000000000000000000000000000000000000000000" + ] + }, + { + "side": "bit", + "surcharge": true, + "endpoint": "6933708158359376939/4000000000000000000000", + "accept": false, + "mercator": [ + "22502934905675809315035333485365686073718547/13479973333575319897333507543509815336818572211270286240551805124608", + "5625733726418952328758833371341421518429637/3369993333393829974333376885877453834204643052817571560137951281152" + ], + "base_two": [ + "8346798366759439729359/5000000000000000000000000000000000000000000000", + "16693606733518879458833/10000000000000000000000000000000000000000000000" + ] + }, + { + "side": "complex", + "surcharge": false, + "endpoint": "1675583042021589509879/1000000000000000000000000", + "accept": true, + "mercator": [ + "-48274022729490324619644841107464165856777071/26959946667150639794667015087019630673637144422540572481103610249216", + "-48274022729490324619644841107464165856777069/26959946667150639794667015087019630673637144422540572481103610249216" + ], + "base_two": [ + "-223823/125000000000000000000000000000", + "-1790583/1000000000000000000000000000000" + ] + }, + { + "side": "complex", + "surcharge": false, + "endpoint": "41889576050539737747/25000000000000000000000", + "accept": false, + "mercator": [ + "15342159792888660971095524536516331677126831/13479973333575319897333507543509815336818572211270286240551805124608", + "958884987055541310693470283532270729820427/842498333348457493583344221469363458551160763204392890034487820288" + ], + "base_two": [ + "35567/31250000000000000000000000000", + "227629/200000000000000000000000000000" + ] + } + ], + "bootstrap": [ + { + "exponent": "1672839906247117032212111174781705652197875963921305190701016123686464964846149227184561405359/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "2743135774472477666886149635252326212614157078694809298983876313535035153850772815438594641/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "4784184203255" + }, + { + "exponent": "1675578445669803841035966063855151359842039814777713108535404987773892906298866056257779896483188886218745047740490334158362374104719745958439/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "4596351785668843031260561806618568450306222286891464595012226107093701133943742220103516811113781254952259509665841637625895280254041561/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1704025070331272787" + }, + { + "exponent": "1675583034320020402646632331192840252522526159611617042551309550841415807839052317268285377488365706222525389036770626976833110083765188241737746163723980746049858805856834072665910886081119/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "7701569107232364993224117725887963961388382957448690449158584192160947682731714622511634293777474610963229373023166889916234811758262253836276019253950141194143165927334089113918881/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "606937633869194227676844" + }, + { + "exponent": "1675583042008684891285961420978432828095398598604954797277994223397053464121815553270625450020326507981914648956390415530563701649846724567969853665272223799803045061316280834647152233480048260128760838413937714047679680274420037754125399/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "12904618593035903438525150315091522395045202722005776602946535878184446729374549979673492018085351043609584469436298350153275432030146334727776200196954938683719165352847766519951739871239161586062285952320319725579962245874601/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "216178328488513415329421557417" + }, + { + "exponent": "1675583042021567887118919076953468637137941143630878348332976475293800806915909002794003130999436849703970561202495392141705145805890371279666231245739166908319921147766562264204766469279425405598799331516684967539240674516632870983699556353759009042331498382471164058027998725284683279/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "21622760078247463489341272548977369121651667023524706199193084090997205996869000563150296029438797504607858294854194109628720333768754260833091680078852233437735795233530720574594401200668483315032460759325483367129016300443646240990957668501617528835941972001274715316721/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "76998141324944454251901107420946281" + }, + { + "exponent": "1675583042021589473648267215604090283835593514713767703418637198579067760387067607770786304101728241561159985226293659382728471835148956021300264027989746944325067692566385902445869131115349782217099722464651916768581401718421279043825397021336316209162235309780763457803481284087933498037428666613888289180500588628512205260643386759/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "36230730108812867694574896606286232296581362801420932239612932392229213695898271758438840014773706340617271528164851043978699735972010253055674932307433614097554130868884650217782900277535348083231418598281578720956174602978663683790837764690219236542196518715912066501962571333386111710819499411371487794739356613241/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "27425106896462749407217497603214693478437" + }, + { + "exponent": "1675583042021589509818289727446570118844463287633876173081515994332847650982483345300492794355332513440535245802676046907810152482585926275038144594545832689416796335281032652918923311597290108164942629699756900301465264128480177667061313414147471307932558053259730580491999119298739142022755308754311966605873094205982350477731956304821583773716209090530946061625522953670551707839/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gap": "60707596970387859566026833366123826918484005667152349017516654699507205644667486559464754197323953092189847517414073724961855405454167310583203664718967347081076688402709891835057370300243099698534735871519822332938686585852528692067441946740269419508000880701260857977244691245688033394126905794017649522268043695178416226283790909469053938374477046329448292161/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "9768242133381798785272495833638338234663178175" + } + ], + "outer": { + "bit_positive": "1675583042021589509818289727446570118844463287633876173081515994332847650982483345300492794355332513440535245802676046907810152482585926275038144594545832689416796335281032652918923311597290108164942629699756900301465264128480177667061313414147471307932558053259730580491999119298739142022755308754311966605873094205982350477731956304821583773716209090530946061625522953670551707839/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "60710272553429881155536712366123826918484005667152349017516654699507205644667486559464754197323953092189847517414073724961855405454167310583203664718967347081076688402709891835057370300243099698534735871519822332938686585852528692067441946740269419508000880701260857977244691245688033394126905794017649522268043695178416226283790909469053938374477046329448292161/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "29574416957978410490121/1000000000000000000000000", + "beta_positive": "1/1000000000000000000000000", + "beta_below_one": "999999999999999999999999/1000000000000000000000000", + "leaf_saving_above_bit": "60708596970387859566026833366123826918484005667152349017516654699507205644667486559464754197323953092189847517414073724961855405454167310583203664718967347081076688402709891835057370300243099698534735871519822332938686585852528692067441946740269419508000880701260857977244691245688033394126905794017649522268043695178416226283790909469053938374477046329448292161/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "837791521010794754909143188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "1675583042021589509818289727446570118844463287633876173081515994332847650982483345300492794355332513440535245802676046907810152482585926275038144594545832689416796335281032652918923311597290108164942629699756900301465264128480177667061313414147471307932558053259730580491999119298739142022755308754311966605873094205982350477731956304821583773716209090530946061625522953670551707839/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "30355974068235951372523234972789360029360847296863808384931408865747935669984725763077677591456331878608364293952839538527835512879566241217876870504078219373227760997690226950181604073433147139375532878389610923369644758190392826211388034683548857225308372908683688719202837621963315436205475652317579073100627720683414095492373186690831790771012239373814677026561625522953670551707839/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "837791521010794754909268188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "499162208478989205245090731811859756962167278174472789360029360847296863808384931408865747935669984725763077677591456331878608364293952839538527835512879566241217876870504078219373227760997690226950181604073433147139375532878389610923369644758190392826211388034683548857225308372908683688719202837621963315436205475652317579073100627720683414095492373186690831790771012239373814677026561625522953670551707839/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000000000", + "lambda_above_tau": "1675583042021589509818289727446570118844463287633876173081515994332847650982483345300492794355332513440535245802676046907810152482585926275038144594545832689416796335281032652918923311597290108164942629699756900301465264128480177667061313414147471307932558053259730580491999119298739142022755308754311966605873094205982350477731956304821583773716209090530946061625522953670551707839/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "60711948136471902745046530655851273488602850130439982893689736215501538492318469042810054690118308424703288052659876401008763215606649896509478702863561892913766105199045172867710289223554696988642900814149522089838988051116657172245109008053683566979308813259314117707825183244807332133268928549326403834234649568272622208634268641425358759958250762538538823107061625522953670551707839/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "1675583042021589509818289727446570118844463287633876173081515994332847650982483345300492794355332513440535245802676046907810152482585926275038144594545832689416796335281032652918923311597290108164942629699756900301465264128480177667061313414147471307932558053259730580491999119298739142022755308754311966605873094205982350477731956304821583773716209090530946061625522953670551707839/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "1675583042021589509818289727446570118844463287633876173081515994332847650982483345300492794355332513440535245802676046907810152482585926275038144594545832689416796335281032652918923311597290108164942629699756900301465264128480177667061313414147471307932558053259730580491999119298739142022755308754311966605873094205982350477731956304821583773716209090530946061625522953670551707839/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "30355974068235951372523234972789360029360847296863808384931408865747935669984725763077677591456331878608364293952839538527835512879566241217876870504078219373227760997690226950181604073433147139375532878389610923369644758190392826211388034683548857225308372908683688719202837621963315436205475652317579073100627720683414095492373186690831790771012239373814677026561625522953670551707839/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000000000", + "lambda_prime_below_one": "837791521010794754909143188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "499999999999999999999999500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/500837791521010794754909143188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161", + "epsilon_below_one": "837791521010794754909643188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161/500837791521010794754909143188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161", + "guard_width": "837791521010794754909643188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161/500837791521010794754909143188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161", + "K_geometry": "375837791521010794754909268188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161/500837791521010794754909143188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161000000000000000000000000", + "K_dominates_log": "837791521010794754909267350348722027037966916259022499727601319981310664404428620495099361193823659168331188156479338106117398783724751917804043095484727711621661657331434660193013456879180277128037769154327850550851417303214462509777494617342485563399535334961209333167517838479350994829654387686409593247483243550520042890214808484792238222086699913936888892643083252999372013805229145489285703262969187561625522953670551707839/500837791521010794754909143188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161000000000000000000000000", + "record_suffix": "837791521010794754909643188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161/500837791521010794754909143188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161", + "phase_local": "6702332168086358039276644667330423291867019695074496979522075388903264005709908758434863811503930578826787445016285014955858848726054875148109194505327764023096523563802887124580419129895348688476766540640295820575222687154487186046189981310009735779919819092176367332590359228118565173795234524332666385194044913984296989378510414440008339553640087607101066357245997577382669274619297766828610009401014314561625522953670551707839/4006702332168086358039273145505121944302661774604217685119765113221625089532920548729074016514640122193895378579268349344971133085648377283691777315896963470070256985035967374245014177912018478184398547167412534822884995736972883112613042841934476857390308895722531609142197533016730530490246377299024293476510356194781459367415194978234532687236061014506473345673831902085009482583787506995816370635586337288000000000000000000000000", + "phase_boundary": "1340466433617271607854928263232867849737600011700348883709984811603192379373469775175650599791832823710484581601605538978952380207353048194687341787756987966890935535028987728569076800280566140957928806710267962267226097576180695955755707762428249867672702514151080018832332814734140781598132685113231603985759958159129495446354431852382189764791276001922389818180475909375083207589292170175513500931944484161625522953670551707839/801340466433617271607854629101024388860532354920843537023953022644325017906584109745814803302928024438779075715853669868994226617129675456738355463179392694014051397007193474849002835582403695636879709433482506964576999147394576622522608568386895371478061779144506321828439506603346106098049275459804858695302071238956291873483038995646906537447212202901294669134766380417001896516757501399163274127117267457600000000000000000000000", + "gamma_sublinear": "1/2000000000000000000000000", + "cell_above_band": "999999999999999999999998499162208478989205245090856811859756962167278174472789360029360847296863808384931408865747935669984725763077677591456331878608364293952839538527835512879566241217876870504078219373227760997690226950181604073433147139375532878389610923369644758190392826211388034683548857225308372908683688719202837621963315436205475652317579073100627720683414095492373186690831790771012239373814677026561625522953670551707839/2003351166084043179019636572752560972151330887302108842559882556610812544766460274364537008257320061096947689289634174672485566542824188641845888657948481735035128492517983687122507088956009239092199273583706267411442497868486441556306521420967238428695154447861265804571098766508365265245123188649512146738255178097390729683707597489117266343618030507253236672836915951042504741291893753497908185317793168644000000000000000000000000", + "prime_interval_packing": "837791521010794754909643188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161/500837791521010794754909143188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161", + "alpha_positive": "1675583042021589509818785538488965064870688741911233139698240472684446856019497211629351425523838933405253510565023006227509034489771912379276207582605161470403784786827356440819785695881490050177856165080894703411475884424824851586407849859152092737188147300277660475942209465570667306110451550064446277811277767898202463817114180764108824126594326727246057101872071013625557336778667519966332032711261348561625522953670551707839/1001675583042021589509818286376280486075665443651054421279941278305406272383230137182268504128660030548473844644817087336242783271412094320922944328974240867517564246258991843561253544478004619546099636791853133705721248934243220778153260710483619214347577223930632902285549383254182632622561594324756073369127589048695364841853798744558633171809015253626618336418457975521252370645946876748954092658896584322000000000000000000000000", + "alpha_below_one": "999999999999999999999999500837791521010794754909143188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161/1001675583042021589509818286376280486075665443651054421279941278305406272383230137182268504128660030548473844644817087336242783271412094320922944328974240867517564246258991843561253544478004619546099636791853133705721248934243220778153260710483619214347577223930632902285549383254182632622561594324756073369127589048695364841853798744558633171809015253626618336418457975521252370645946876748954092658896584322000000000000000000000000", + "alpha_below_one_fourth": "248743312718483807867635786055581156454045672170852372180287079103667121239788037083937774606641168703713207650639248827833186783363251667851459874660955055408987276777920604449493600423619664836347053032882388723018836349135980342951907327761752710849706158682380565095445136347974990849529947031124572064470619494275638746646335505375549468825659486679408527002742422866687535324708051667272191132012884731938374477046329448292161/1001675583042021589509818286376280486075665443651054421279941278305406272383230137182268504128660030548473844644817087336242783271412094320922944328974240867517564246258991843561253544478004619546099636791853133705721248934243220778153260710483619214347577223930632902285549383254182632622561594324756073369127589048695364841853798744558633171809015253626618336418457975521252370645946876748954092658896584322000000000000000000000000", + "delta_positive": "1/8000000000000000000000000", + "delta_below_one_eighth": "999999999999999999999999/8000000000000000000000000", + "short_record_fallback": "499160804689723850083191818287262074099421622331624792452062658643676498095838136355690908477147492821266235754327982446632224935208160284607543444879992963419865666887555294611598285107030814319080996507946182515656552023392490202362394545402334233688034544759518794652596040822200820088015323292579057312471799475375260531131827721778539141239845450281063601796509925559123797418639462158214815529044483702601682232483288262212472679985288737902636322059169385858983442582538115129227603044243169572338776689608917670872267766942093872794094812770856246046571374264875141124667438696155726642626111074634041914883698794116803358574041978372012875913490419242561080600215764063331562538688546831004347252609828608640954368954044895670391522087237743731831020729585962160928650019799614049921/500837791521010794754909143188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000000000", + "artificial_boundary": "28053618657344690864314190666554350117453678461561171045378850019271166192844996309744509590226529552396368802036902987749814887395953985495165222891350614878703537264704232455321414699642517213962953719219616995590009285045238252680604901317349216223953638395671318598566401785499680139871324446716269229086031783400643162073431613517259834540935750896749903603340412930202956300597804683653494246963246667224315123431138988344876483/4006702332168086358039273145505121944302661774604217685119765113221625089532920548729074016514640122193895378579268349344971133085648377283691777315896963470070256985035967374245014177912018478184398547167412534822884995736972883112613042841934476857390308895722531609142197533016730530490246377299024293476510356194781459367415194978234532687236061014506473345673831902085009482583787506995816370635586337288000000000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "217103901620555000685049439939356379602892175617454263450808432965737672601752781515164075406736521134359220705985824921091837607496057651333821033964853774086935353759745966458212102564319733632646839729138750923213246872324876077391904985251762092417564049391862866820081120380192663585224918083739006504695864289255691819965828631303570518365827896403754100300144914506030148074705683082895949315644688369/250418895760505397377454571594070121518916360912763605319985319576351568095807534295567126032165007637118461161204271834060695817853023580230736082243560216879391061564747960890313386119501154886524909197963283426430312233560805194538315177620904803586894305982658225571387345813545658155640398581189018342281897262173841210463449686139658292952253813406654584104614493880313092661486719187238523164724146080500000000000000000", + "coordinate_movement_above_kappa": "2802882069047509818289727446570118844463287633876173081515994332847650982483345300492794355332513440535245802676046907810152482585926275038144594545832689416796335281032652918923311597290108164942629699756900301465264128480177667061313414147471307932558053259730580491999119298739142022755308754311966605873094205982350477731956304821583773716209090530946061625522953670551707839/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "434207302403318480359304124969569571065541313402186701374406225960836192500369371415259559679220977938703167175049327433640007093600479596620481606457543061053436948737368803420502424501867228262983906408459105919859640884025285033173420893873168943025520924995113768323711097985693700079133524886680850631355044014716859292249236335707768757415069888299881387291121619783072535523226043192353524154243047289707839/500837791521010794754909143188140243037832721825527210639970639152703136191615068591134252064330015274236922322408543668121391635706047160461472164487120433758782123129495921780626772239002309773049818395926566852860624467121610389076630355241809607173788611965316451142774691627091316311280797162378036684563794524347682420926899372279316585904507626813309168209228987760626185322973438374477046329448292161000000000000000000000000", + "bulk_exposure_above_kappa": "2802882069047509818289727446570118844463287633876173081515994332847650982483345300492794355332513440535245802676046907810152482585926275038144594545832689416796335281032652918923311597290108164942629699756900301465264128480177667061313414147471307932558053259730580491999119298739142022755308754311966605873094205982350477731956304821583773716209090530946061625522953670551707839/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "694731984347984481181363452896797226589011924143131817515376345519721399622472709233456450167304803299934232022232317338950212222595748778221066847215367589957759373249063963170356947579050908622160114083425607027715537130815136326043706876175283453926597784265349208507808442441924896381403426587167658436990081161823689476208230693272053379454063363984386307651295517190308713212872862891828663333016673332507839/801340466433617271607854629101024388860532354920843537023953022644325017906584109745814803302928024438779075715853669868994226617129675456738355463179392694014051397007193474849002835582403695636879709433482506964576999147394576622522608568386895371478061779144506321828439506603346106098049275459804858695302071238956291873483038995646906537447212202901294669134766380417001896516757501399163274127117267457600000000000000000000000", + "scalar_work_above_kappa": "3473661925091088489949996284120558885506031772046546389685724287481163608924908312627556615373532273819732257058850876328925733598545286715293976081965495898270531901373812333835471860402343499120039662616401618844845097096573550116660090687397838236871417616481193903804846783308390990272282378059026941697097144064296544771770837173957756014536660437952438791493150422867494608569105606352896814573268684455707839/4006702332168086358039273145505121944302661774604217685119765113221625089532920548729074016514640122193895378579268349344971133085648377283691777315896963470070256985035967374245014177912018478184398547167412534822884995736972883112613042841934476857390308895722531609142197533016730530490246377299024293476510356194781459367415194978234532687236061014506473345673831902085009482583787506995816370635586337288000000000000000000000000", + "dimension_above_kappa": "249581104239494602839648830026484879166133079026592774282906856041102695355000898670170546569587773878045614245532249300298524888132801340861101525252497434454429972400105813196621967640244811571687193366356450206216527495577945728674931694703971273805010679269103866846176703578317208664440721799003645242943020821565165294232414603116033527013574817896915934261213402523441007638658195318791624909981537002395949315644688369/250418895760505397377454571594070121518916360912763605319985319576351568095807534295567126032165007637118461161204271834060695817853023580230736082243560216879391061564747960890313386119501154886524909197963283426430312233560805194538315177620904803586894305982658225571387345813545658155640398581189018342281897262173841210463449686139658292952253813406654584104614493880313092661486719187238523164724146080500000000000000000" + }, + "controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "scope": "Conditional native exact-complex witness after complete conservative admission, moment and outer checks; PR559 exact-cover recurrence correction only, bit bad-residue surcharge and H1-H5 retained. The new source-branch gauge and retired-basis completion, the gauge44-barch U8 local word and all 72 cold helper ends, and explicit all144 whole-owner dispatch with a two-copy remainder trade are composed with the cited unchanged merged PR589 bit supplier (PR555 punctured R439 word; derived bit deficit T(2Kv-L*cst)), replacing the PR543 supplier of PR635; This is a new T16 composition of the accepted PR799 and PR589 suppliers. All-size compiler, common-label/mutable-source realization, whole-call hosting, precision/tape and analytic transfer remain assumptions. No unconditional theorem or full Lean certification." +} diff --git a/research/demote635-t16/CLAIM.json b/research/demote635-t16/CLAIM.json new file mode 100644 index 0000000000..528eb210a2 --- /dev/null +++ b/research/demote635-t16/CLAIM.json @@ -0,0 +1,15 @@ +{ + "track": "complex supplier, continuation authorized after seed17 bit work", + "seed": 17, + "base": "2921874911956718fcaaaf9396fe8267b3cfa9f0", + "source": "589d1cedf5ef5f231182f4ec86408616311a8af0", + "object": "Reverse E5 to E4 promotion on helpers 635 637 638 639 at 109 calls, fill unit owner gaps through within-call permutations", + "method": "Restore 12 literal known pre-promotion gate frames; unchanged scalar construction; independently re-audit both words and mixed global admission", + "deliverable": "Conditional frontier improvement with exact reproducible certificate if verification succeeds", + "expected_finish": "Within 45 minutes of this local claim", + "at": "2026-10-13T18:07:52.559099+00:00", + "overlap": "PR664 introduced promotions; PR685 composed them; this reverses one group on new k8 T16 geometry and is distinct from PR1090 smaller ends. No pinned coordination issue.", + "result": "PASS_DEMOTE635_T16_COMPLETE_ADMISSION", + "kappa": "0.001672780159952542", + "completed_at_utc": "2026-10-13T18:22:43.591531+00:00" +} diff --git a/research/demote635-t16/NOTICE.md b/research/demote635-t16/NOTICE.md new file mode 100644 index 0000000000..ebd3806a7f --- /dev/null +++ b/research/demote635-t16/NOTICE.md @@ -0,0 +1,25 @@ +New material is licensed under Apache-2.0, as required by CONTRIBUTING.md. +Prepared for seslly / shipstuff with substantial OpenAI Codex assistance in +research, implementation, verification and writing. + +This contribution depends on Jeremy Kothe / jeremykothe2's PR1087 owner map +and seven-slot k8 package; the package discloses Claude assistance. Credit +PR664's entrance-promotion construction and PR685's composed promotion and +owner work, including chafreaky / Chafik Boukhalfa. The literal k8 word retains +ColdWitness / icekylinx PR1005, PR1018 including rohanarun PR987, NewBArch / +Jeremy Kothe PR869, and the PR799/741/685/645/635/589 lineage and all source +notices preserved in the pinned source packages. + +The independent owner checker is adapted from Hao Yan / FanPUYen's PR858 +indep16.py, through the existing mixed-provider adaptation for seslly. It +continues to reconstruct literal event windows, physical charts and the +invoice without importing the owner constructor or controller auditor. +The native word and phase checks use the pinned PR635 and retained main +sources without changing their mathematical predicates. All consumed source +packages retain their original licenses, contributor notices and AI disclosures. + +Alexander Schwartzman's PR1030, and its PR1090 composition, are credited as +concurrent work on narrower ends; they are not dependencies of this opposite +entrance change. Rohan Arun's PR1094 is a concurrent owner-only improvement +used for frontier comparison, not as a source. No exclusive priority is claimed +for general entrance tradeoffs, packing, frame lowering, or independent replay. diff --git a/research/demote635-t16/README.md b/research/demote635-t16/README.md new file mode 100644 index 0000000000..e8d1e7b8e0 --- /dev/null +++ b/research/demote635-t16/README.md @@ -0,0 +1,115 @@ +# Conditional κ = 0.001672780159952542 from four lower entrance frames + +The exact conditional certificate is **836390079976271 / 500000000000000000**. +It improves pinned PR1087's `0.001672654541898561` by +`125618053981 / 10^18`. The conservative certificate is +`0.001672780157102838`; the native complex lower endpoint is +`1675583042021589509879 / 10^24`. The retained PR589 bit supplier is unchanged +and freshly repriced. This is a finite conditional construction, not an +unconditional multiplication theorem or a claim of κ > 0.01. + +The change reverses one of the entrance promotions introduced by PR664 and +retained in the k8 construction. Helpers **635, 637, 638, 639** enter at +`span(298,170,102,30)` instead of `span(298,170,102,30,1)`; twelve phase-B +frames, at indices 372 through 383, decrease accordingly. Every scalar +instruction, source access, center, helper end and cleanup instruction is +unchanged. The new helper widths are five instead of four. + +A wider helper is useful here because PR1087 leaves many one-rank gaps next +to width-four roles. At each of 109 eligible complete calls, a deterministic +permutation of equal-width owner positions puts the four affected helpers in +four such gaps, and their increased widths fill those gaps. The permutation +stays within a call, preserving its occupied families and event windows. +Affected bins are repacked contiguously and checked in full. The other 35 +calls use the original word. There is no split helper or additional call. + +## Complete cost + +Writing H_r for a paid rank-r child, the local change per altered call is +`-8 H1 + 8 H2 + 4 H3 - 4 H4`, with rank mass +4. Filling four unit gaps +removes another `4 H1`. The global delta is therefore exactly +`109 * (-12 H1 + 8 H2 + 4 H3 - 4 H4)`, with zero change in total rank mass. +This is a change to the paid recursive profile, not merely an ADD/XOR count. +The exact moment engines price the literal aggregate rather than extrapolating +from a numerical local score. + +| Quantity | Certificate | +|---|---:| +| Complete calls / whole helper roles | 144 / 69,120 | +| Original / changed provider calls | 35 / 109 | +| Paid rank mass / deficit | 1,041,408 / 5,120 | +| Idle children | 1,844 H1 + 378 H3 + 6 H7 + 4,866 H48 | +| Exact prefix / charged prefix bits | 397 / 512 | +| Physical row coefficient / retained budget | 16,469 / 20,161 | + +The full global profile is +`348300 H1 + 61064 H2 + 63022 H3 + 20012 H4 + 11808 H5 + 6 H7 + 1152 H8 + 4866 H48`. +The unchanged controller checks source access, both orientations, wrappers, +restoration, charts, every recursive child, the finite invoice and all 47 +strict outer inequalities. No purported saving is credited outside that invoice. + +## Reproduce + +From a full repository checkout, with Python 3.12+ and Git: + +```sh +python3 -B research/demote635-t16/reproduce.py --out /tmp/demote635-fresh +``` + +The output directory must be new. Expected final line: + +```text +PASS_DEMOTE635_T16_COMPLETE_ADMISSION 0.001672780159952542 +``` + +The first run fetches missing immutable source commits. `--main /path/to/repo` +can supply the main dependency tree when this package is checked out sparsely. +No optimizer or third-party Python package is needed. `SOURCES.json` pins +base **2921874911956718fcaaaf9396fe8267b3cfa9f0**, PR1087 at +**589d1cedf5ef5f231182f4ec86408616311a8af0**, and the PR635 native verifier at +**a6895a69f8ad98ab45777b03e9e6f48888c39f6f**. The parent manifest and every +consumed main-file pin are checked. The literal baseline word is bound to +PR1087's construction payload hash. + +The command reconstructs the changed word and owner permutation, freshly +replays both 704-column scalar words in both orientations, both sets of +2,896 exact phase edges, wrappers and independent frame/cone audits, and then +replays the parent and mixed global admissions. It rejects 19 additional +frame/scalar/profile mutations, 23 controller mutations, 114 admission +mutations, 12 bit-supplier mutations and six independent owner mutations. +Each native word also carries its 25 native controls. Optimized Python is +rejected before any output is created. Regenerated containers are compared +through the inherited semantic identities; committed source containers retain +exact hashes. + +The portable command starts from the pinned literal word. It does not rerun +the historical k8 search/generator chain or the unchanged PR589 bit circuit. +Those are inherited evidence, not claimed as fresh work. The affected native +and global checks are fresh. This package changes no shared generator, +selected-frontier artifact or `upstream/` file; repository-wide historical +suites and hosted CI are separate from its scoped verification. + +## Scope, prior work and overlap + +PR664 established entrance promotion; PR685 and the subsequent k8 lineage +composed it with other changes. This contribution reverses one group against +the new T16 owner geometry. The older observation that promoting every group +can lose to packing costs is retained. The new evidence is the explicit +opposite transformation, within-call placement and admitted complete profile +on PR1087. It does not claim a new general optimization theorem. + +PR1090 independently constructs narrower k8 ends and explicitly reports a +smaller pending κ. Our saved earlier helper543 narrow-end experiment was +also superseded. Neither is a dependency of this word. PR1094's verified +`0.001672660197076918` and PR1107's reported fully replayed +`0.001672765980186726` were checked during preparation and are below this +result. `VALIDATION.json` records the final metadata refresh. Neither +concurrent owner map is consumed. Historical and bounded unsuccessful investigations are +summarized in `SEARCH.json`; none is an impossibility proof. + +All-size recursive compilation, common labels and mutable-source realization, +whole-call physical hosting, precision/tape accounting, exact recovery, +analytic transfer and PR589 bit assumptions H1–H5 remain inherited obligations. +The finite checks neither discharge these contracts nor constitute a full +Lean proof. Contributor credit and substantial AI assistance are disclosed in +`NOTICE.md`. diff --git a/research/demote635-t16/SEARCH.json b/research/demote635-t16/SEARCH.json new file mode 100644 index 0000000000..93538c655a --- /dev/null +++ b/research/demote635-t16/SEARCH.json @@ -0,0 +1,46 @@ +{ + "assignment_seed": 17, + "randomness": "OS-generated in the original sprint assignment; retained for this continuation", + "source_word_sha256": "c2b294300760e1fd6eeab8c22c4d13e4633dca40e52cac8da0d68163a76e3ca8", + "selection": "After negative fixed-cell searches and a superseded narrower-end contribution, test the opposite entrance/packing tradeoff. Helpers 635,637,638,639 are the first group in the source promotion frame recipe.", + "completed_coverage": [ + { + "object": "21-gate leaver cells on new k8 word", + "domain": "All 720 simultaneous S6 source/target relabelings in each of eight cells; fixed external frame boundaries", + "attempted": 5760, + "feasible": 5760, + "result": "No paid-profile improvement in this class", + "method": "Finite subspace-factor elimination with numerical nomination costs; no formal optimum theorem claimed", + "limits": "180 seconds per cell; 200000 assignments per separator; neither limit reached" + }, + { + "object": "Alternative pair-only 21-gate cell", + "domain": "All 720 permutations in cells 01+ and 23+ with fixed boundaries", + "result": "No feasible frame schedule in these boundary-restricted classes" + }, + { + "object": "Forward frame closure for cell 23+", + "domain": "720 original and 720 alternative pair-only permutations", + "result": "Original: 720 feasible, no improvement. Alternative: none feasible with fixed ends." + }, + { + "object": "Entrance promotions on new word", + "domain": "64 single rank-one promotions and same-cap groups/consecutive pairs, 96 distinct candidate sets", + "result": "96 forward-frame candidates; no profitable unmodified-owner placement on PR1087" + }, + { + "object": "One four-helper promotion plus local owner reassignment", + "domain": "24 seeded neighborhoods of 31 owner bins on PR1087, 15 second MILP limit each", + "result": "No complete-cost improvement found; time limits are not infeasibility proofs" + }, + { + "object": "Opposite entrance change selected here", + "domain": "Reverse one known four-helper promotion; inspect all 144 calls for four width-four roles in distinct one-rank-gap owner positions", + "attempted": 144, + "eligible": 109, + "result": "Literal recipe plus deterministic within-call permutations; exact native and complete assembly replay", + "stopping_rule": "Stop exploration and package the first fully admitted frontier improvement" + } + ], + "scope": "A finite search record, not an impossibility or global optimality claim. Earlier smaller-end evidence is retained on a separate local branch and is not submitted in this contribution." +} diff --git a/research/demote635-t16/SOURCES.json b/research/demote635-t16/SOURCES.json new file mode 100644 index 0000000000..97b0ad52d4 --- /dev/null +++ b/research/demote635-t16/SOURCES.json @@ -0,0 +1,12 @@ +{ + "base_commit": "2921874911956718fcaaaf9396fe8267b3cfa9f0", + "repository": "https://github.com/CrocSwap/integer-mult-bounds.git", + "parent_pr": 1087, + "parent_commit": "589d1cedf5ef5f231182f4ec86408616311a8af0", + "parent_package": "research/gauge44-slots-t16", + "parent_manifest_sha256": "fe55cb2812dc863a4bcd9e6083474f7aa986d2095ef66ae210ba85b251fe86c9", + "native_commit": "a6895a69f8ad98ab45777b03e9e6f48888c39f6f", + "native_package": "research/complex-571-cold14-st2", + "comparison_kappa": "0.001672654541898561", + "baseline_payload_sha256": "c2b294300760e1fd6eeab8c22c4d13e4633dca40e52cac8da0d68163a76e3ca8" +} diff --git a/research/demote635-t16/VALIDATION.json b/research/demote635-t16/VALIDATION.json new file mode 100644 index 0000000000..623e2edcd6 --- /dev/null +++ b/research/demote635-t16/VALIDATION.json @@ -0,0 +1,195 @@ +{ + "status": "PASS_DEMOTE635_T16_COMPLETE_ADMISSION", + "timestamp_utc": "2026-10-13T18:22:43.591531+00:00", + "python": "3.14.3", + "platform": "Linux-6.6.114.1-microsoft-standard-WSL2-x86_64-with-glibc2.39", + "command": "python3 -B research/demote635-t16/reproduce.py --out /tmp/demote635-fresh", + "expected_final_line": "PASS_DEMOTE635_T16_COMPLETE_ADMISSION 0.001672780159952542", + "base_commit": "2921874911956718fcaaaf9396fe8267b3cfa9f0", + "current_main_checked": "ba82555c64e1879e4b7decce28186f208fcb8262", + "selected_kappa": "0.001672188119205421", + "selected_certificate_sha256": "093f35445812ea96fe1bfe6a3af7d769cb7f274e08f4fb30f71a17ed1161e54e", + "strongest_pending_found": { + "pr": 1107, + "commit": "6123fc5d57db16aaa3e8a26b4a11a34b46c0c391", + "kappa": "0.001672765980186726", + "verification": "Reviewed published full-replay receipt and pinned body; not independently rerun here", + "body_sha256": "43e1cb33e7df0b27dbc218b05493ed0b8519f419ff8d1028d96ad9583291ef94" + }, + "original_parent_independently_replayed": "0.001672654541898561", + "new_kappa": "0.001672780159952542", + "certificate_sha256": "085240f74653f666483fc50e753e690076f3749652f527d797c74d7fb488f7fc", + "complete_replay": { + "status": "PASS_DEMOTE635_T16_COMPLETE_ADMISSION", + "kappa": "836390079976271/500000000000000000", + "kappa_decimal": "0.001672780159952542", + "comparison": "0.001672654541898561", + "parent_commit": "589d1cedf5ef5f231182f4ec86408616311a8af0", + "reused_native_receipts": false, + "historical_generators_rerun": false, + "stages": [ + { + "name": "baseline-native", + "exit_code": 0, + "seconds": 2.45564186014235, + "log_sha256": "d8e8e14dc7d129f750263432acd2e6d43660088cac4d28f3df74b961597689df" + }, + { + "name": "demote635-native", + "exit_code": 0, + "seconds": 2.47691666521132, + "log_sha256": "8fcd2b7099d241543612a9d56ea004c9e59365f200d22a4b78be4f94f2ae984f" + }, + { + "name": "demote635-ledgers", + "exit_code": 0, + "seconds": 1.6248648380860686, + "log_sha256": "b14de1fedfeb69b45c6fdb5f473b58db85c5717485ef9c22ca9a14d34920b1b7" + }, + { + "name": "baseline-ledgers", + "exit_code": 0, + "seconds": 1.6725955102592707, + "log_sha256": "b14de1fedfeb69b45c6fdb5f473b58db85c5717485ef9c22ca9a14d34920b1b7" + }, + { + "name": "baseline-replay", + "exit_code": 0, + "seconds": 10.468848366755992, + "log_sha256": "dd643a58258431c3b07d3b06d9060c49677fa23b4fafc9f10988ed1f6867bd9a" + }, + { + "name": "demote635-replay", + "exit_code": 0, + "seconds": 10.785172946751118, + "log_sha256": "dd643a58258431c3b07d3b06d9060c49677fa23b4fafc9f10988ed1f6867bd9a" + }, + { + "name": "baseline-wrappers", + "exit_code": 0, + "seconds": 3.5273831537924707, + "log_sha256": "74b13cf8570ca2f32ce0018575b1b73e95af77a28e59d09556fec59260bdbba5" + }, + { + "name": "demote635-wrappers", + "exit_code": 0, + "seconds": 3.502564233262092, + "log_sha256": "74b13cf8570ca2f32ce0018575b1b73e95af77a28e59d09556fec59260bdbba5" + }, + { + "name": "demote635-phases", + "exit_code": 0, + "seconds": 260.3493890450336, + "log_sha256": "7f2dfa39f76041c762082b1536632cf2a98d4d9fcd35b7ac842688d8466d3447" + }, + { + "name": "baseline-phases", + "exit_code": 0, + "seconds": 261.4879500339739, + "log_sha256": "4726249ba9f6f4749bc0801a05c6dc0d9ece8f0781bdbc52e2a48464d3d0a704" + }, + { + "name": "demote635-independent", + "exit_code": 0, + "seconds": 1.7449822002090514, + "log_sha256": "1bfd0f38e1074db33d40a9b5392f5703e3533b5d6fa52922fe363f1bbc2227fa" + }, + { + "name": "baseline-independent", + "exit_code": 0, + "seconds": 1.7277825130149722, + "log_sha256": "e1901fd65a13e3deb87a61c9d4e98ffdfdc01620cde7c62093b599bba0f8e996" + }, + { + "name": "frame-controls", + "exit_code": 0, + "seconds": 22.178192127961665, + "log_sha256": "7d95d5aef4bddd23970735a4484c2e7387d3feb74687cd15f944739583012f52" + }, + { + "name": "parent-global", + "exit_code": 0, + "seconds": 44.75049162795767, + "log_sha256": "61315b8cd591e8449f6b1cc9c9101f9f51365d55a87324fedeba9ecceae860d9" + }, + { + "name": "bind", + "exit_code": 0, + "seconds": 0.88689442910254, + "log_sha256": "71f679ce5a123fb58397fd6852ba64ce3832fd20e81a096bfda9a1cf3237237a" + }, + { + "name": "emit", + "exit_code": 0, + "seconds": 9.100694564171135, + "log_sha256": "1b8bb2c28631681d8851d15ad58c6b9d42ea6a9148ace1e8e993d5f723195fe4" + }, + { + "name": "audit", + "exit_code": 0, + "seconds": 38.69421512912959, + "log_sha256": "4466d5aba2f484e17a16a165f20a54d749faf2a62b93a9ba27c6b43d311e9c87" + }, + { + "name": "invoice", + "exit_code": 0, + "seconds": 2.490774909965694, + "log_sha256": "a170b499b4794548aa16135780aa9f8b0d30d350777c45be5eb5531f932f2b78" + }, + { + "name": "assembly", + "exit_code": 0, + "seconds": 0.6091321450658143, + "log_sha256": "bff551b9c7f2f51ebcf09c9596007208816caeb63caafd9a8d9cf7d823015ac3" + }, + { + "name": "ADMISSION-CONTROLS", + "exit_code": 0, + "seconds": 0.9283226630650461, + "log_sha256": "40f0c35552fb10f02288ae8d2c6b9f902050fb370c0a19b7b88c977d0d44dab1" + }, + { + "name": "BIT-CONTROLS", + "exit_code": 0, + "seconds": 1.2093602321110666, + "log_sha256": "d54d260bf95bd8ae4ab8846314082b93b2e3d8f427eb35376691f2ce543a6b67" + }, + { + "name": "independent-owners", + "exit_code": 0, + "seconds": 1.756557781714946, + "log_sha256": "9a822ed55b91969189acb1bb1bbdcebafc800855952fbd5e91c5d977c29cbbf9" + } + ], + "scope": "Exact finite words, phases, whole-owner geometry and invoices. PR589 bit circuit cited and repriced. Inherited uniform/compiler, realization/hosting, precision/tape and analytic obligations remain conditional." + }, + "additional_checks": { + "optimized_python_rejected_before_output": true, + "exact_global_profile_delta": { + "1": -1308, + "2": 872, + "3": 436, + "4": -436 + }, + "native_controls_per_word": 25, + "focused_controls": 19, + "controller_controls": 23, + "admission_controls": 114, + "bit_controls": 12, + "independent_owner_controls": 6, + "outer_strict_constraints": 47 + }, + "fresh_vs_prototype": { + "identical_mathematical_fields": true, + "different_provenance_hash_fields": [ + "template_sha256", + "input_sha256" + ], + "explanation": "Each run binds its own rebuilt template and input receipts; the public fresh-run certificate is retained." + }, + "reuse": { + "historical_k8_generator_chain": "Inherited source-pinned literal word; not rerun by portable command", + "unchanged_bit_circuit": "Inherited PR589 circuit; full supplier repricing and 12 controls freshly run" + }, + "scope": "Fresh finite certificate replay, not full all-size theorem formalization. No repository-wide suites or hosted CI claimed." +} diff --git a/research/demote635-t16/construct.py b/research/demote635-t16/construct.py new file mode 100644 index 0000000000..2217564d7f --- /dev/null +++ b/research/demote635-t16/construct.py @@ -0,0 +1,115 @@ +"""Reverse one entrance promotion and fill literal unit gaps; Apache-2.0. + +Prepared for seslly with substantial OpenAI Codex assistance. +No optimizer is needed to reconstruct this certificate. +""" +from collections import defaultdict +import copy +import gzip +import hashlib +import json +from pathlib import Path +import shutil + +if not __debug__: + raise RuntimeError('Assertions required; do not use -O') +HERE = Path(__file__).resolve().parent + + +def read(path): + raw = path.read_bytes() + return json.loads(gzip.decompress(raw) if path.suffix == '.gz' else raw) + + +def sha(path): + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def dump(path, value): + path.write_text(json.dumps(value, sort_keys=True, separators=(',', ':'))+'\n') + + +def build_word(output): + recipe = read(HERE/'data/RECIPE.json') + raw = gzip.decompress((HERE/'data/BASELINE-WORD.json.gz').read_bytes()) + assert hashlib.sha256(raw).hexdigest() == recipe['input_sha256'] + word = json.loads(raw) + for helper, before, after in recipe['entrances']: + assert word['start_extra'][str(helper)] == before + word['start_extra'][str(helper)] = after + for section, index, before, after in recipe['frames']: + assert word[section][index][-1] == before + word[section][index][-1] = after + word['report'].update(local_profile=recipe['local_profile'], + local_rank_mass=sum(int(r)*n for r,n in recipe['local_profile'].items()), + width_inventory=recipe['width_inventory']) + raw = json.dumps(word, sort_keys=True, separators=(',', ':')).encode() + assert hashlib.sha256(raw).hexdigest() == recipe['output_sha256'] + output.write_bytes(gzip.compress(raw, mtime=0)) + + +def nominate(parent, output): + data = output/'data' + data.mkdir(parents=True) + original = read(parent/'data/OWNERS.json.gz') + owners = copy.deepcopy(original) + plan = read(parent/'data/PLAN.json') + recipe = read(HERE/'data/RECIPE.json') + banks, calls, eligible = defaultdict(list), defaultdict(dict), defaultdict(list) + def bank(z): return z['owner_replica'], z['child'], z['port'] + for i,z in enumerate(original): + banks[bank(z)].append(i) + calls[z['time']][z['helper']] = i + remaining = {k: plan['windows'][f'{k[0]},{k[1]}'][0] - + sum(original[i]['width'] for i in indices) for k,indices in banks.items()} + for i,z in enumerate(original): + if z['width'] == 4 and remaining[bank(z)] == 1: + eligible[z['time']].append(i) + times = [t for t in range(144) if len(eligible[t]) >= 4] + assert times == recipe['calls'], 'literal eligible calls' + fields = ('owner_replica','child','port','copy','family','offset') + for t in times: + source = [calls[t][h-224] for h,_,_ in recipe['entrances']] + destination = eligible[t][:4] + touched = set(source) | set(destination) + permutation = dict(zip(source,destination)) + permutation.update(zip(sorted(touched-set(source)), sorted(touched-set(destination)))) + assert set(permutation) == set(permutation.values()), 'within-call bijection' + for i,j in permutation.items(): + assert original[i]['width'] == original[j]['width'] == 4 + for field in fields: owners[i][field] = original[j][field] + for i in source: owners[i]['width'] = 5 + banks = defaultdict(list) + for i,z in enumerate(owners): banks[bank(z)].append(i) + for k,indices in banks.items(): + if all(owners[i] == original[i] for i in indices): continue + offset = 0 + for i in sorted(indices, key=lambda j:(owners[j]['time'],owners[j]['helper'])): + owners[i]['offset'] = offset + offset += owners[i]['width'] + assert offset <= plan['windows'][f'{k[0]},{k[1]}'][0], 'whole-bin capacity' + dump(data/'OWNERS.json',owners) + registry = read(HERE/'data/REGISTRY.json') + plan['provider_registry']['demote635'] = registry + for call in plan['provider_calls']: + if call['time'] in times: + call['provider'] = 'demote635' + call['local_program_sha256'] = registry['orientation_program_sha256'][call['orientation']] + for call in plan['per_call_widths']: + if plan['order'].index([call['stage'],call['replica']]) in times: + call['widths'] = registry['widths'] + spec = read(HERE/'data/SPEC.json') + plan.update(status='FROZEN_DEMOTE635_109_CALLS',mode='demote635', + profile=spec['expected']['global_profile'], + solver_status='within-call owner permutations filling four unit gaps',gap=None, + source_plan_sha256=sha(parent/'data/PLAN.json'), + source_owners_sha256=sha(parent/'data/OWNERS.json.gz'), + assignment_sha256=sha(data/'OWNERS.json'), + assignment_content_sha256=hashlib.sha256(json.dumps(owners,sort_keys=True,separators=(',',':')).encode()).hexdigest()) + dump(data/'PLAN.json',plan) + assert sha(data/'OWNERS.json') == spec['data']['owners_sha256'] + assert sha(data/'PLAN.json') == spec['data']['plan_sha256'] + shutil.copyfile(HERE/'data/SPEC.json',data/'SPEC.json') + pivot = Path(spec['pivot_swap']['recipe']) + (output/pivot).parent.mkdir(parents=True) + shutil.copyfile(parent/pivot,output/pivot) diff --git a/research/demote635-t16/controls.py b/research/demote635-t16/controls.py new file mode 100644 index 0000000000..066bd12ec8 --- /dev/null +++ b/research/demote635-t16/controls.py @@ -0,0 +1,71 @@ +"""Geometric and scalar failures, checked beyond construction hash pins. + +Apache-2.0; prepared for seslly with substantial OpenAI Codex assistance. +""" +import argparse +import contextlib +import copy +import gzip +import importlib.util +import io +import json +from pathlib import Path + +def read(path): + raw=path.read_bytes() + return json.loads(gzip.decompress(raw) if path.suffix == '.gz' else raw) + +if not __debug__: + raise RuntimeError('Assertions required; do not use -O') + + +def main(): + ap = argparse.ArgumentParser() + for name in ('source', 'word', 'out', 'main', 'recipe'): + ap.add_argument('--'+name, type=Path, required=True) + a = ap.parse_args() + loader = importlib.util.spec_from_file_location('independent_demotion_audit', a.source/'independent/audit_local.py') + audit = importlib.util.module_from_spec(loader) + loader.loader.exec_module(audit) + word = read(a.word) + recipe = read(a.recipe) + a.out.mkdir() + mutations = [] + for helper, before, after in recipe['entrances']: + bad = copy.deepcopy(word) + bad['start_extra'][str(helper)] = before + mutations.append((f'old-entrance-{helper}', bad, ('frame not monotone',))) + for section, index, before, after in recipe['frames']: + bad = copy.deepcopy(word) + bad[section][index][-1] = before + mutations.append((f'old-frame-{section}-{index}', bad, ('frame not monotone','paid profile mismatch'))) + bad = copy.deepcopy(word) + bad['start_extra']['635'] = [1,2,4,8] + mutations.append(('wrong-entrance-plane', bad, ('frame not monotone',))) + bad = copy.deepcopy(word) + bad['report']['local_profile']['1'] += 1 + mutations.append(('unpaid-profile', bad, ('paid profile mismatch',))) + bad = copy.deepcopy(word) + bad['B'][372][3] *= -1 + mutations.append(('wrong-scalar-sign', bad, ('nonzero entrance response',))) + rejected = [] + for name, bad, reason in mutations: + path = a.out/(name+'.json.gz') + path.write_bytes(gzip.compress(json.dumps(bad).encode(), mtime=0)) + try: + with contextlib.redirect_stdout(io.StringIO()): + audit.run(path, a.out/(name+'-unexpected.json'), a.main) + except RuntimeError as exc: + assert any(r in str(exc) for r in reason), (name, str(exc)) + rejected.append(dict(name=name, reason=str(exc))) + else: + raise AssertionError('Mutation accepted: '+name) + path.unlink() + assert len(rejected) == 19 + (a.out/'RESULT.json').write_text(json.dumps(dict(status='PASS_DEMOTE635_FOCUSED_CONTROLS', + rejected=rejected), indent=2)+'\n') + print('PASS_DEMOTE635_FOCUSED_CONTROLS', len(rejected)) + + +if __name__ == '__main__': + main() diff --git a/research/demote635-t16/data/BASELINE-WORD.json.gz b/research/demote635-t16/data/BASELINE-WORD.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..95ca498fc2188fce7d69fee197e550bad69c251e GIT binary patch literal 57222 zcmZ6x1yoyI8#Ef+-QA13LvaWciaW(A!QI{6TRgZFcXzh}#Wgs^wYc}v_xrD`n|0Ps zPI6ANvgUbaX3yRfF^GVF4``UqE=cuWTNtVy6KVyi7C`{YPd3t59+`F-Y5J$qxgF_74Wtz_67-f9@%s5{;QDI{rBa1 z^Y1Iur0C9mU}n|g+6#9hiGzH{(W(LdYT>lKQN0v5`Nrm{4vxh>w>2M|)Ai^1xU;|4 zVt;pg-fk0Sg+6PpyW$bj^|~M6v?P2C_w*{JClA@(x4Ov-y#tp+Yi!Ur@~-xx#yXCQh4MComEG;Nm7nD_z2ELG2;tCEHJTn76)X9dP-^P)ze{AiWOajy6pRtY{La9!j&Ba=#>t1x$uZi-} zf7`XOsOVYdu>dVBttj1cUR1e zv%gyVm@)G^)SbD}Cf`7!o^yA9bn*vZkIOL$3HmD>(M=#$$P6zqLBi5Q@>#%lZ*3~e z2ZR$%%0seN*+#@|4>w%ZD?lj9wU--pPuX}9G3Rs>3J#ko3|OWAP!;Gfe8=P-(ipk_ z2s0Few=P%l2WF3#Vu*z;&Vx)KUl&fLW9W><5bbwZTT~bcw*ncD@S5$PWl(RmWJDZ% zW$18BE^2CiDEZ3qOK-9GSq@~|USqkFp%Nb%EJ#w zR2Ao!?C3wUBJFmrw)n-{fFzBc8RfK0+D60~55conM&dThxJt-aKx`5_EgCB_j{sM3 zMEk!Z#yxDYkJAq0CT&C0THLuK6KxObsSbS`Wi}*^VlFU{o&5ecK@+fMl}Kf)M_7uU z;N)%m8ad>qVV@X9;lA<&l24895S~lZ? z6#9wA1;xD-Yn8WU08M05RcAj>aC={1wi3Gbuma{#WkJAERIHFRU(A#CAuOl0erO$lU;R7EkJ*NG*LQQd7I zBO1i7uqdg=5$&}$ZwAKzI+mYy2>g zTvCIsMKf>Twmu=2QUIcht=^dvJCvPJ= z2Zl_>^jVwKW^ngE5tg>VBLd^``_8b!dOvc{dIE{36O4HBNMWUE5$7Rp0sw9-!h*J=}5 zu;tXYEoZnSEmDQ*#AJ}yl?fC+|kxL~H?9jnRz(`HG8?&UHpG6DHC1U%da9civ3&YC2eG1IBNC>YzzpkZnVr5k8 zip#Yv)alLm)&Lb^+x*%`?rKV*YqaS&oYlB#QFJ50+<@Y`oRvX^A`?WaCMl>u&@G~g zic1ay;TqxuVGxm-LPrK%$R%%!l$TZG?AC`qX!QoDuR%fXITe|-X3+Ndz=I4X6Ck2d z+?kuwv1@_+bYMhLH~NgoIN*rjUx`&Q91++qwPp|6a4m9(FXGxy(7MgrIyMZORX}wN z|1JcgR1?%7OK=Ax${*$^Qm!4>t~(3Y50~ohg5bbo`_!5Hdss&<{Gahm`@i6Zt$(3! z{BrYiC&O|OC(g3~D~I|+L7e4Q*Jz**77FvO3wl!4H0KzoMEap9$at#>keYwc_KRd5 z=`0npEs8Kn%+I_$;T+V$0LZD9U$H+#1Wu^${wtbJ@P!jCr@(Zkh+zodnq%mE*SK#M0;F*IJj^{}Oz&N;yf$Y2yJvAC?7LktL(sES z*^FJ;^O)D{zyAYKz~fq3>i%n_Vykp%_Ts1v3t*a*oC;NF1V<(WWkMi`2>d@3Y2Hx` zvXH_!$G}`BC3`_cZM@bWU?B>57d@{Z66sj|7-l}%>H=AZ9qx`xZI9@*`3;@>9Z)gj zQaD?^laaS5O|tpx$?ttA-t1@wDht^U1=GAUC$wO>BTXxNCsXKTO8bc z)JWEok+j(jy&^1xk6_lf< z)R6;HYQcQ7Z<9(Al69zaOGHBBr27B(GTU5q^IiM$1mArU`1M`�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 bit and pivots[upper] >> bit & 1: + pivots[upper] ^= pivots[bit] + return tuple(pivots[bit] for bit in sorted(pivots, reverse=True)) + + +def local_inventory(word, replay): + global RH + require((word['v'], word['h']) == (V, H) and 0 < word['R'] <= R, 'local supplier dimensions') + RH = word['R'] + frames = [basis(frame) for frame in word['frames']] + n = 2 * V + RH + require(len(word['start']) == len(word['final']) == n, 'local frame vector lengths') + current = [frames[f] for f in word['start']] + paid = Counter() + + def climb(register, frame): + require(basis(current[register] + frame) == frame, 'nonmonotone local frame') + jump = len(frame) - len(current[register]) + if jump: + paid[jump] += 1 + current[register] = frame + + require(not word['target_levels'], 'this audit requires the current zero-level centre interface') + for section in ('A', 'B', 'tail'): + if section == 'B': + require(all(current[t] == () for t in range(V, 2 * V)), 'target centre level') + for q, frame_id in zip(word['centers'], word['center_frames']): + require(current[q] == frames[frame_id], 'centre carrier frame') + paid[len(frames[frame_id])] += 1 + for gate in word[section]: + registers = gate[1:3] if gate[0] == 'add' else gate[1:2] + require(gate[0] in ('add', 'scale'), 'unknown scalar gate') + for register in registers: + climb(register, frames[gate[-1]]) + for register, frame_id in enumerate(word['final']): + climb(register, frames[frame_id]) + require(dict(paid) == {int(r): count for r, count in word['local_profile'].items()}, 'local paid-profile recount') + for orientation in ('forward', 'backward'): + require(dict(paid) == {int(r): count for r, count in replay['paid_profiles'][orientation].items()}, 'local replay profile binding') + widths = [len(frames[word['final'][q]]) - len(frames[word['start'][q]]) for q in range(2 * V, n)] + require(Counter(widths) == EXPECTED_WIDTHS, 'current supplier width inventory') + return widths, paid + + +def make_context(parent, phases, ports, word, replay, roles): + widths, paid = local_inventory(word, replay) + require(len(parent['calls']) == 72 and {(c['stage'], c['replica']) for c in parent['calls']} == {(s, r) for s in range(9) for r in range(8)}, 'original eight-replica baseline calls') + require(len(roles) == 9 * T * RH, 'complete helper role count') + address = {} + for role in roles: + key = (role['stage'], role['replica']) + time = role['time'] + require(time not in address or address[time] == key, 'inconsistent invocation time address') + address[time] = key + require(set(address) == set(range(9 * T)), 'contiguous invocation times') + order = [address[t] for t in range(9 * T)] + require(set(order) == {(s, r) for s in range(9) for r in range(T)}, 'stage/replica inventory') + require(all(order[2*t+1] == (order[2*t][0], order[2*t][1]+8) and order[2*t][1] < 8 for t in range(72)), 'two-copy interleaving') + rank = {child['child']: child['rank'] for child in parent['idle_children']} + source = parent['execution_schedule'] + blocks, stage = {}, None + for index, event in enumerate(source): + if event['kind'] in ('bank_padding_cover_sweep', 'translate_every_live_family'): + continue + if event['kind'] == 'local_cover_sweep': + stage = event['stage'] + blocks[stage] = [] + require(stage is not None, 'source event before first invocation') + blocks[stage].append((index, event)) + require(set(blocks) == set(range(9)), 'source stage inventory') + events = [(index, event, replica, time) for time, (stage, replica) in enumerate(order) for index, event in blocks[stage]] + projections = defaultdict(list) + for index, event, replica, time in events: + projections[replica].append(index) + require(set(projections) == set(range(T)) and all(p == list(range(30)) for p in projections.values()), 'per-replica source-event projection') + stage_pair = {e['stage']: e['pair'] for e in parent['recipe'] if e['kind'] == 'local'} + last, windows, callpos, child_pair, side = {}, {}, {}, {}, {} + bridges = 0 + for position, (_, event, replica, _) in enumerate(events): + kind = event['kind'] + if kind == 'local_cover_sweep': + stage = event['stage'] + callpos[stage, replica] = position + last[replica, stage_pair[stage]] = position + elif kind == 'bridge': + last[replica, event['src']] = last[replica, event['dst']] = position + bridges += 1 + elif kind == 'idle_cover_sweep': + for sd, child in enumerate(event['child_indices']): + if child in rank: + windows[replica, child] = (last.get((replica, event['pair']), -1), position) + child_pair[child], side[child] = event['pair'], sd + require(len(windows) == T * len(rank), 'actual window inventory') + require(len(ports) == V, 'port count') + bases = [] + for q in ports: + zero = next(i for i in range(H) if not (q >> i & 1)) + correction = q ^ (1 << zero) + axes = list(range(H)) + axes[0], axes[zero] = axes[zero], axes[0] + frame = [(1 << i) ^ (correction if correction >> i & 1 else 0) for i in axes] + [1 << i for i in range(H, M)] + require(all((x & y).bit_count() % 2 == int(i == j) for i, x in enumerate(frame) for j, y in enumerate(frame)), 'nonorthogonal owner basis') + bases.append(frame) + return dict(widths=widths, paid=paid, order=order, at={key:t for t,key in enumerate(order)}, rank=rank, + windows=windows, callpos=callpos, child_pair=child_pair, side=side, stage_pair=stage_pair, + bases=bases, phases=phases, bridges=bridges, event_count=len(events), replay=replay) + + +def check_roles(context, roles): + c = context + live, physical = T * 8 * V, T * 8 * V + 8 + R + 2 + require(len(roles) == 9 * T * RH, 'complete helper role count') + helpers, families, used = defaultdict(set), defaultdict(set), defaultdict(set) + charts, chart_cache = set(), {} + for z in roles: + s, r, helper = z['stage'], z['replica'], z['helper'] + owner, child, port = z['owner_replica'], z['child'], z['port'] + offset, width, family = z['offset'], z['width'], z['family'] + call = (s, r) + require(call in c['at'] and 0 <= helper < RH and 0 <= owner < T and 0 <= port < V, 'role coordinates') + require(z['time'] == c['at'][call], 'role invocation time') + require(width == c['per_call_widths'][call][helper], 'whole-helper residual width') + require(0 <= family < live, 'private-namespace collision') + require(child in c['rank'], 'unknown idle child') + require(z['copy'] == V * owner + port and family == owner * 896 + (2 * c['child_pair'][child] + c['side'][child]) * V + port, 'physical family identity') + lo, hi = c['windows'][owner, child] + require(lo < c['callpos'][call] < hi, 'strict bridge-aware idle window') + require(family // 224 != r * 4 + c['stage_pair'][s], 'helper aliases active data pair') + require(helper not in helpers[call] and family not in families[call], 'duplicate helper or family within whole invocation') + helpers[call].add(helper) + families[call].add(family) + cells = set(range(offset, offset + width)) + bin_key = (owner, child, port) + require(offset >= 0 and offset + width <= c['rank'][child] and not used[bin_key] & cells, 'overlapping or out-of-capacity slice') + used[bin_key].update(cells) + chart_key = (port, child, offset, width) + if chart_key not in chart_cache: + frame = c['bases'][port] + pending = list(map(int, c['phases']['recipes'][port]['idle_children'][child]['orthogonal_axes'])) + require(len(pending) == c['rank'][child], 'phase child rank') + occupied = [frame.index(x) for x in pending[offset:offset + width]] + spectators = [i for i in range(M) if i not in occupied][:H - width] + permutation = occupied + spectators + [i for i in range(M) if i not in occupied and i not in spectators] + require(len(occupied) == width and len(set(occupied + spectators)) == H and sorted(permutation) == list(range(M)), 'residual/spectator permutation') + require([frame[i] for i in permutation[:width]] == pending[offset:offset + width], 'pending-axis binding') + chart_cache[chart_key] = tuple(frame[i] for i in permutation) + charts.add(chart_cache[chart_key]) + require(set(helpers) == set(c['order']) and all(h == set(range(RH)) for h in helpers.values()), 'complete per-call helper inventory') + idle = Counter() + for owner, child in c['windows']: + for port in range(V): + cells = used[owner, child, port] + require(cells == set(range(len(cells))), 'gap in pending prefix') + left = c['rank'][child] - len(cells) + if left: + idle[left] += 1 + require(idle == EXPECTED_IDLE, 'nominated idle profile') + profile = Counter() + for call in c['order']: + profile.update(c['per_call_paid'][call]) + profile.update(idle) + mass = sum(rank * count for rank, count in profile.items()) + require(M * live - mass == 5120, 'doubled rank deficit') + require(c['bridges'] == 144, 'actual bridge count') + localbits = max(x['prefix_bits_upper'] for replay in c['provider_replays'] for x in replay['local'].values()) + prefix = localbits + (M + 1) // 2 + len(c['order']) + c['bridges'] + 4 + group = 2 ** (36 * 36) + for i in range(1, 37): + group *= 2 ** (2 * i) - 1 + stock = group * physical + row = 2 * stock.bit_length() + 9909 + 252 + 2 * 512 + require(prefix < 512, 'prefix reserve') + require(row < 20161 and M * M > 2 * max(profile) ** 2, 'row or halving reserve') + return dict(status='PASS_INDEPENDENT_T16_LITERAL_WINDOWS_CHARTS_PREFIX_ROW', roles=len(roles), calls=len(c['order']), + source_events_per_replica=30, expanded_replica_events=c['event_count'], bridge_events=c['bridges'], + literal_windows=len(c['windows']), checked_whole_helper_widths=len(roles), checked_busy_family_windows=len(roles), + orthogonal_port_bases=len(c['bases']), actual_73_axis_charts=len(charts), checked_slice_prefixes=len(c['windows']) * V, + local_profiles=[dict(sorted(p.items())) for p in c['provider_paid']], width_inventories=[dict(sorted(Counter(w).items())) for w in c['provider_widths']], + idle=dict(sorted(idle.items())), profile=dict(sorted(profile.items())), live=live, physical=physical, + rank_mass=mass, deficit=5120, namespace={'data':[0,live], 'centres':[live,live+8], 'tableau':[live+8,live+8+R], 'coefficient':[live+8+R,physical]}, + local_prefix_bits=localbits, local_prefix_from_native_receipt=True, local_profile_recounted=True, + prefix_formula=dict(local_scalar=localbits, input_l2=(M + 1) // 2, invocations=len(c['order']), bridges=c['bridges'], margin=4), + prefix_bits=prefix, charged_prefix_bits=512, physical_stock_bits=stock.bit_length(), + physical_row_coefficient=row, row_limit=20161, + scope='Finite role/window/chart and inherited prefix/row obligations. Requires separately admitted local supplier and emitted controller, complete finite invoice, exact moments and outer assembly; no all-size theorem is asserted.') + + +def controls(context, roles): + candidates = [] + first = roles[0] + bad = dict(first, family=14336) + candidates.append(('private_namespace_collision', [bad] + roles[1:], 'private-namespace collision')) + index = next(i for i, z in enumerate(roles) if z['replica'] >= 8) + bad = dict(roles[index], replica=roles[index]['replica'] - 8) + candidates.append(('copy_replica_alias', [bad] + roles[:index] + roles[index+1:], 'role invocation time')) + candidates.append(('missing_whole_helper', roles[1:], 'complete helper role count')) + split = dict(first, width=first['width'] - 1) + fragment = dict(first, offset=first['offset'] + first['width'] - 1, width=1) + candidates.append(('split_whole_helper', [split, fragment] + roles[1:], 'complete helper role count')) + candidates.append(('truncated_helper_width', [split] + roles[1:], 'whole-helper residual width')) + # Keep the family and chart valid, but move one complete role past its + # actual idle event. Freeze the original invocation order for controls. + crossing = None + for index, z in enumerate(roles): + lo, hi = context['windows'][z['owner_replica'], z['child']] + later = next((key for key in context['order'] if context['callpos'][key] >= hi), None) + if later is not None: + crossing = [dict(z, stage=later[0], replica=later[1], time=context['at'][later])] + roles[:index] + roles[index+1:] + break + require(crossing is not None, 'no idle-boundary control could be constructed') + candidates.append(('cross_idle_boundary', crossing, 'strict bridge-aware idle window')) + rejected = [] + for name, bad, expected in candidates: + try: + check_roles(context, bad) + except ValueError as exc: + require(str(exc) == expected, 'control rejected at unexpected predicate: ' + name) + rejected.append(dict(name=name, reason=str(exc))) + else: + raise ValueError('accepted negative control: ' + name) + return rejected + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--baseline-parent', type=Path, required=True) + parser.add_argument('--owners', type=Path, required=True) + parser.add_argument('--word', type=Path, required=True) + parser.add_argument('--second-word', type=Path, required=True) + parser.add_argument('--second-times', type=int, nargs='+', required=True) + parser.add_argument('--phases', type=Path) + parser.add_argument('--local-replay', type=Path) + parser.add_argument('--out', type=Path, required=True) + args = parser.parse_args() + phases_path = args.phases or args.baseline_parent.parent.parent / 'work/complex-nine-native/DATA-PHASES.json' + canonical_path = args.baseline_parent.parent / 'CANONICAL-WORD.json.gz' + replay_path = args.local_replay or args.word.parent / 'INDEPENDENT-LOCAL-REPLAY.json' + parent, phases, canonical, word, replay, roles = map(read, (args.baseline_parent, phases_path, canonical_path, args.word, replay_path, args.owners)) + require(replay['status'] == 'PASS_INDEPENDENT_LOCAL_SCALAR_FRAME_AND_WRAPPER_REPLAY', 'local replay status') + require(replay['canonical_word_sha256'] == filehash(args.word), 'local word/replay hash binding') + require(set(replay['local']) == {'forward', 'backward'}, 'both native prefix orientations') + require(word['ports'] == canonical['ports'], 'local/controller port interface') + require(len(word['center_frames']) == len(canonical['center_frames']) == 8, 'eight centre interfaces') + require([basis(word['frames'][f]) for f in word['center_frames']] == [basis(canonical['frames'][f]) for f in canonical['center_frames']], 'ordered centre-frame interface') + context = make_context(parent, phases, canonical['ports'], word, replay, roles) + # Generalize the unchanged event/window/chart check to the two independently + # recounted local providers. The caller also binds these times to PLAN dispatch. + second = read(args.second_word) + second_replay_path = args.second_word.parent / 'INDEPENDENT-LOCAL-REPLAY.json' + second_replay = read(second_replay_path) + require(second_replay['status'] == replay['status'], 'second replay status') + require(second_replay['canonical_word_sha256'] == filehash(args.second_word), 'second word/replay hash binding') + require(second['ports'] == word['ports'] and second['R'] == word['R'], 'second provider interface') + require([basis(second['frames'][f]) for f in second['center_frames']] == + [basis(word['frames'][f]) for f in word['center_frames']], 'second centre interface') + global EXPECTED_WIDTHS + original_widths = EXPECTED_WIDTHS + EXPECTED_WIDTHS = dict(original_widths) + EXPECTED_WIDTHS[4] -= 4 + EXPECTED_WIDTHS[5] += 4 + new_widths, new_paid = local_inventory(second, second_replay) + EXPECTED_WIDTHS = original_widths + expected_widths = list(context['widths']) + for h in (635,637,638,639): expected_widths[h - 224] += 1 + require(new_widths == expected_widths, 'only four demoted helper widths change') + require(len(args.second_times) == len(set(args.second_times)) and + all(0 <= t < len(context['order']) for t in args.second_times), 'distinct valid changed calls') + changed = {context['order'][t] for t in args.second_times} + context['per_call_widths'] = {call: new_widths if call in changed else context['widths'] for call in context['order']} + context['per_call_paid'] = {call: new_paid if call in changed else context['paid'] for call in context['order']} + context['provider_replays'] = [replay, second_replay] + context['provider_paid'] = [context['paid'], new_paid] + context['provider_widths'] = [context['widths'], new_widths] + receipt = check_roles(context, roles) + receipt['changed_times'] = sorted(args.second_times) + receipt['second_word_sha256'] = filehash(args.second_word) + receipt['second_replay_sha256'] = filehash(second_replay_path) + receipt['controls_rejected'] = controls(context, roles) + receipt['input_sha256'] = {str(path): filehash(path) for path in (args.baseline_parent, phases_path, canonical_path, args.word, replay_path, args.owners)} + args.out.write_text(json.dumps(receipt, indent=2) + '\n', encoding='utf-8') + print(receipt['status'], 'roles=' + str(receipt['roles']), 'controls=' + str(len(receipt['controls_rejected']))) + + +if __name__ == '__main__': + main() diff --git a/research/demote635-t16/reproduce.py b/research/demote635-t16/reproduce.py new file mode 100644 index 0000000000..5a4ef3795e --- /dev/null +++ b/research/demote635-t16/reproduce.py @@ -0,0 +1,165 @@ +"""Fresh finite replay of both words, the parent assembly, and the mixed assembly. + +Python 3.12+, Git, standard library; network on first fetch. Apache-2.0. +Prepared for seslly with substantial OpenAI Codex assistance. +""" +import argparse +from concurrent.futures import ThreadPoolExecutor +from fractions import Fraction +import gzip +import hashlib +import json +import os +from pathlib import Path +import subprocess +import sys +import tarfile +import threading +import time + +from construct import build_word, nominate, read, sha + +if not __debug__: + raise RuntimeError('Assertions required; do not use -O') +HERE = Path(__file__).resolve().parent + + +def main(): + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument('--out', type=Path, required=True) + ap.add_argument('--main', type=Path, default=HERE.parents[1], help='repository root (normally automatic)') + args = ap.parse_args() + root, out = args.main.resolve(), args.out.resolve() + out.mkdir(parents=True, exist_ok=False) + pins = read(HERE/'SOURCES.json') + stages, lock = [], threading.Lock() + + def extract(commit, package, label): + repository = root + if subprocess.run(['git', '-C', str(root), 'cat-file', '-e', commit], + stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL).returncode: + repository = out/(label+'.git') + subprocess.run(['git', 'init', '--bare', str(repository)], check=True, capture_output=True) + subprocess.run(['git', '-C', str(repository), 'fetch', '--depth=1', pins['repository'], commit], check=True) + archive, destination = out/(label+'.tar'), out/label + subprocess.run(['git', '-C', str(repository), 'archive', '--output', str(archive), commit, package], check=True) + destination.mkdir() + with tarfile.open(archive) as stream: + stream.extractall(destination, filter='data') + archive.unlink() + return destination/package + + parent = extract(pins['parent_commit'], pins['parent_package'], 'parent-source') + native = extract(pins['native_commit'], pins['native_package'], 'native-source') + assert sha(parent/'MANIFEST.json') == pins['parent_manifest_sha256'] + actual = {p.relative_to(parent).as_posix(): sha(p) for p in parent.rglob('*') + if p.is_file() and p != parent/'MANIFEST.json'} + assert actual == read(parent/'MANIFEST.json'), 'complete parent source manifest' + for name, digest in read(parent/'data/UPSTREAM-PINS.json').items(): + assert sha(root/name) == digest, 'main dependency: '+name + source = root/'research/complex-k492-owner-repair/vendor/multicold' + ancestor = source/'vendor/pr558' + old = ancestor/'vendor/pr552' + env = dict(os.environ, PYTHONDONTWRITEBYTECODE='1', PYTHONUTF8='1', PYTHONINTMAXSTRDIGITS='0', + MULTICOLD_SOURCE=str(source), GAIN_PR564_SOURCE=str(source)) + for key in ('PYTHONOPTIMIZE', 'WITNESS_DISCOVER', 'WITNESS_RECORD', 'WITNESS_SPEC', + 'XPARAM', 'EXTRAH', 'PAIRING_RANKS', 'DIAG', 'HYBBUDGET', 'PR635_CODE', 'SW4_PIN', 'LEC_REASON_PINS'): + env.pop(key, None) + + def run(name, script, *arguments, environment=None): + started, log = time.monotonic(), out/(name+'.log') + command = [sys.executable, '-B', str(source/'code/run_portable.py'), str(script), *map(str, arguments)] + with log.open('w') as stream: + result = subprocess.run(command, env=environment or env, stdout=stream, stderr=subprocess.STDOUT) + with lock: + stages.append(dict(name=name, exit_code=result.returncode, seconds=time.monotonic()-started, + log_sha256=sha(log))) + (out/'STEPS.json').write_text(json.dumps(stages, indent=2)+'\n') + assert result.returncode == 0, name+':\n'+log.read_text()[-5000:] + print('PASS', name, flush=True) + + baseline_word = HERE/'data/BASELINE-WORD.json.gz' + new_word = out/'DEMOTE635-WORD.json.gz' + build_word(new_word) + slot_pins = read(parent/'construction/slots/SLOT-PINS-k8.json') + assert hashlib.sha256(gzip.decompress(baseline_word.read_bytes())).hexdigest() == slot_pins['word_sha256'] == pins['baseline_payload_sha256'] + nomination = out/'nomination' + nominate(parent, nomination) + + def local(job): + label, word = job + target = out/label + run(label+'-native', native/'code/hpe_audit_and_transport.py', '--raw', word, + '--routing', old/'complex-local/inputs/phase-baseline/CANONICAL-WORD.json.gz', '--out', target) + run(label+'-ledgers', native/'code/hpe_emit_local.py', target) + run(label+'-replay', native/'code/hpe_audit_local.py', target) + run(label+'-wrappers', native/'code/hpe_adapters_local.py', target/'CANONICAL-WORD.json.gz', + target/'RESIDUAL-ADAPTERS.json', target/'WRAPPER-CHECKS.json') + run(label+'-phases', ancestor/'code/phases_full.py', target, old/'complex-global/vendor531/vendor/clifford') + run(label+'-independent', parent/'independent/audit_local.py', '--word', word, '--main', root, + '--output', out/(label+'-INDEPENDENT.json')) + + with ThreadPoolExecutor(max_workers=2) as pool: + list(pool.map(local, [('baseline', baseline_word), ('demote635', new_word)])) + checks = read(out/'baseline/LOCAL-CHECKS.json') + assert {k: v['sha256'] for k, v in checks.items()} == slot_pins['program_sha256'] + assert sha(out/'baseline/CLIFFORD-RECIPES.json') == slot_pins['clifford_recipes_sha256'] + run('frame-controls', HERE/'controls.py', '--source', parent, '--word', new_word, + '--recipe', HERE/'data/RECIPE.json', '--main', root, '--out', out/'frame-controls') + run('parent-global', parent/'verify_t16.py', '--main', root, '--local', out/'baseline', '--work', out/'parent-global') + baseline = read(out/'parent-global/ASSEMBLY.json') + assert baseline['kappa_decimal'] == pins['comparison_kappa'] + mixed = dict(env, WITNESS_SPEC=str(nomination/'data/SPEC.json')) + code, glob = parent/'code', out/'global' + + def global_run(name, script, *arguments): + run(name, code/script, *arguments, environment=mixed) + + global_run('bind', 'bind_providers_portable.py', '--baseline', out/'parent-global/parent16', + '--provider', 'gauge44='+str(out/'baseline'), '--provider', 'demote635='+str(out/'demote635'), + '--plan', nomination/'data/PLAN.json', '--out', glob) + global_run('emit', 'emit_allcold.py', '--base', glob/'base', '--owners', nomination/'data/OWNERS.json', + '--plan', glob/'PLAN.json', '--out', glob/'hosted') + global_run('audit', 'audit_allcold.py', glob/'base', glob/'hosted', glob/'audit/ASYNC-AUDIT.json', '--mutation-controls') + global_run('invoice', 'invoice_allcold.py', '--base', glob/'base', '--hosted', glob/'hosted', + '--audit', glob/'audit', '--out', glob/'audit', + '--retained-invoice', old/'complex-global/vendor531/evidence/audit/PREFIX-AND-INVOICE.json') + global_run('assembly', 'assemble.py', source, glob, out/'ASSEMBLY.json') + for label, script in [('ADMISSION-CONTROLS', 'assembly_controls.py'), ('BIT-CONTROLS', 'bit_supplier_controls.py')]: + global_run(label, script, '--source-package', source, '--owner', glob/'audit/OWNERS-AND-PROFILE.json', + '--invoice', glob/'audit/PREFIX-AND-INVOICE.json', '--out', out/(label+'.json')) + spec = read(HERE/'data/SPEC.json') + independent_env = dict(env, T16_EXPECTED_IDLE=json.dumps(spec['expected']['idle_remainder_profile']), + T16_EXPECTED_WIDTHS=json.dumps(spec['providers']['gauge44']['inventory'])) + run('independent-owners', HERE/'independent.py', '--baseline-parent', + out/'parent-global/global8/base/split-centres/GLOBAL-TEMPLATE.json.gz', + '--owners', nomination/'data/OWNERS.json', '--word', out/'baseline/CANONICAL-WORD.json.gz', + '--second-word', out/'demote635/CANONICAL-WORD.json.gz', '--second-times', *read(HERE/'data/RECIPE.json')['calls'], + '--out', out/'INDEPENDENT-OWNERS.json', environment=independent_env) + result, independent = read(out/'ASSEMBLY.json'), read(out/'INDEPENDENT-OWNERS.json') + owner, invoice = read(glob/'audit/OWNERS-AND-PROFILE.json'), read(glob/'audit/PREFIX-AND-INVOICE.json') + audit = read(glob/'audit/ASYNC-AUDIT.json') + assert result['kappa'] == spec['expected']['kappa'] and Fraction(result['kappa']) > Fraction(baseline['kappa']) + assert independent['profile'] == result['complex_profile'] and independent['rank_mass'] == owner['rank_mass'] == 1041408 + assert independent['roles'] == owner['hosted_residuals'] == audit['complex_hosted_residuals'] == 69120 + assert independent['calls'] == audit['complete_invocations'] == invoice['complete_invocation_sweeps'] == 144 + assert independent['prefix_bits'] == invoice['global_prefix_bits'] < invoice['charged_prefix_bits'] == 512 + assert independent['physical_row_coefficient'] == invoice['finite']['physical_row_coefficient'] < 20161 + assert len(independent['controls_rejected']) == 6 and len(audit['mutations_rejected']) == 23 + assert len(read(out/'ADMISSION-CONTROLS.json')['rejected_controls']) == 114 + assert len(read(out/'BIT-CONTROLS.json')['rejected_controls']) == 12 + assert all(invoice['strict_checks'].values()) and len(result['outer']) == 47 + assert all(Fraction(v) > 0 for v in result['outer'].values()) + assert result['provider_counts'] == {'gauge44': 35, 'demote635': 109} + receipt = dict(status='PASS_DEMOTE635_T16_COMPLETE_ADMISSION', kappa=result['kappa'], + kappa_decimal=result['kappa_decimal'], comparison=baseline['kappa_decimal'], + parent_commit=pins['parent_commit'], reused_native_receipts=False, + historical_generators_rerun=False, stages=stages, + scope='Exact finite words, phases, whole-owner geometry and invoices. PR589 bit circuit cited and repriced. ' + 'Inherited uniform/compiler, realization/hosting, precision/tape and analytic obligations remain conditional.') + (out/'RESULT.json').write_text(json.dumps(receipt, indent=2)+'\n') + print(receipt['status'], result['kappa_decimal'], flush=True) + + +if __name__ == '__main__': + main()