# coding: utf-8 from pathlib import Path import importlib.util,json,hashlib,shutil,subprocess,sys,time R=Path('/Users/korizatou114/Projects/とりにく工房ゲーム制作部');A=R/'artifacts/original-completion-2026-10-02';O=A/'p23-02-native-hot-loop-numeric-r328';P=A/'p23-02-native-guest-bulk-candidate-r313-r02/source/tree_core.hpp';C=A/'p23-02-native-hot-loop-candidate-r326/source/tree_core.hpp' assert not O.exists() and shutil.disk_usage(A).free>=528*1048576;O.mkdir() def pin(p):return dict(path=str(p),bytes=p.stat().st_size,sha256=hashlib.sha256(p.read_bytes()).hexdigest()) old=json.loads((A/'p23-02-native-bridge-build-r76/input.json').read_text());compiler=Path(old['compiler_pins']['clang++']['path']);assert pin(compiler)==old['compiler_pins']['clang++'] cpp='''#include #include #include #define the_tree_native original_numeric #include "'''+str(P)+'''" #undef the_tree_native #define the_tree_native candidate_numeric #include "'''+str(C)+'''" #undef the_tree_native using I=std::int64_t; struct E {I neighbor,cost;}; std::string vec(const std::vector& a) {std::ostringstream out;for(auto x:a)out< std::string result(const T &r,const std::vector& calls) { return r.status+"|"+vec(r.costs)+"|"+vec(r.parents)+"|"+vec(r.discovered)+"|"+vec(r.parent_discovered)+"|"+vec(r.settled)+"|"+vec(calls); } int main(int argc,char **argv) { if(argc!=2)return 98; std::ofstream corpus(argv[1]);if(!corpus)return 98; std::uint64_t cases=0;bool passed=true; auto run=[&](I n,I start,const std::vector& goals,const std::vector>& graph) { std::vector old_calls,new_calls; auto old_provider=[&](I current) {old_calls.push_back(current);std::vector r;for(auto e:graph[current])r.push_back({e.neighbor,e.cost});return r;}; auto new_provider=[&](I current) {new_calls.push_back(current);std::vector r;for(auto e:graph[current])r.push_back({e.neighbor,e.cost});return r;}; auto old=original_numeric::search(n,start,goals,old_provider); auto now=candidate_numeric::search(n,start,goals,new_provider); const auto a=result(old,old_calls),b=result(now,new_calls);passed=passed && a==b; corpus<> g(3);for(I a=0;a<3;++a)for(I b=0;b<3;++b)if(mask&(I(1)<<(a*3+b)))g[a].push_back({b,1}); for(I start=0;start<3;++start)for(I target=0;target<8;++target) {std::vector goals;for(I i=0;i<3;++i)if(target&(I(1)<> g(n); for(I i=0;i::max(); g[i].push_back({node,cost}); } std::vector goals;for(I i=0,count=rng()%8;i::max(); run(3,0,{2},{{{1,maximum}},{{2,1}}, {}}); run(4,0,{3,3,99},{{{2,1},{1,1},{1,1}},{{3,2}},{{3,2}}, {}}); run(0,-1,{},{});run(1,1,{0},{{}}); corpus.close();if(!corpus)return 98; std::cout<<"NUMERIC_DIFFERENTIAL "<=528*1048576;start=time.monotonic() process=subprocess.Popen(argv,stdout=subprocess.PIPE,stderr=subprocess.PIPE,start_new_session=True) try:out,err=process.communicate(timeout=30) except BaseException: if process.poll() is None:process.terminate() try:process.wait(timeout=3) except subprocess.TimeoutExpired:process.kill();process.wait(timeout=3) raise (O/('phase%d.stdout'%i)).write_bytes(out);(O/('phase%d.stderr'%i)).write_bytes(err) rows.append(dict(pid=process.pid,argv=argv,exit_code=process.returncode,seconds=time.monotonic()-start,ended=process.poll() is not None,foreign_signals=0)) assert process.returncode==0 and not err assert sum(p.stat().st_size for p in O.rglob('*') if p.is_file())<=16*1048576 assert (O/'phase1.stdout').read_text()=='NUMERIC_DIFFERENTIAL 16388 PASS\n' for path,p in protected.items():assert pin(Path(path))==p except BaseException as ex:error=repr(ex) (O/'execution.json').write_text(json.dumps(dict(passed=error is None,error=error,phases=rows,all_inputs_preserved=all(pin(Path(k))==v for k,v in protected.items()),corpus=pin(O/'corpus.tsv') if (O/'corpus.tsv').exists() else None,unit_accepted=False,performance_accepted=False),indent=2)+'\n') print(json.dumps(dict(passed=error is None,error=error,phases=rows,corpus_bytes=(O/'corpus.tsv').stat().st_size if (O/'corpus.tsv').exists() else None)))