feat(proof): stub-win sim relative to sealed baseline (reland #232) - #235
Conversation
Reland #232 onto current main. Under PROOF_FORCE_SIM, a sealed topic scores with sim_win_document (harness relative to the seal) so staging submit→score can clear a ~0.29 NLL floor. Skill-only sim_document stays NLL>=1.0. Lium path unchanged. Conflict resolution vs #234: keep ProxyModelMissing/HoldoutStoreMissing and live-asset notes; keep sim probe runbook. Cargo.lock regenerated incrementally for new test deps only. Co-authored-by: Mathis <echobt@users.noreply.github.com>
Greptile SummarySummary
These failures must be resolved before merging. Confidence Score: 3/5Not safe to merge: simulated results can affect payout inputs without artifact evaluation, and a supported custom scoring path cannot succeed under valid sealed-baseline data. Two independently reproduced failures affect the proof evaluation and scoring flow. Files Needing Attention: crates/proof-eval/src/lib.rs needs changes to prevent simulated wins from becoming payout-eligible and to handle required custom measurements consistently.
What T-Rex did
|
Summary
Reland of squash-merged #232 (
c5c581a) onto currentmain(be0529f7/ #234). That squash landed on a stale parent (1ffd2599, which also carried unmerged journal/atlas work) and never reachedmain, so staging still scores with absolutesim_document(NLL ≥ 1.0) against a sealed ~0.29 baseline and rejects.Option A (this PR): under
PROOF_FORCE_SIM(eval_backend=sim), a sealed topic scores with harness numbers relative to the sealed vector (sim_win_document):epsilon_topic_max_regresstokens_per_sec≥ ref × (1 +epsilon_rel) when that is the primarySkill-only
sim_documentstays NLL ≥ 1.0 and cannot beat a real ~0.29 seal.StubScorer::winskill=0.95 also fails that floor. The Lium path never uses this helper.PROOF_SIM_STUB_WINis a leftover no-op — no extra host env.Not production. No
set_weights. No Lium rent. No invented digests. Droplet overlays stay sim-off (assert-compose-matrix.shalso refusesPROOF_SIM_STUB_WINon staging/prod).Conflict resolutions vs #233 / #234
stdout_tailinproof-harvest) did not overlap StubWin files — kept as-is.EvalError::ProxyModelMissing/HoldoutStoreMissinginproof-evalplus live-asset notes (PROOF_PROXY_MODEL_DIR,PROOF_HOLDOUT_STORE). Kept those, then appliedsim_win_documentand the sealed argument toeval_after_freeze.docs/runbooks/staging-testnet-e2e.md: kept fix(proof): stage proxy model + holdout for live score #234’s proxy/holdout 503 note and feat(proof): stub-win sim scores against sealed baseline #232’s sim--probecontract / droplet IP.Cargo.lock: restored frommain, then incrementally added only the new test deps (crypto,hex,reqwest,sha2onproof-challenge-bin;reqwestonproof-http).Tests (local + CI)
cargo test -p proof-eval --lib— 11 passed includingstub_win_*andsim_plus_sealed_uses_relative_harnesscargo test -p proof-http --lib— 19 passed includingsim_stub_win_submit_reaches_awaiting_admincargo test -p proof-challenge-bin --test submit_e2e—force_sim_binary_scores_staging_topic_idspassedcargo fmt --all -- --checkandcargo clippyon touched crates (-D warnings) passedci / fmt · clippy · test · deny · xtaskgreen ona2674f3aGreptile
Every PR is reviewed by Greptile before merge. Config:
.greptile/.@greptileai reviewTwo P1s answered on-thread (intentional sim Option A; documented
harness_success_ratefail-closed custom). No product change.Test plan
cargo test -p proof-eval --libcargo test -p proof-http --libcargo test -p proof-challenge-bin --test submit_e2ecargo fmt --all -- --checkon touched filesfmt · clippy · test · deny · xtaskgreencargo test --workspacenot run locally (CI ran it)Risk
Staging/dev only. Live Lium scoring unchanged. Droplet compose overlays stay sim-off. Does not touch production pins or harvest.
Naming
I did not rename
BASE_*environment variables, deployed host paths(
/opt/base,/run/base, …), GHCRbaseintelligence/basepackage names, orbase-*-v1cryptographic domain tags, unless this PR’s purpose is a coordinatedcutover documented in
docs/NAMING.md.