Online Resource 2: Additional fixed-cache baseline comparisons for TraceRIFT
Article: TraceRIFT: Reference-preserving ensemble selection for discrete fracture networks from incomplete traces
Journal: Earth Science Informatics
Authors: Shuo Wang, Chen Guo, Bingxin Yang, Keran Hao, Yu Zhang, Fuqiang Zhang
Affiliation: School of Information Engineering, Chang'an University, Xi'an 710064, China
Correspondence: Chen Guo, chenguo@chd.edu.cn

This archive contains constrained MMR-R, MMR-P and farthest-first baseline code,
the protocol frozen before their held-out evaluation, development-selected weights,
checked and unchecked policies, full-precision source tables and independent audit.
It extends the existing 3,276-parent evaluation cohort; it is not a new untouched cohort.
It also includes an optional equivalent implementation of the existing TraceRIFT
selector, frozen after truth-free development checks and replayed against every
archived held-out decision. Its speedup is measured in a separate matched serial
original/optimized benchmark; it changes neither selections nor accuracy results.

Base source and scientific assets: https://github.com/SureWangchd/TraceRIFT-CG
Frozen source/assets: https://github.com/SureWangchd/TraceRIFT-CG/releases/tag/v0.1.1
The four statistical assets listed by protocol_frozen.json are required; large source
arrays are available from that release and are not redistributed in this archive.
Use the repository's statistics asset profile and verify its SHA-256 manifest.

Recomputation (Windows / Python 3.11.4 / NumPy 2.4.6, base-repository dependencies):
1. Copy run_baselines.py and selectors_external.py into a NEW EMPTY output folder.
2. Set the environment variable TRACERIFT_SOURCE to the base repository directory
   containing src/ and assets/cache/. The recorded run used D:\Trace2DFN\TraceRIFT-CG.
3. From the new folder, run with the configured Python interpreter:
     python run_baselines.py prepare
     python run_baselines.py development --workers 4
     python run_baselines.py heldout --workers 4
     python run_baselines.py summarize
     python run_baselines.py benchmark
4. The prepare stage creates truth-free inputs/ caches and freezes implementation hashes.
   Development locks the two weights before heldout selection. The selection stage
   does not load query truth. Summary evaluation runs after saved policies are hashed.
5. Existing frozen protocols and completed selections are protected from overwriting.
   Use a new folder instead of deleting or overwriting the archived run.

Optional equivalent implementation reproduction:
Arrange TraceRIFT-CG and the NEW run directory as sibling folders, with the three
optimization/*.py scripts in the new run's optimization/ directory. The development
and replay scripts use this relative source layout. Generate the truth-free inputs/
with the prepare command above, then run from optimization/:
  python verify_development.py --queries 512 --repeats 1
  python replay_and_benchmark.py freeze
  python replay_and_benchmark.py replay --workers 4
  python replay_and_benchmark.py benchmark
Copy only the three Python scripts into this fresh optimization/ folder; preserve
this archive's frozen manifests and results separately. Final timing runs serially
after all replay workers finish, with one numerical-library thread per process.
The public entry point is fast_selector.select, matching tracerift.selection.select.

Key result files:
  method_summary.csv: degraded query-level regret/tails, total loss and oracle recall.
  paired_comparisons.csv: first-minus-second mean regret; positive favors SECOND.
  parent_metrics.csv: two degraded conditions and per-parent primary endpoint.
  development_lambda_grid.csv / development_lock.json: development-only selection.
  check_audit.csv: identities are distinguished from rejected nonidentity proposals.
  heldout_selections.npz: method order MMR_R, MMR_P, FarthestFirst, then corresponding raw variants.
  development_selections.npz: first11 MMR_R checked, next11 MMR_P checked, FFT checked,
    then11 MMR_R raw,11 MMR_P raw, FFT raw; complete condition remains Reference.
  timing_summary.csv: selector-only timings with method-specific preprocessing and checks;
    shared scenario construction is excluded and documented separately.
  optimization/implementation_frozen.json: hashes, environment and pre-replay timestamp.
  optimization/heldout_equivalence_summary.json and records: full receipt equality
    against the original implementation, plus exact checks against historical decisions.
  optimization/optimized_timing_summary.csv and metadata: contemporaneous original
    versus optimized selector times; do not divide the old all-method timing by these.
  audit/optimization_independent_audit.json: separate implementation/evidence review.

The two-condition per-parent endpoint, distance geometry, training-fold scales,
10,000 paired parent bootstrap replicates and original seed 1618033 are unchanged.
Intervals are pointwise. External algorithms are constrained adaptations; no
unconstrained MMR or clustering approximation guarantee is transferred.

References:
Carbonell J, Goldstein J (1998). https://doi.org/10.1145/290941.291025
Gonzalez TF (1985). https://doi.org/10.1016/0304-3975(85)90224-5
