B2 confirms the unchanged port-3 on **256 assigned seeds, 9601280..9601535 inclusive**. Paired mean port-3 minus t03: **+0.652167797525**, SE **0.089094592960**; port-3 minus IB: **+1.442113459182**, SE **0.113628202599**. These are local measurements from the pinned real engine; they do not certify other seeds. All numerical results below were computed locally in this run. Artifact links identify the exact input sources; previous artifacts' reported performance was not used as B2 measurement evidence. | Setup step | Result | |---|---| | Workspace checkout | `test/scratch/amm-challenge`, pinned commit `6b6921f8d463314aa7c96234e1be25a25245f704` | | Supplied `scratch/setup.sh` | Saved verbatim and run once from checkout root; exit 0 | | Engine wheel | `amm_sim_rs-0.1.0.post1-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl` from the specified `sim-6b6921f8` release | | Wheel SHA-256 | `aedb68280aca34c110968f00148387c95885207913fb2cf19a1ab4c5cfd6887a`; checksum passed | | Python | 3.12.3 | | Requested packages | `amm-sim-rs==0.1.0.post1`, `numpy==2.5.4`, `numba==0.68.1`, `cma==4.5.0`, `py-solc-x==2.1.0`, `pyrevm==0.3.7` | | Editable challenge install | Passed, `uv pip install --no-deps -e .` | | Solidity | solcx 0.8.24 installed; optimizer enabled, 200 runs, viaIR, Paris EVM | | Starter validation | `Strategy 'StarterStrategy' validated successfully!`, exit 0 | | port-3 validation | `Strategy 'TaylorGaussianPlainCoarse' validated successfully!`, exit 0 | | Engine execution | 8 chunks of 32 seeds per strategy; 24 `run_batch` calls; 8 workers each; no retries | | Command limit | Setup, validation, compilation and each engine chunk guarded by `timeout 470` (under 8 minutes) | Later engine/Solidity commands were prefixed with `. scratch/env.sh &&`. All temporary work stayed under exempt `test/scratch/`. The compiler settings above come from [the pinned compiler](https://raw.githubusercontent.com/benedictbrady/amm-challenge/6b6921f8d463314aa7c96234e1be25a25245f704/amm_competition/evm/compiler.py). The following source hashes were recomputed before execution. port-3 was extracted verbatim, including its final newline, from the `contracts/src/Strategy.sol` Solidity block in its Markdown artifact. t03 and IB were extracted with `zlib.decompress(base64.b64decode(artifact["code_zb64"]))`. All required hashes matched. Artifact response SHA-256 values also equal their artifact IDs. | Strategy/source | Source SHA-256 | Deployed runtime bytes | |---|---|---:| | [port-3](https://api.imd.fun/artifacts/0dbcc10af41b3c3467ff0d9b9cb64c81328fcf18295f9be06b2d81bb98874067) | `62930b8e68277c69fc1acfba18de781e684d7fc6daac8dc562b8210dc3932ac1` | 18,466 | | [t03](https://api.imd.fun/artifacts/2333ecf28d4356bd232b85c1e55842e94e1ada05e1cd067830b5625dfdbc5336) | `cb6d945511e1e10af78baa64c2a6cb25806f0998403ce6440654bfc3c70092d9` | 14,654 | | [IB](https://api.imd.fun/artifacts/afd5183e9ff3235334e041c00b0cd19079599a2c6464db95f8c1586712105557) | `301941829a44bb60977bb28181a5e4bfa6544f3696763f987054789b2611d686` | 14,528 | | [VanillaStrategy](https://raw.githubusercontent.com/benedictbrady/amm-challenge/6b6921f8d463314aa7c96234e1be25a25245f704/contracts/src/VanillaStrategy.sol) | `62d40ccef0de99a385e332a36ddf9cbd1da73eda06bd7954492a9880cb91a572` | 640 | port-3 is below the 24,576-byte deployment limit. Its existing header credits Taylor (gtmcknight). No contract, fee policy, table, compiler setting or baseline source was modified. Each submission ran alone against the fixed 30 bps VanillaStrategy through `amm_sim_rs.run_batch(X, VanillaStrategy, configs, 8)`. The measured edge is `result.edges["submission"]` directly from each independent match. Pairing subtracts those submission edges for the same seed. Configurations follow [MatchRunner._build_configs](https://raw.githubusercontent.com/benedictbrady/amm-challenge/6b6921f8d463314aa7c96234e1be25a25245f704/amm_competition/competition/match.py) with [the canonical base configuration and variance](https://raw.githubusercontent.com/benedictbrady/amm-challenge/6b6921f8d463314aa7c96234e1be25a25245f704/amm_competition/competition/config.py): 10,000 steps; initial price 100; reserves X=100, Y=10,000; GBM mu=0, dt=1; retail log-size sigma=1.2 and buy probability=0.5. For seed i, `np.random.default_rng(i)` draws retail mean size uniform[19,21], arrival rate uniform[0.6,1.0], and GBM sigma uniform[0.000882,0.001008], in that order. Every generated field was checked for equality against the pinned method executed with its loop range restricted to the assigned block. All three strategies used identical config hashes in every paired block. Only the assigned seeds were simulated. Each (strategy, seed) was evaluated exactly once, with no tuning or reruns. A reservation file was written before each engine call; the harness refuses an existing reservation. | Strategy | n | Mean edge | |---|---:|---:| | port-3 | 256 | 530.007224059410 | | t03 | 256 | 529.355056261885 | | IB | 256 | 528.565110600228 | Statistics use unrounded engine outputs. For differences d_i, mean_diff = mean(d_i), and se = sample standard deviation(d_i) / sqrt(n), with ddof=1. Wins count strict positive differences; ties count exact zero. | Paired comparison | n | mean_diff | se | Wins | Losses | Ties | |---|---:|---:|---:|---:|---:|---:| | port-3 minus t03 | 256 | +0.652167797525 | 0.089094592960 | 171 | 85 | 0 | | port-3 minus IB | 256 | +1.442113459182 | 0.113628202599 | 215 | 41 | 0 | Worst five differences in each paired comparison, in ascending order: | Comparison | Seed | Difference | |---|---:|---:| | port-3 minus t03 | 9601517 | -2.767644338529 | | port-3 minus t03 | 9601289 | -2.178502796056 | | port-3 minus t03 | 9601358 | -2.103664486272 | | port-3 minus t03 | 9601325 | -2.097881448749 | | port-3 minus t03 | 9601476 | -1.910973878263 | | port-3 minus IB | 9601302 | -2.911625064610 | | port-3 minus IB | 9601517 | -2.442526658110 | | port-3 minus IB | 9601471 | -2.098586355913 | | port-3 minus IB | 9601412 | -1.956565082432 | | port-3 minus IB | 9601289 | -1.647187843145 | Gas figures aggregate `amm_sim_rs.gas_stats()` captured immediately after each chunk, with `gas_stats_reset()` immediately before it. Counts and gas sums are added, peaks take the maximum, and mean successful gas is total `sum_ok_gas / ok`, weighted by callback count. The table below uses the `Submission` role for each candidate. Raw aggregated entries for both roles follow. | Strategy | afterSwap calls | OOG | Peak successful gas | Mean successful gas | |---|---:|---:|---:|---:| | port-3 | 2,758,853 | 0 | 206,326 | 95426.976408674 | | t03 | 2,794,012 | 0 | 235,488 | 135477.839282723 | | IB | 2,771,458 | 0 | 234,885 | 135138.409199418 | port-3 observed afterSwap peak: 206,326 / 245,000 gas; OOG: 0. ```json { "port": [ { "role": "Baseline", "callback": "afterInitialize", "calls": 256, "ok": 256, "max_ok_gas": 21796, "sum_ok_gas": 5579776, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 }, { "role": "Baseline", "callback": "afterSwap", "calls": 2843980, "ok": 2843980, "max_ok_gas": 22592, "sum_ok_gas": 64167866264, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 }, { "role": "Baseline", "callback": "getName", "calls": 256, "ok": 256, "max_ok_gas": 21526, "sum_ok_gas": 5510656, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 }, { "role": "Submission", "callback": "afterInitialize", "calls": 256, "ok": 256, "max_ok_gas": 141957, "sum_ok_gas": 36340992, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 }, { "role": "Submission", "callback": "afterSwap", "calls": 2758853, "ok": 2758853, "max_ok_gas": 206326, "sum_ok_gas": 263269000146, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 }, { "role": "Submission", "callback": "getName", "calls": 256, "ok": 256, "max_ok_gas": 21524, "sum_ok_gas": 5510144, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 } ], "t03": [ { "role": "Baseline", "callback": "afterInitialize", "calls": 256, "ok": 256, "max_ok_gas": 21796, "sum_ok_gas": 5579776, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 }, { "role": "Baseline", "callback": "afterSwap", "calls": 2765207, "ok": 2765207, "max_ok_gas": 22592, "sum_ok_gas": 62390751172, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 }, { "role": "Baseline", "callback": "getName", "calls": 256, "ok": 256, "max_ok_gas": 21526, "sum_ok_gas": 5510656, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 }, { "role": "Submission", "callback": "afterInitialize", "calls": 256, "ok": 256, "max_ok_gas": 243234, "sum_ok_gas": 62267904, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 }, { "role": "Submission", "callback": "afterSwap", "calls": 2794012, "ok": 2794012, "max_ok_gas": 235488, "sum_ok_gas": 378526708690, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 }, { "role": "Submission", "callback": "getName", "calls": 256, "ok": 256, "max_ok_gas": 21742, "sum_ok_gas": 5565952, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 } ], "ib": [ { "role": "Baseline", "callback": "afterInitialize", "calls": 256, "ok": 256, "max_ok_gas": 21796, "sum_ok_gas": 5579776, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 }, { "role": "Baseline", "callback": "afterSwap", "calls": 2767178, "ok": 2767178, "max_ok_gas": 22592, "sum_ok_gas": 62435280352, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 }, { "role": "Baseline", "callback": "getName", "calls": 256, "ok": 256, "max_ok_gas": 21526, "sum_ok_gas": 5510656, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 }, { "role": "Submission", "callback": "afterInitialize", "calls": 256, "ok": 256, "max_ok_gas": 243227, "sum_ok_gas": 62266112, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 }, { "role": "Submission", "callback": "afterSwap", "calls": 2771458, "ok": 2771458, "max_ok_gas": 234885, "sum_ok_gas": 374530425283, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 }, { "role": "Submission", "callback": "getName", "calls": 256, "ok": 256, "max_ok_gas": 21735, "sum_ok_gas": 5564160, "oog": 0, "revert": 0, "other_halt": 0, "tx_error": 0, "bad_return": 0 } ] } ``` Per-block engine runtimes (seconds) are measured around `run_batch`, excluding compilation. Each row represents three distinct calls on the same 32 configuration seeds. | Inclusive seeds | port-3 seconds | t03 seconds | IB seconds | |---|---:|---:|---:| | 9601280..9601311 | 46.061 | 56.266 | 58.792 | | 9601312..9601343 | 44.675 | 58.477 | 56.978 | | 9601344..9601375 | 41.196 | 52.714 | 60.055 | | 9601376..9601407 | 42.865 | 59.102 | 59.286 | | 9601408..9601439 | 37.911 | 46.803 | 42.368 | | 9601440..9601471 | 46.222 | 60.604 | 59.174 | | 9601472..9601503 | 38.038 | 48.928 | 61.419 | | 9601504..9601535 | 40.192 | 27.540 | 46.092 | All 256 paired rows follow. CSV values are rounded to three decimals only for display; paired statistics above use the original values. ```csv seed,port,t03,ib 9601280,554.853,553.491,553.328 9601281,479.334,479.536,478.791 9601282,726.822,722.334,722.080 9601283,478.124,476.531,477.159 9601284,628.425,626.252,626.504 9601285,580.317,579.216,578.684 9601286,517.350,517.495,517.400 9601287,509.996,509.078,509.350 9601288,466.277,465.367,465.095 9601289,671.552,673.731,673.199 9601290,497.398,497.123,496.116 9601291,651.909,648.660,648.591 9601292,487.099,486.989,486.204 9601293,538.665,538.323,537.579 9601294,571.102,571.310,569.068 9601295,495.391,494.945,493.777 9601296,366.465,366.702,366.546 9601297,550.476,548.966,547.926 9601298,602.022,600.894,601.154 9601299,541.288,538.300,536.914 9601300,418.610,418.354,418.775 9601301,511.752,510.734,492.928 9601302,522.615,524.238,525.526 9601303,477.967,478.467,477.373 9601304,641.413,639.848,639.679 9601305,551.754,549.247,548.951 9601306,669.648,667.277,665.969 9601307,484.411,484.990,483.420 9601308,516.518,516.089,515.518 9601309,613.383,612.938,611.921 9601310,513.899,513.651,511.829 9601311,695.337,692.183,692.486 9601312,508.188,508.269,507.261 9601313,418.789,419.466,418.140 9601314,463.813,461.565,461.211 9601315,578.556,576.519,574.854 9601316,573.613,572.936,571.360 9601317,660.075,657.350,657.391 9601318,483.083,482.138,482.604 9601319,556.888,555.609,555.733 9601320,541.395,541.200,540.339 9601321,469.447,468.627,467.732 9601322,600.130,598.378,596.977 9601323,663.617,663.397,661.832 9601324,514.457,513.737,513.631 9601325,431.337,433.435,432.792 9601326,418.472,418.010,417.368 9601327,609.767,610.272,609.363 9601328,444.608,446.474,445.380 9601329,445.060,443.553,442.195 9601330,522.364,522.047,521.156 9601331,709.064,706.876,706.856 9601332,415.954,414.356,413.662 9601333,469.956,469.057,467.648 9601334,476.903,477.249,475.898 9601335,509.808,506.516,506.056 9601336,384.588,383.440,382.868 9601337,394.974,395.035,394.582 9601338,565.743,563.844,563.546 9601339,607.528,604.513,603.289 9601340,420.641,421.815,420.322 9601341,429.300,427.575,426.645 9601342,537.875,537.153,535.913 9601343,379.064,380.570,380.163 9601344,499.784,498.621,498.088 9601345,546.967,546.727,544.551 9601346,550.025,550.193,548.823 9601347,708.770,709.317,707.574 9601348,614.343,614.323,613.016 9601349,445.865,445.932,445.121 9601350,432.302,431.968,430.801 9601351,610.420,608.823,608.379 9601352,530.430,530.959,530.763 9601353,522.563,521.427,521.568 9601354,644.423,640.384,639.985 9601355,635.130,632.906,632.047 9601356,563.030,562.341,562.091 9601357,428.071,427.901,427.121 9601358,442.405,444.509,442.965 9601359,506.965,503.678,502.294 9601360,557.492,555.753,553.958 9601361,482.709,482.652,481.195 9601362,684.443,683.887,682.960 9601363,596.000,594.398,592.390 9601364,664.910,663.180,662.269 9601365,536.703,534.818,534.634 9601366,528.289,528.776,527.066 9601367,646.152,643.241,643.425 9601368,618.333,616.545,615.521 9601369,507.549,508.603,506.361 9601370,667.725,665.935,665.017 9601371,412.072,413.414,413.128 9601372,553.383,549.082,549.186 9601373,562.660,562.223,561.205 9601374,593.641,593.424,592.107 9601375,581.182,579.529,577.692 9601376,608.719,605.884,603.195 9601377,549.981,548.204,548.124 9601378,557.372,555.946,554.023 9601379,500.610,499.110,498.985 9601380,582.923,582.502,582.668 9601381,531.485,531.101,530.370 9601382,569.209,568.116,569.280 9601383,500.346,499.818,498.402 9601384,514.700,513.641,512.631 9601385,521.994,520.678,519.525 9601386,606.036,602.073,601.925 9601387,584.044,585.141,582.993 9601388,516.957,518.095,516.075 9601389,545.167,545.992,544.889 9601390,604.930,605.592,604.124 9601391,544.888,546.768,545.543 9601392,509.766,508.908,507.575 9601393,562.447,561.939,561.021 9601394,433.259,434.397,432.704 9601395,695.672,691.937,691.196 9601396,480.794,478.855,478.840 9601397,497.006,496.717,495.955 9601398,666.041,665.410,665.140 9601399,466.392,465.259,464.926 9601400,688.621,685.316,685.468 9601401,612.599,609.898,609.337 9601402,422.536,422.787,422.068 9601403,418.511,419.211,418.159 9601404,481.563,483.004,482.022 9601405,561.444,560.945,560.624 9601406,507.226,506.876,507.171 9601407,509.418,508.130,508.385 9601408,751.776,748.745,749.703 9601409,586.734,584.875,583.668 9601410,596.309,595.296,594.904 9601411,443.531,445.102,444.180 9601412,429.660,430.824,431.617 9601413,576.677,577.420,577.160 9601414,370.969,372.073,370.860 9601415,469.189,468.743,468.242 9601416,430.742,432.305,430.174 9601417,353.631,354.138,353.425 9601418,524.750,525.953,524.939 9601419,672.247,671.704,670.632 9601420,697.061,695.239,694.205 9601421,455.313,456.569,455.152 9601422,397.447,396.736,395.507 9601423,469.426,470.809,469.382 9601424,593.578,590.263,590.412 9601425,503.606,502.597,501.843 9601426,436.729,436.864,436.589 9601427,573.241,571.793,571.250 9601428,495.578,495.661,494.671 9601429,556.353,555.797,554.615 9601430,596.959,596.365,595.574 9601431,524.926,522.583,521.046 9601432,549.136,546.091,545.707 9601433,609.389,607.208,606.841 9601434,475.811,477.526,476.473 9601435,573.185,573.322,572.130 9601436,546.307,546.889,546.273 9601437,442.760,442.203,440.602 9601438,618.947,619.425,616.905 9601439,492.843,491.659,491.328 9601440,439.484,438.551,437.619 9601441,496.007,496.896,496.362 9601442,408.268,407.996,407.068 9601443,473.080,472.192,472.554 9601444,400.204,400.307,399.488 9601445,401.905,402.610,401.649 9601446,636.662,634.586,634.352 9601447,503.216,503.700,502.160 9601448,481.579,481.558,480.682 9601449,607.996,607.050,606.596 9601450,494.184,492.968,492.538 9601451,400.652,401.053,400.372 9601452,480.691,480.003,479.982 9601453,433.515,434.159,432.732 9601454,463.837,464.837,463.146 9601455,626.163,624.925,623.144 9601456,572.229,570.524,569.561 9601457,464.421,465.146,463.902 9601458,507.071,505.440,504.928 9601459,504.865,504.850,504.996 9601460,708.911,705.690,703.300 9601461,600.249,599.923,599.908 9601462,532.869,533.065,532.903 9601463,586.598,584.978,584.888 9601464,491.722,492.604,491.434 9601465,632.992,628.561,628.386 9601466,684.869,684.816,685.173 9601467,563.952,561.788,562.363 9601468,363.283,364.904,364.871 9601469,487.276,487.595,487.249 9601470,487.667,487.288,486.124 9601471,652.855,653.202,654.953 9601472,421.766,422.221,422.239 9601473,526.086,524.603,524.736 9601474,482.796,483.391,482.854 9601475,427.275,426.639,425.720 9601476,385.219,387.130,385.494 9601477,629.796,627.363,626.986 9601478,630.131,629.935,628.634 9601479,527.455,526.226,525.693 9601480,624.079,621.811,621.279 9601481,470.493,470.358,469.304 9601482,416.976,416.722,415.632 9601483,345.109,345.923,345.391 9601484,591.170,590.015,590.356 9601485,640.080,641.751,640.265 9601486,559.213,556.788,556.807 9601487,384.712,386.422,386.073 9601488,504.147,503.281,502.743 9601489,426.069,425.646,424.340 9601490,473.129,473.716,471.748 9601491,499.440,500.534,499.662 9601492,420.280,421.125,419.416 9601493,645.782,644.411,643.851 9601494,377.752,378.317,377.714 9601495,563.404,562.558,562.754 9601496,477.503,478.094,476.672 9601497,519.057,519.101,519.104 9601498,638.625,636.059,636.687 9601499,563.974,562.921,561.601 9601500,555.012,552.484,551.087 9601501,698.016,695.157,694.734 9601502,607.131,607.041,606.563 9601503,480.768,481.368,480.616 9601504,512.114,511.892,511.963 9601505,449.989,448.453,447.609 9601506,718.570,714.680,714.027 9601507,614.280,613.928,612.921 9601508,401.926,400.077,396.828 9601509,651.150,650.108,650.042 9601510,510.115,508.640,508.766 9601511,357.102,358.157,358.087 9601512,680.767,678.415,677.151 9601513,512.201,511.477,510.986 9601514,582.590,584.299,583.670 9601515,369.826,370.504,369.286 9601516,473.650,473.411,472.562 9601517,408.805,411.572,411.247 9601518,424.683,425.088,424.837 9601519,635.754,634.486,633.631 9601520,597.501,598.392,597.439 9601521,494.404,492.776,492.433 9601522,471.430,470.942,470.332 9601523,692.426,689.166,688.727 9601524,660.718,659.933,659.563 9601525,560.084,560.505,560.111 9601526,435.333,434.490,434.521 9601527,449.666,450.889,450.729 9601528,681.420,680.613,679.646 9601529,481.480,482.834,482.280 9601530,672.695,669.735,669.808 9601531,410.914,412.443,411.824 9601532,570.501,567.830,568.099 9601533,460.674,459.352,458.578 9601534,422.599,421.942,421.497 9601535,435.331,434.257,434.069 ``` Problems and limits: the port artifact was Markdown, so source extraction used its labelled code block rather than JSON decoding; the exact required source hash passed before any simulation. The required setup and all 24 engine chunks completed successfully. OOG and every other failure counter are reported in the gas export above. The observed peak is sample evidence, not a bound on arbitrary inputs. Gates P/Q/F were not rerun: this item confirms the frozen port on its assigned real-engine block. The temporary installed environment is measurement tooling, not a deliverable dependency. The executed scoring harness is included as a record of the method. These seeds have been consumed; this is not a request to rerun them. `compiled.json` was produced from the four unchanged sources with the pinned `SolidityCompiler`; it stores creation bytecode and the source hashes listed above. ```python import sys,json,time,math,types,hashlib from pathlib import Path import numpy as np import amm_sim_rs from amm_competition.competition.match import MatchRunner from amm_competition.competition.config import BASELINE_VARIANCE,build_base_config HERE=Path('scratch') FIELDS=('n_steps','initial_price','initial_x','initial_y','gbm_mu','gbm_sigma','gbm_dt','retail_arrival_rate','retail_mean_size','retail_size_sigma','retail_buy_prob','seed') def configs(start,end): b=build_base_config(seed=None);v=BASELINE_VARIANCE;out=[] for i in range(start,end): rng=np.random.default_rng(seed=i) size=rng.uniform(v.retail_mean_size_min,v.retail_mean_size_max) rate=rng.uniform(v.retail_arrival_rate_min,v.retail_arrival_rate_max) sig=rng.uniform(v.gbm_sigma_min,v.gbm_sigma_max) out.append(amm_sim_rs.SimulationConfig(n_steps=b.n_steps,initial_price=b.initial_price,initial_x=b.initial_x,initial_y=b.initial_y,gbm_mu=b.gbm_mu,gbm_sigma=sig,gbm_dt=b.gbm_dt,retail_arrival_rate=rate,retail_mean_size=size,retail_size_sigma=b.retail_size_sigma,retail_buy_prob=b.retail_buy_prob,seed=i)) # Check every field against the pinned method, with only its Python # iteration range restricted to this block instead of a 9.6M prefix. original=MatchRunner._build_configs scope=dict(original.__globals__) scope['range']=lambda n:range(start,end) method=types.FunctionType(original.__code__,scope) runner=MatchRunner(n_simulations=end,config=b,n_workers=8,variance=v) canonical=method(runner) assert [[getattr(c,f) for f in FIELDS] for c in out]==[[getattr(c,f) for f in FIELDS] for c in canonical] return out def main(): kind=sys.argv[1];start,end=map(int,sys.argv[2:4]) assert kind in ('port','t03','ib') assert 9601280<=start