r/place A fruit fly for organization science

out/notes-B3.md

Saved at B3.B3a-p2: build. This reading copy substitutes participant identifiers in saved text; it is not a new interview response. Reading Markdown.

Participant handles in these reading copies use the pixel stream's identifiers: base64(SHA1(username)), case preserved, without a salt. These are linkable pseudonyms. Profile links are removed; missing-author markers remain. Original research files are unchanged. Quote offsets refer to original text. Source and reading-copy hashes are listed separately.

Source commit: 71b0ce8469a6, 2026-10-12T17:57:15+02:00. Saved-state date: 2026-10-12T15:57:03Z. Catalogue close receipt Commit date and saved-state date are distinct.

Original GitHub file. Original SHA-256: d6e7c822a2286201d5b5c8771819c93e81b03a3629b70897041638e2494e44ed. Reading-copy SHA-256: d6e7c822a2286201d5b5c8771819c93e81b03a3629b70897041638e2494e44ed.

Notes, stage B3

Leg B3a, the build, 2026-10-12

Declarations, made before any packet exists

The allocator is out/_analysis/b3_allocate.py. Its dry run gave the counts below; the batches are written after these declarations.

The unit and the frame. Every second-order theme of the analysed set: 705 rooms (the census; none dropped) and 7,844 second-order themes, which is counts.py's assignment_items_expected.

R = 2. Each room is read by two readers, one per replicate, never the same reader. Two readers make a disagreement visible, and stage B4 rules on it. A third reader would cost half the fleet again to turn a disagreement into a vote, and rule 13 says a vote is not a warrant. A higher R would have bought a per-item majority and an estimate of each item's reliability; it would not have bought a better placement, and stability was measured once, in the pilot (stability-B2.md, 0.807).

The seed. 20261015. The connectivity gate forced 7 redraws; the allocation stands under the suffix 20261015:redraw7, from which it is reproducible.

The item cap per batch: 40, from notes-B2.md. Every packet file must stay under FLEET.md's 50 KB ceiling, which the B3 check asserts. So the allocator packs whole rooms to 40 items and 44,000 bytes of rendered text (the items in fleet ids and the rooms' sibling blocks), leaving room under the ceiling for the batch's header, its gold copies and its duplicate.

A room that leaves less than 6,000 bytes or 4 items under those limits is large: it opens a batch of its own, which takes at least one more room so that it is no island in the room-batch graph, and is served in parts to one reader in one conversation (stage B3 section 1.2). Such a batch holds up to 40 items and 160,000 bytes, or the large room's own size and 12,000 bytes more. Two rooms hold more than 40 items; each takes at most 3 more items beside it, so its batch may exceed the cap by that much (54 positions at most, with its copies). B2's pilot rounds served packets of up to 135,742 bytes of item text to one reader without fault; 160,000 bytes in parts keeps a reader's conversation near that.

Batches: one-file batches hold a median of 27 positions. 332 of the 624 batches are served in parts.

The cost, for the token record (no stage carries a budget, contract section 4). B2's gold round cost 0.026 USD a reader for 14 items, about 32,000 input tokens (the index and the families opened, about 28,000) and 25,000 output tokens. Here: about 40 MB of item text over the whole fleet (about 11 million input tokens) and 624 readers' shared pages (about 17 million), with about 1,800 output tokens a position for 17,089 positions and the second pass (about 31 million or more). By B2's gold round's prices the fleet costs about 30 to 40 USD.

The warm-up block: in reserve. Stage B3 section 1.2 uses a warm-up only if stage B2 found a convention still forming inside a round, its readers improving from first items to last. B2 found the opposite: agreement with the other two readers fell from the first half of a packet to the last in 9 of 12 readers at round 2 and 9 of 15 at round 3, on packets too short (7 to 15 items) for a first-ten against last-ten curve. notes-B2.md had declared a 10-item warm-up at B2a-r1; this declaration replaces it, and the position curve of the check leg decides whether it is needed (QB3-001).

The gold seeding rate: one gold copy per 20 items, as notes-B2.md declared, at most two per batch. In each batch the expected number is its item count over 20; the whole part is seeded and the fraction seeded by a seeded draw. 777 gold copies are seeded; each of the 40 gold items is seeded 19 or 20 times, drawn round-robin from a seeded order.

The gold policy (stage B3 section 1.6).

The duplicate. One item per batch, an item of the batch's own, presented twice at positions at least a quarter of the batch apart, tagged in duplicate_items.

The batch count and the reader count, computed by the allocator from its own packing: 624 batches, 624 readers (one reader per batch), 17,089 positions in all (15,688 readings at items × R, 624 duplicates, 777 gold copies).

The exemplar arm: none. No exemplar is served to any reader, as in B2, so that B3's figures compare with B2's within one arm (the description alone). The return line carries exemplar_read: null.

The order of batches. A seeded shuffle of the 624 batch ids (out/_analysis/b3_dispatch_order.json), dispatched in two groups: the first 60 batches, then the other 564. The gold fidelity check of stage B3 section 3.2 runs after group 1 and decides whether group 2 is sent.

The reissue policy (fleet.py, stage B3 section 2): a batch that comes back missing, truncated, malformed or short of its item count goes whole to a fresh reader id holding none of its rooms, up to twice, recorded as reissue 1 or 2 with the original reader id. When reissues are exhausted on a batch, the dispatch stops and reports, and the build leg rebuilds those packets.

The bag flags. The ten biggest bags of notes-B1.md: 2007scape t04, theblackvoid t12, ainbowroad t04, t03 and t07, sweden t01, leagueoflegends t02, theblackvoid t09, ainbowroad t11 and dota2 t05. Each is marked in its packet, on the item, with the instruction unchanged: place from the concepts, not from the coder's grouping. batches-B3.jsonl lists them in bag_flags.

Fleet ids (J). Every packet carries only fleet ids for concepts and second-order themes, in headings, concept lines and sibling blocks alike, and each MANIFEST entry carries codes_by_item for fleet.py's citation check. Returns are translated back to room ids before scoring.

What rests on QB3-001 (asked 2026-10-12). The 50 KB file ceiling with parts for large rooms; leagueoflegends t02 (89 KB alone) split across two consecutive parts of one reader, one item and one line; gold copies listed in items; the multiplacement records riding on the item line and the second pass in lines carrying revises; the warm-up in reserve and no exemplars.

The build

The allocation (out/_analysis/b3_allocate.py --seed 20261015, written to batches-B3.jsonl).

The next table lists the counts.

figure value
batches (one reader each) 624 (replicate 1: 310, replicate 2: 314)
batches served in parts 313
packet files 1,080, every one under 50 KB (largest 50,878 bytes)
positions 17,089 (15,688 readings, 624 duplicates, 777 gold copies)
gold copies per gold item 19 or 20
items per batch 13 to 54, median 27

The packets (out/_analysis/b3_packets_fleet.py, in out/_packets-B3/).

One coder note held a room id. nyjets t11's theme_note says "Code c0104 remains instead with...". The packet serves that code as its fleet id; the note's words are unchanged. No other label or note in the store holds a room id.

Strings shaped like room ids. Two packets (B059, B449) carry "t34" and "t90" in a warthunder participant's words. These are tank names (the T-34 and the T-90) and no id of any room in those packets; warthunder's themes run t01 to t15. Participants' words are never altered (QB3-002, point c).

Items longer than a part. Five placements run over two consecutive parts of one reader. leagueoflegends t02 (89 KB) is in B282 and B463. ainbowroad t11 (48 KB) is in B157, and twice in B523, as that batch's duplicate. The heading repeats with "(continued)", and the item's line is due after the part it ends in, so some parts are due 0 lines, B282-p2 for one (QB3-001, point 2; QB3-002, point d).

The return specification. RETURN-B3.md sets the order: rule 0 in the contract's words; the prediction line; the return line, with bag and with also_present under J's two rulings, word for word; the multiplacement record on the line; the second pass, one line per position carrying revises; the end marker and the confirmation.

The manifest. run_manifest.json has a B3 entry, 10 entries in all. It records the readers (deepseek/deepseek-v4.1-flash, direct, medium effort, max_tokens 128,000), the seed and its suffix, R, 624 agents, the counts, the groups (60 and 564), the frozen scheme's sha256 and RETURN-B3.md's.

The close-check, B3a

validate.py B3 reported:

stage B3:
  batches 624, R 2, rooms 705, graph one component
  leg: build (0 dispatch folders with DONE)

ERROR  batches-B3.jsonl B001 lists item polska/t10 from a room not in its rooms; a batch holds whole rooms  [777 lines with this shape; first: B001]
ERROR  batches-B3.jsonl B157 holds room ainbowroad without 20 of its second-order themes (['t14', 't15', 't16']); no room is ever split  [10 lines with this shape; first: B157]
ERROR  batches-B3.jsonl: replicate 1 lacks 56 of the 7900 items assignment_items_expected counts (['2007scape/t15', '2007scape/t16', '2007scape/t17'])
ERROR  batches-B3.jsonl: replicate 2 lacks 56 of the 7900 items assignment_items_expected counts (['2007scape/t15', '2007scape/t16', '2007scape/t17'])

789 errors (4 distinct shapes), 0 warnings

What the errors are.

None of these is a fault in the batches. The leg stays open until the handler answers QB3-001 and QB3-002. Nothing is rebuilt meanwhile.

Declarations revised under J's ruling (QB3-001, QB3-002; 16:37 Berlin), before the new packets

J's ruling.

What changed in the build.

The item cap: 15 positions a batch (corpus items, gold copies and the duplicate's second copy) and 180,000 bytes of item text (J). The allocator (out/_analysis/b3_allocate2.py) works as follows:

The allocation (seed 20261015, under the suffix 20261015:redraw2: the connectivity gate forced 2 redraws).

The gold positions. Each gold item is seeded 18 or 19 times, more often than a batch has positions, so no rule can keep every reader of a gold item on a different position. Each copy instead takes a position at which its gold item has been seeded least often so far, which spreads each gold item over the positions.

The duplicate. One item a batch, from its own corpus items, presented twice. The two copies sit at least a third of the batch apart, or as far apart as a small batch allows.

The rooms on a packet. A batch's rooms are the sibling blocks its packet carries: the rooms of its corpus items, and the rooms of its gold copies, so that a gold copy looks like any other item.

The order of batches. A seeded shuffle of the 1,210 batch ids (out/_analysis/b3_dispatch_order.json), in two groups: the first 100 batches, then the other 1,110. The gold check of stage B3 section 3.2 runs between them.

The cost. 1,210 readers, each reading the index and the families it opens (about 28,000 input tokens, as at B2's gold round), about 34 million input tokens. The item text over the whole fleet is about 11 million more. Output runs about 1,800 tokens a position for 17,653 positions, about 32 million, and more for the second pass. By B2's gold round's prices the fleet costs about 40 to 55 USD.

The rebuild in B2's packet shape

The close-check, B3a

validate.py B3 reported:

stage B3:
  batches 1210, R 2, rooms 705, items 7844, graph one component
  leg: build (0 dispatch folders with DONE)


0 errors (0 distinct shapes), 0 warnings

The leg closes with done.sh B3 --cut packets-out. J runs the dispatch in two groups, the first 100 batches and then the other 1,110, with the gold check of section 3.2 between them.

Leg B3a-p2: the gold check after group 1

J dispatched group 1 (the first 100 batches of b3_dispatch_order.json) at 15:17Z. It ended at 15:32Z: 100 valid returns, 0 exhausted, 4 replies reissued (3 cited a concept outside the item, 1 line not JSON). The record is out/_fleet_raw/B3/PARTIAL-2026-10-12T153202Z.json. No DONE exists, since group 2 has not gone out. This leg is a continuation of the build leg (the PI, 15:51Z): it runs the gold check and closes at --cut packets-out.

The stop rule, declared before any gold figure is computed. The build leg declared no number for "a fall beyond the stability floor". I fix it here.

What group 1 returned (out/_analysis/b3_gold_group1.py; per copy in b3_gold_group1.tsv, figures in b3_gold_group1.json).

The next table compares group 1's gold copies with B2's nine frozen-scheme readings of the same items, weighted copy by copy. The fall is B2 minus B3, and the interval resamples batches.

figure B3 group 1 B2, same copies fall 95% interval of the fall
fidelity against gold_items.jsonl 0.637 0.625 -0.011 -0.065 to +0.045
fidelity against the rechecked placements 0.657 0.646 -0.011 -0.065 to +0.045
primary match 0.833 0.812 -0.022 -0.071 to +0.028

Decision: group 2 goes out as built. Group 1 scored slightly above B2 on gold, not below it. The upper end of every interval (+0.045 at most) lies far inside the floor of 0.193. No batch or packet changes, and no question goes to J.

Per copy. 31 of the 72 copies match my set exactly, and 11 score 0. No set is empty. The misses follow the pattern B2 found. Readers drop my second placement, most often T3-063 (9 copies), T3-004 (5) and T3-039 (4). They add T3-033 on 4 copies.

Items whose own fall exceeds the floor. These are one to four copies each, read as cases and not as a figure:

What the figure licenses. The readers share an architecture with me and with each other. So the figure bounds whether the written instrument decides the same way at fleet scale as in the pilot, not whether it is right.

Left to the check leg. fidelity-B3.md (per batch and per reader over both groups), the screen of section 3.1, the position curve and the register. This leg writes none of them. The copy-level table above is their input for group 1.

The close-check, B3a-p2. validate.py B3 reads the leg as a build leg with no DONE, so the PARTIAL record needs no question to J. It reported:

stage B3:
  batches 1210, R 2, rooms 705, items 7844, graph one component
  leg: build (0 dispatch folders with DONE)

0 errors (0 distinct shapes), 0 warnings

The leg closes with done.sh B3 --cut packets-out. Group 2 (1,110 batches) is J's to send.