"""GP2: reproducible synthetic experiment and retry-safe local recorded effects.The crashworker CLI deliberately exits only its own process with status 23."""fromcontextlibimportcontextmanagerfrompathlibimportPathimportargparseimporthashlibimportjsonimportmathimportosimportreimportsqlite3from.importdata,ml,ethicsFEATURES=["x0","x1"]ARTIFACT_KEYS={"schema","features","mean","scale","weights","bias","threshold"}defcanonical(value):returnjson.dumps(value,sort_keys=True,separators=(",",":"),allow_nan=False)deffingerprint(value):returnhashlib.sha256(canonical(value).encode("utf-8")).hexdigest()deffinite_number(value,limit=1e6):returntype(value)in(int,float)andmath.isfinite(value)andabs(value)<=limitdefvalidate_artifact(artifact):iftype(artifact)isnotdictorset(artifact)!=ARTIFACT_KEYS:raiseValueError("unexpected model schema keys")iftype(artifact["schema"])isnotintorartifact["schema"]!=1orartifact["features"]!=FEATURES:raiseValueError("wrong schema version or feature order")forkeyin("mean","scale","weights"):iftype(artifact[key])isnotlistorlen(artifact[key])!=2:raiseValueError("two model dimensions required")ifnotall(finite_number(x)forxinartifact[key]):raiseValueError("invalid numeric vector")ifany(x<1e-12forxinartifact["scale"]):raiseValueError("scale too small")ifnotfinite_number(artifact["bias"])ornotfinite_number(artifact["threshold"])ornot0<=artifact["threshold"]<=1:raiseValueError("invalid bias or threshold")returnartifactdef_unique_object(pairs):result={}forkey,valueinpairs:ifkeyinresult:raiseValueError("duplicate JSON key")result[key]=valuereturnresultdefload_artifact(path):withopen(path,"rb")ashandle:raw=handle.read(16385)iflen(raw)>16384:raiseValueError("artifact exceeds 16 KiB")try:value=json.loads(raw,object_pairs_hook=_unique_object)except(UnicodeError,json.JSONDecodeError)aserror:raiseValueError("invalid artifact JSON")fromerrorreturnvalidate_artifact(value)defexperiment(seed=21):rows=data.fixture(seed=seed)groups=[row["group"]forrowinrows]parts=data.split_groups(groups,seed=seed)X={name:[rows[i]["x"]foriinindices]forname,indicesinparts.items()}y={name:[rows[i]["y"]foriinindices]forname,indicesinparts.items()}scaler=data.fit_scaler(X["train"])scaled={name:data.transform(values,scaler)forname,valuesinX.items()}candidates=[]forlamin(0.,.1,1.):model=ml.fit(scaled["train"],y["train"],lam=lam,rate=.1,steps=400)loss,_,_=ml.loss_gradient(model["weights"],model["bias"],scaled["validation"],y["validation"],lam=0.)candidates.append((loss,lam,model))validation_loss,selected,model=min(candidates,key=lambdaitem:(item[0],item[1]))artifact={"schema":1,"features":list(FEATURES),"mean":scaler["mean"],"scale":scaler["scale"],"weights":model["weights"],"bias":model["bias"],"threshold":.5}validate_artifact(artifact)identity=fingerprint(artifact)# freeze before evaluating the test setprobabilities=ml.predict(model,scaled["test"])metrics=ethics.binary_report(y["test"],probabilities,threshold=.5)report={"seed":seed,"partitions":parts,"group_partitions":{name:sorted({groups[i]foriinindices})forname,indicesinparts.items()},"selected_regularization":selected,"validation_log_loss":validation_loss,"test_metrics":metrics,"model_digest":identity,"limitation":"synthetic grouped data, not evidence of real-world utility"}returnartifact,reportdefconnect_store(path,role):ifrolenotin("producer","consumer"):raiseValueError("unknown store role")connection=sqlite3.connect(path,timeout=.1,isolation_level=None,autocommit=sqlite3.LEGACY_TRANSACTION_CONTROL)connection.execute("PRAGMA foreign_keys=ON")connection.execute("PRAGMA synchronous=FULL")ifrole=="producer":connection.executescript(""" CREATE TABLE IF NOT EXISTS jobs(id TEXT PRIMARY KEY,payload TEXT NOT NULL); CREATE TABLE IF NOT EXISTS outbox( id TEXT PRIMARY KEY REFERENCES jobs(id),digest TEXT NOT NULL, ack INTEGER NOT NULL CHECK(ack IN (0,1))); """)else:connection.executescript(""" CREATE TABLE IF NOT EXISTS receipts(id TEXT PRIMARY KEY,payload TEXT NOT NULL); CREATE TABLE IF NOT EXISTS results( id TEXT PRIMARY KEY REFERENCES receipts(id), score REAL NOT NULL CHECK(score>=0 AND score<=1),model TEXT NOT NULL); """)returnconnection@contextmanagerdeftransaction(connection):connection.execute("BEGIN IMMEDIATE")try:yieldconnection.execute("COMMIT")exceptBaseException:ifconnection.in_transaction:connection.execute("ROLLBACK")raisedefpayload_for(job_id,features,model_digest):iftype(job_id)isnotstrorre.fullmatch(r"[A-Za-z0-9_-]{1,64}",job_id)isNone:raiseValueError("invalid job ID")iftype(features)notin(list,tuple)orlen(features)!=2ornotall(finite_number(x)forxinfeatures):raiseValueError("two finite bounded features required")iftype(model_digest)isnotstrorre.fullmatch(r"[0-9a-f]{64}",model_digest)isNone:raiseValueError("invalid model digest")return{"id":job_id,"features":[float(x)forxinfeatures],"model":model_digest}defsubmit(connection,job_id,features,model_digest):payload=canonical(payload_for(job_id,features,model_digest))digest=hashlib.sha256(payload.encode()).hexdigest()withtransaction(connection):old=connection.execute("SELECT payload FROM jobs WHERE id=?",(job_id,)).fetchone()ifoldisnotNone:ifold[0]!=payload:raiseValueError("conflicting job ID")returnFalseconnection.execute("INSERT INTO jobs VALUES(?,?)",(job_id,payload))connection.execute("INSERT INTO outbox VALUES(?,?,0)",(job_id,digest))returnTruedefconsume(connection,payload,artifact):validate_artifact(artifact)raw=json.loads(payload,object_pairs_hook=_unique_object)iftype(raw)isnotdictorset(raw)!={"id","features","model"}:raiseValueError("invalid payload keys")normalized=payload_for(raw["id"],raw["features"],raw["model"])ifcanonical(normalized)!=payloadorraw["model"]!=fingerprint(artifact):raiseValueError("noncanonical payload or wrong model")scaled=data.transform([raw["features"]],{"mean":artifact["mean"],"scale":artifact["scale"]})probability=ml.predict(artifact,scaled)[0]# pure computation outside write lockwithtransaction(connection):old=connection.execute("SELECT payload FROM receipts WHERE id=?",(raw["id"],)).fetchone()ifoldisnotNone:ifold[0]!=payload:raiseValueError("consumer identity conflict")result=connection.execute("SELECT score,model FROM results WHERE id=?",(raw["id"],)).fetchone()ifresultisNone:raiseRuntimeError("receipt/result invariant violated")return{"id":raw["id"],"score":result[0],"model":result[1]}connection.execute("INSERT INTO receipts VALUES(?,?)",(raw["id"],payload))connection.execute("INSERT INTO results VALUES(?,?,?)",(raw["id"],probability,raw["model"]))return{"id":raw["id"],"score":probability,"model":raw["model"]}defworker(producer_path,consumer_path,artifact,crash_after_consumer=False):ifPath(producer_path).resolve()==Path(consumer_path).resolve():raiseValueError("use separate producer and consumer files")producer=connect_store(producer_path,"producer")consumer=Nonetry:consumer=connect_store(consumer_path,"consumer")row=producer.execute("""SELECT j.id,j.payload,o.digest FROM jobs j JOIN outbox o ON j.id=o.id WHERE o.ack=0 ORDER BY j.id LIMIT 1""").fetchone()ifrowisNone:returnNonejob_id,payload,digest=rowifhashlib.sha256(payload.encode()).hexdigest()!=digest:raiseValueError("outbox integrity mismatch")result=consume(consumer,payload,artifact)ifcrash_after_consumer:os._exit(23)# explicit disposable child-process test onlywithtransaction(producer):changed=producer.execute("UPDATE outbox SET ack=1 WHERE id=? AND digest=?",(job_id,digest)).rowcountifchanged!=1:raiseRuntimeError("ack identity mismatch")returnresultfinally:ifconsumerisnotNone:consumer.close()producer.close()defmain():parser=argparse.ArgumentParser(description=__doc__)sub=parser.add_subparsers(dest="command",required=True)demo=sub.add_parser("demo")demo.add_argument("directory")crash=sub.add_parser("crashworker")crash.add_argument("producer");crash.add_argument("consumer");crash.add_argument("artifact")args=parser.parse_args()ifargs.command=="crashworker":worker(args.producer,args.consumer,load_artifact(args.artifact),crash_after_consumer=True)returnroot=Path(args.directory)root.mkdir(parents=True,exist_ok=False)artifact,report=experiment()(root/"model.json").write_text(canonical(artifact),encoding="utf-8")(root/"experiment.json").write_text(json.dumps(report,indent=2),encoding="utf-8")producer=connect_store(root/"producer.db","producer")try:submit(producer,"example-1",[.3,-.2],fingerprint(artifact))finally:producer.close()print(worker(root/"producer.db",root/"consumer.db",artifact))print("Saved local experiment to",root)if__name__=="__main__":main()