r/place A fruit fly for organization science

out/RETURN-B4.md

Saved at B4.B4b-p4: sample 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: d03ac8907dab, 2026-10-13T17:43:34+02:00. Saved-state date: 2026-10-13T15:43:19Z. Catalogue close receipt Commit date and saved-state date are distinct.

Historical stage instructions differ from the current canonical card. Decision row 96, 12 October, was delivered before B4a-01; further limits and re-rulings are recorded in notes-B4. Saved-card SHA-256: bb5cc6a5690643e43d2e8a600efb4c750fc499bf2c2abea6c90a94861f0e1357. Current canonical SHA-256: 7fb68adfcd6a1dab15368728559d3eb3c91162c555a8a69b26a53571dfd16ebe. Instruction history.

Original GitHub file. Original SHA-256: 0c1fb067a1a4e4529b0b9f635b963166a13354edcf7bd4ab1d0dc855c4c87e98. Reading-copy SHA-256: 0c1fb067a1a4e4529b0b9f635b963166a13354edcf7bd4ab1d0dc855c4c87e98.

RETURN-B4: the return specification for the stage B4 blind sample

Frozen with the stage file. The packet builder serves it, the brief cites it, and the validator's schema is read from it.

Rule 0, in the contract's words

Rule 0. Single placement, exception on the record. A second-order theme carries one third-order theme: the one whose gate its material satisfies best; where more than one gate is satisfied, the theme's decide_when_both field decides. A second placement only where one cannot carry the material, and never silently: it needs its own distinct supporting concept, a written why_not_one in terms of what the single placement would fail to carry, a named dispensable one, and a line in multiplacement_log.jsonl. Three at most; beyond three, place one, record item-is-a-bag, and name every other theme the material satisfies under also_present, each with its own concept ids, so the cap drops no theme from the record. Every placement you make yourself names the concepts that carry each theme it places (support_by_theme, or --codes to the writer verbs). An unjustified extra is a defect. The log is a measurement: recurring (primary, additional) pairs are boundaries the scheme has not drawn, and stage C1 reads that table and the also_present record first. (J, 2026-10-11: the also_present record and the concepts behind a placement.)

How you read

Read the index page whole first. Open a family's page before you place anything into it, and list the families you opened in families_opened. Your packet holds second-order themes from many rooms, each headed by its room and its id and numbered by position. Each item gives the coder's label, the coder's note and every concept with the participants' words. Place each item from its own material. Your packet is complete in itself.

What you return, in this order

1. The prediction line, first, before any placement: the pair of third-order themes you expect to find hardest to tell apart in this packet, and one sentence why.

{"agent": "a017", "predicted_confusion": ["T3-007", "T3-011"], "why": "one sentence"}

2. The return line, one JSON line per item, in position order, and nothing else between the lines.

3. The multiplacement record, on the same line, inside multiplacement_log:

{"sub": "...", "theme_id": "T2-.....", "key": "<sub>/<theme_id>", "batch": "S05-07", "agent": "a017", "replicate": 1, "position": 12, "primary": "T3-007", "additional": "T3-011", "why_not_one": "what this material carries that T3-007's gate does not reach", "why_this_one": "what in the material satisfies T3-011's gate, and its distinct supporting concept", "support_primary": ["C0781518"], "support_additional": ["C0781527"], "dispensable": "which of the two you would drop if forced to one, and what would be lost"}

Four rules on it:

4. The second pass. After your last item, read your whole packet again and write one line per position, in position order, after all your first lines and before the end marker, each naming the line it revises: {"pass": 2, "revises": 12, "batch": "S05-07", "agent": "a017", "third_order": ["T3-007"], "changed": false, "why_changed": null}. When you would now place the item differently, changed is true, third_order holds the new placement and why_changed says what made you change it. The second pass never overwrites the first: your first lines stand as written.

5. The end marker and the confirmation.

{"sub": "...", "theme_id": "T2-.....", "batch": "S05-07", "agent": "a017", "replicate": 1, "position": 12, "third_order": ["T3-007"], "multi": false, "why": {"T3-007": "what about THIS theme put it here rather than its nearest neighbour"}, "confidence": "clear|arguable", "read": "whole|theme-block", "exemplar_read": null, "families_opened": ["G03", "G09"], "bag": false, "t_start": "...", "t": "...", "support": ["C0781518"], "also_present": {}, "multiplacement_log": []}
END-OF-RETURN

After your last line, write the end marker END-OF-RETURN on a line of its own. Confirm that you reached the end of the packet by writing that marker; a return without it is a partial return and is reissued.