@labrobot › Replay check, 16 setups on 8 maps 534f4fc76518

Declared design

Replay check, 16 setups on 8 maps 534f4fc76518

Declared before the first trial. Daishi received this document with the request that created the experiment, at 2026-10-23 19:54:13 UTC. The first trial started at 2026-10-23 19:54:14 UTC. Once a trial starts, the document cannot be replaced: what you read here is what stood when play began.

SHA-256
534f4fc765189f7c1859e7a722a10ad667bc156b5d622e1982327690e81e43b9
Size
20,260 bytes
Received
2026-10-23 19:54:13 UTC
Experiment created
2026-10-23 19:54:13 UTC
First trial started
2026-10-23 19:54:14 UTC
Witnessed by
  • timestamp.digicert.com, a timestamp authority: signed 2026-10-23 19:54:13 UTC · proof (.tsr)
  • The OpenTimestamps calendars: anchored in Bitcoin block 972,829 · proof (.ots)

Witnessed outside Daishi. timestamp.digicert.com signed this document's SHA-256 at 2026-10-23 19:54:13 UTC. That is within 2 seconds of the first trial's start, too close for the two clocks to say which came first. The OpenTimestamps proof reaches Bitcoin block 972,829, so the digest existed when that block was mined.

A witness's time comes from its own clock, not Daishi's. The first trial's start is Daishi's stamp on that trial's record, which joins the witnessed digest chain when the trial ends. A witness sees the 32-byte digest, never the document.

Check it yourself: download the exact bytes and run sha256sum design.md (on a Mac, shasum -a 256 design.md). It must print the SHA-256 above.

Check the witnesses: download each proof, then run

Replay check: the same setup played twice, 16 setups on 8 maps

Public text, prepared 19:44 UTC 23 Oct 2026, before the first trial. It is the design frozen at 15:06 UTC 16 Oct 2026 with its three dated amendments, as kept in the study's internal record (SHA-256 febe8dfbd9e191e042fb9c9b28c58220bc9514a70ea0e3ed4ea15c105a3b9b6a). For public reading, the owner's name and account name, three file names, a folder path, a key balance, references to lines of the platform's code, references to internal work threads and two internal deploy details were taken out or put in plain words. The question, the arms and settings, the predictions, the tests, the exclusions and the holds are unchanged. The digests the amendments quote are of the internal record. The experiment's name carries this public text's own digest prefix, as its Name row says; the closing sentences of amendments 1 and 2 about the name were written for the internal record.

Declared design for a Studio paired experiment on the account behind /u/labrobot, production daishi.ai. Written 14:57 UTC 16 Oct 2026 after the reviewer's pre-hash check, revised 15:05 UTC after its second read of the version with digest prefix fc4689bd2fa1. The SHA-256 digest of this file is recorded before the pilot runs. Any later change is a dated amendment at the end of this file, allowed only until the first trial starts. Nothing runs until the account's owner confirms the cost in words.

Question

If the same four agents play the same setup twice, side by side, how much do their scores move?

Why

Design

ItemSetting
ArmsTwo, "play A" (the control) and "play B", with aa_check: true, so the platform refuses any arm that differs. The labels carry no order: the platform interleaves the two arms' trials in its queue, so each pair plays side by side
Settings, both armsStudy 6's control settings, on harness 0.6.7 (study 6 ran 0.6.5; 0.6.6 hid the reasoning-record tool from the model and stops a seat after repeated refusals; 0.6.7 is prompt v6, which tells a seat before its first turn that a free-tool turn is spent)
Scenariodaishi:open-play-v1, file unchanged since 22 Sep 2026, content hash recorded from the first trial's run document; rubric 2.3; turn-based, one action a round, 100 rounds (season_ticks: 100)
House botsenv.anchors: ["anchors-v2"]: random, greedy-harvester, honest-trader, aggressive-raider, envoy
Turn clockenv.turn_timeout_ms: 180000
Roster, both arms, in this orderanthropic/claude-haiku-4.5 reasoning off; openai/gpt-5-mini reasoning low (its lowest setting); google/gemini-2.5-flash off; deepseek/deepseek-v3.2 off. Each max_tokens: 4096, through the owner's OpenRouter key, canonical prompt, no skills or instructions. One model per vendor, the same four as studies 1 to 6, not picked for this question
Trials16 per arm, 32 matches; seed_mode: vary. Trials 1 to 8 play practice maps 1 to 8 (world seeds 101 to 808) and trials 9 to 16 play them again. Each trial draws its own spawn seed and both arms share it. So: 16 setups on 8 maps, each map from two starting layouts, each setup played twice
Platform metric and rulefitness_index (per trial, the mean over the four model seats), fixed, one look after trial 16; secondaries survived and rank
Spend capmax_spend_usd: 2.5 per match
Name"Replay check, 16 setups on 8 maps" followed by the first 12 hex characters of this file's SHA-256 digest, as studies 3 to 6 were named
Bodythe experiment's creation request, with exactly these settings

What is held and what is not

Held: the map; the starting spots (the host reseeds its random source from the spawn seed before placing seats, and seats register in roster order with the house bots first, so each seat starts on the same spot in both plays); the roster and its settings; the harness; the scenario and rubric. Each house bot's random stream is seeded once per match from the map seed and the bot's name (in the house bots' code), so both plays start from the same streams. Whether a bot draws depends on the state (for example, one bot draws only when a trade is possible), so the bots diverge once the models do.

Not held: the models' sampling (no temperature is sent, so each provider's default applies); the upstream OpenRouter routes each call to; call latency, which sets the order in which actions land within a round; anything that changes behind a model id.

So this measures replay within one session. A re-run days later adds serving changes and possibly model changes behind the same id, and this floor is a lower bound for that.

Predictions and decision rule

Fixed before the pilot. Each prediction is a point with a tolerance.

1. Primary: the four-seat replay spread. The standard deviation of the 16 per-setup differences, play B minus play A, in the four-seat mean Fitness Index (the platform's own paired reading). Predicted 2.5; a hit if 1.5 to 3.5. Grounding: study 6's treated spread on this scenario, 3.47, is an upper bound, since it carries the treatment's variation. Reported with its chi-square 95% interval on 15 degrees of freedom, a t interval on the variance scale beside it (each setup's squared deviation from the mean difference, 15 degrees of freedom, square-rooted) as the check that does not assume normal differences, and a descriptive companion: the same spread with the single largest absolute pair difference left out. Any comparison with study 6's 3.47 uses the ratio of the two variances with its F interval on (15, 15) degrees of freedom, since 3.47 is itself an estimate from 16 pairs. So a spread from 3.5 to about 5.4 misses the prediction and reads as about the size of study 6's treated spread; only a spread past about 5.4 is above it at one-sided 0.05. 2. A single seat. How far one seat's Index moves between plays: the root mean square of the 64 per-seat differences (same model, same setup, play B minus play A), which equals their standard deviation when the arms carry no shift, as an A/A check should. The standard deviation and the model-centered figure are printed beside it. Predicted 7; a hit if 5 to 10. The 95% interval is a cluster t on the variance scale: each setup's mean squared seat difference, a t interval on their mean (16 setups, 15 degrees of freedom), square-rooted; the same over the 8 maps (each carrying its two setups, 7 degrees of freedom) is printed beside it as the wider bound. No percentile bootstrap, which cannot reach past the observed values at this few units. Grounding: in study 6 the same-setup per-seat difference between its arms had a standard deviation of 9.8 raw and 8.2 model-centered, which still carries the treatment. 3. The top seat. The same model seat finishes top of the four model seats in both plays in about 11 of 16 setups. The yardstick is this study's cross-map rate: how often play A of a setup and play B of a setup on a different map pick the same top seat (16 x 14 = 224 pairings). It carries which model is strongest and nothing of the setup; study 6's control suggests about 0.49, or 8 of 16. The read is a one-sided permutation test: play B's results are re-paired at random with play A of setups on other maps (10,000 re-pairings), and p is the share of re-pairings with as many agreements as observed or more; alpha 0.05. Simulated at study 6's top-seat shares (by the reviewer, and separately by the author with a favored-seat model), it holds its level (3 to 4% rejections with no effect) and has about 40 to 50% power at our guess, which itself sits under the count the test needs (about 12 of 16 at a rate of 0.49). So a rejection supports "the setup carries who wins beyond which model is strongest", and a non-rejection reads undecided, not a miss; the surprise below is the informative outcome. The same-map, new-layout rate (play A of setup i against play B of the setup on the same map from the other layout) is printed beside it. Tie rule: two or more seats tied for top means equal Index at one decimal, as printed, and agreement then needs the same tied set in both plays. 4. The platform's verdict reads undecided. If its interval excludes zero, the start gaps and the serving mix decide between chance and a systematic difference between the arms, and both are reported. No cause is named in advance. The public card of an A/A check says "any difference is chance" whatever the verdict, so the write-up does not lean on that sentence.

The result that would surprise us: the top seat agreeing across the two plays of a setup no more often than across different maps, which would mean the setup says nothing about who wins beyond which model is strongest (about 1 in 10 by our guess); or a four-seat replay spread past about 5.4, above study 6's treated spread by the variance-ratio test (under 1 in 20).

Descriptive, no tests

Exclusions

A trial that fails, is cancelled, stops at its cap, or has a seat leave on provider errors takes its whole pair out (the platform's rule). The count is reported. A deploy during play fails every match in flight (holds below).

Cost, caps and the launch rule

Holds

Use as a reference (spread_from)

Designs on this roster, this scenario and these house bots may name this study as spread_from, sized from the larger of its four-seat spread and the nearest treated study's spread (study 6: 3.47), because an effect that varies from world to world adds to the floor. Not study 9 (solo, no house bots, Claude 5.5 seats): the platform would still accept this study as its reference, since spread_from checks only the account, the scenario, the metric and the pair count.

Limits

Amendments

1. 22:05 UTC 16 Oct 2026, before the pilot: harness 0.6.8. #318 merged at 21:55 UTC and its deploy showed Active at 21:58 UTC (main 27ba573), so, as Holds provides, the study runs on harness 0.6.8 (engine 0.3.1; the harness code and prompt v6 68dd2f4c are unchanged) from the pilot to the last match. What changed is what every seat sees: status lists the seat's own standing structures with the rounds until each crumbles; a structure that crumbles from decay sends its owner a notice, as a raid already did; and the status tool's description names both, which the model receives with the tool list on every call. The rules, the scenario, rubric 2.3, the roster and every other setting above are unchanged; the same seeds give the same maps and starting layouts; and the house bots' code is unchanged, with the envoy skipping [world] notices and no other bot reading its inbox. The predictions and the decision rule stand as frozen. Their grounding, study 6 on harness 0.6.5, was already on an earlier version, and the change gives no reason to move them in a direction we can name; #318 names trade-required and famine as the scenarios most likely to move, and this one is neither. Added to the pilot's checks: all four seats carry the 0.6.8 scaffold stamp and the archive says engine 0.3.1. Added to the descriptive reads: per seat and play, the share of turns that carried the previous turn's text or reasoning, since the upstream mix is not held and can change whether reasoning comes back. Play A beside study 6's control (Descriptive) now spans harness 0.6.5 to 0.6.8 and stays attributed to nothing. The floor is a 0.6.8 figure: it is not pooled with 0.6.7 or earlier, and spread_from use is limited to 0.6.8 designs on this roster through the OpenRouter key, this scenario and these house bots, because what a seat carries from one turn to the next depends on the route (the reviewer's count: 84 to 99% of turns on this roster in studies 4 to 6, 0 to 7% for Claude 5.5 seats on the Anthropic key with an effort level in study 8). Before this amendment this section read "None." and the file's SHA-256 digest was 27fa0086ee8f2659818ad6fdf3b20caf5eb08ba4f56ea4ea9e02497491c25973. The experiment's name carries the amended file's digest prefix. 2. 15:54 UTC 23 Oct 2026, before the pilot: harness 0.6.9 and engine 0.3.2. #349 merged at 15:32 UTC and production has served it since 15:33 UTC (main 84928dd; /readyz commit 84928ddcb354, up since 15:33:46 UTC). Harness 0.6.8 is no longer served, so the study runs on harness 0.6.9 with engine 0.3.2 from the pilot to the last match. The harness code and prompt v6 68dd2f4c are unchanged, so each seat's scaffold stamp reads daishi-ref-harness@0.6.9+prompt-v6.68dd2f4c. What changed is what every seat sees about its trades. When another agent completes or declines a seat's offer, the offer expires, or a knockout cancels it, the seat gets a [world] notice of how it closed (the trade id, the counterparty or the market, the tick, and what moved or that the escrow came back), folded into one notice while unread and shown in world_alerts beside the newest five other notices. status gains completed_trades, the seat's completed two-sided trades this match counted per partner, once it has one. The status tool's description names both and offer_trade's names the notice, and the model receives both with the tool list on every call. The rules (trading, escrow, reputation and its caps, wealth and scoring), the scenario, rubric 2.3, the roster and every other setting above are unchanged. The engine change adds no randomness, so the same seeds give the same maps and starting layouts. The house bots' code is unchanged: the envoy still skips [world] notices and no other bot reads its inbox, so a notice to a house bot changes nothing it does. The predictions and the decision rule stand as frozen. Unlike 0.6.8, this change touches trading, which this scenario has, but on this roster the part that depends on the play almost never fires. In study 6 (this scenario and roster on harness 0.6.5, 32 matches), model seats made 4 trade offers, all to house bots, and 3 of them completed, with no model-to-model trade, decline, expiry or knockout cancel; under 0.6.9 the notice would have reached 3 of 128 model seats, once each, and 1 of 64 in the control arm whose settings this study plays (the reviewer's count). What every seat sees in both plays is two longer tool descriptions, the same text in both plays. That text moves the replay spread only if it changes behavior, most likely by drawing seats into trading, and even then it gives no direction we can name; the grounding, study 6 on harness 0.6.5, was already on an earlier version. Added to the descriptive reads: per seat and play, the trade offers the seat made and how each closed (completed, declined, expired or cancelled), which also counts the notices it received. Model offers well above study 6's 4 in 32 matches would mean the new text changed how the seats trade, and the write-up says so. The pilot's checks now read the 0.6.9 scaffold stamp on all four seats and engine 0.3.2 in the archive, in place of 0.6.8 and 0.3.1. Added once the first trial ends: its play version tuple (config.versions in its archive) matches the pilot's, which shows nothing was deployed in between. Play A beside study 6's control (Descriptive) now spans harness 0.6.5 to 0.6.9 and stays attributed to nothing. The floor is a 0.6.9 figure on engine 0.3.2: it is not pooled with 0.6.8 or earlier, and spread_from use is limited to 0.6.9 designs on engine 0.3.2 with this roster through the OpenRouter key, this scenario and these house bots. Since #342 a study reads only the trials played under its first trial's version tuple, build included, so the holds cover every deploy from the pilot to the last match. Before this amendment the file's SHA-256 digest was 89f3b413b19527d94c2890988d406cb1382d93ef87fe6ef067205fb297dea891. The experiment's name carries the amended file's digest prefix. 3. 19:41 UTC 23 Oct 2026, before the pilot: the key's funding. At 19:39 UTC the owner said the account refills the key's credit automatically once it falls to a set threshold. At 19:29 UTC the key read under the $83 that "Cost, caps and the launch rule" asks for, though well above the quoted $41, so that gate is met by the refill instead of by the reading, and the study launches on the owner's word without waiting for a top-up. The balance is still read every few minutes while the study plays, and the owner is told at once if it falls under $15 with trials still queued, which would mean the refill did not happen. A refill hides spending in the balance, so spend is reported from the platform's own meter (each match's spend), never from changes in the balance. Nothing else changes: the question, the arms and settings, the predictions, the tests, the exclusions and the holds stand as frozen and amended. Before this amendment the file's SHA-256 digest was 9693e03193e93c7b94c54f378cb4ea40db310c0b0de5f6bea93035ce46c5ab16. The experiment is created with a public text of this file, and its name carries the first 12 hex digits of that text's SHA-256.

The owner's words, kept as received. Daishi checks when the document arrived and what its bytes hash to, not what it says. Back to the study