Authoritative source, reproduced unchanged. Exact Markdown · Agent copy with resolved links. These instructions govern research runs, not checkpoint interviews.
Stage D3. The return: adjudication by element.
Model: as arm.json sets for this stage
(your platform file lists the model and effort). Legs:
one per element group (a fourth-order theme's elements, or one element
with many lines), packets of at most one hundred lines; then one leg for
the unattached propose lines; then one for the verdicts and
the uncomposed rooms; then the re-check handoff; then the close. A leg
may close earlier when you choose. Every model revision is a move,
logged with mem.py log --kind move (the Grodal, Anteby and
Holm move named) and snapped with
python3 tools/snap.py D3 move-<move>-<n> when
it is made. Fleet: the labelers again, for the re-check
rooms only, through the handler; the verdict fleet again for rooms whose
verdicts rested on a rewritten element. Both run outside your
session.
Steps: D3a-01, D3a-02 ...
one per element group, then as further D3a legs the
unattached propose lines and the verdicts with the
uncomposed rooms; D3b the re-check, if you build one;
D3c the freeze and the re-read, the handback and the
interview. Each leg is named by its step (STANDING §2).
Safe stops: after each element group is ruled and
logged. At a safe stop, check for .pause
(ls .pause); if it is there, log where to pick up, your
working hypothesis and the next room or item
(mem.py log "<hypothesis>; next: <item>" --kind pause),
and close with done.sh D3 --pause (STANDING §2).
Startup packet, every leg: _head.md,
this file, SCHEMA-adaptations.md, the last five diary
entries, validate.py --open D3; the
rooms-x-elements view's summary for the group.
Reads allowed:
mem.py adaptations --element <id>; the room's model
and coder documents by query when a line needs them
(mem.py room, forest, theme,
codes, cite.py);
verdicts-D.jsonl; findings.jsonl by
--touching; prior.md; the last
story_rooms-pN.jsonl. Forbidden: the raw
ledger as a list; loosening an element until a room fits (rule 12);
promoting a case-only element to the global model without a shared
warrant; EXPECTATIONS.jsonl (stage E1 scores it); the
canvas as an undeclared ground (rule 7).
Outputs: adjudications.jsonl;
model/ revisions with history.jsonl lines;
tier_history.jsonl for any tier move; when the third-order
tier is recut, scheme_v2.jsonl and
assignments_final.jsonl rewritten
(mem.py mint, then mem.py reassign, as stage
C2 says); handoff-D/recheck/,
adaptations-recheck.jsonl; uncomposed-D.md;
findings.jsonl lines; verdicts-D.jsonl
rulings; exception-report-D.md; notes-D3.md;
the model frozen as one version, hashed;
handback-D3.md.
1. By element, never as a list
Read _views/rooms-x-elements.tsv first: where the mass
is. Then one element group per leg:
mem.py adaptations --element P07 returns every
accepted-or-pending line touching P07, sorted by op. For each line:
accept, modify (with revised, which passes the same
portability check as the labeler's line; the original stays in the
ledger), reject, or particular, with one reason from the line's evidence
and the room's material, into adjudications.jsonl through
mem.py adjudicate (SCHEMA §6), with pair where
a second room's accepted line meets the same correction and
kind where you reclassify. A portable line with no shared
warrant is a locally supported particular if its evidence
suffices, otherwise pending and unresolved. A line naming
the room itself in condition is a particular; one naming
another room in relation is not. Quotes go through
cite.py.
2. Corrections met twice
Two accepted corrections with the same target and the same lifted
node at the third or fourth level are the trigger: you re-examine the
element in the same leg, and your written reason is the warrant (rule
12), never a count. A revision is a history.jsonl line with
the move (one of Grodal, Anteby and Holm's eight), the adaptation ids
that caused it, a move line in the diary and a snap, made
when you revise; substantive alignment warrants a cluster branch or a
change of global scope, construct or mechanism. The count does not
choose the revision; retain the formulation with a written reason if the
alleged alignment does not hold; every finding touching the element is
re-examined under rule 14 in the same act, as a new
findings.jsonl line carrying the id it supersedes. A tier
move is a tier_history.jsonl line under rule 11's amendment
regime. absent is ordinary and never a correction unless
the model stated the element as universal, which you decide here and
log. You do not loosen an element until a room fits.
3. The unattached lines
propose lines touch no element. Read them by lifted
node: several rooms' unplaced second-order themes pointing at the same
target with no third-order theme holding them are minted as one
(mem.py mint, a tier_history line with move
splitting or merging, logged and snapped), the
new theme written to scheme_v2.jsonl and its members moved
with mem.py reassign, and the lines are re-lifted
(python3 tools/ingest.py D --relift). A proposal you accept
becomes an element with status candidate
(since: D3), and the model is rewritten with it; one you
reject is a particular with a reason. An element supported only in one
room remains in that local model and adaptation; it does not enter the
global model solely to fit the case.
4. The verdicts, and the rooms the model cannot compose
Rule the split verdicts with the criterion in front of you, and the
cannot-tell lines stage D2 listed as unsupported by the
room's numbers: a ruling is a verdicts-D.jsonl line with
ruled_by: analyst, changed_from (the readers'
verdicts) and the reason; the readers' lines stay. Rule 13 governs; the
readers are not judges.
Then uncomposed-D.md: every
does-not-compose room read whole through its forest, in its
own words (rule 12): what it did, what the model would need in order to
say it, whether the model should have that, and the condition that
separates it from the rooms that compose. Name the kind, yours and not
the reader's: outside-the-model, the room organized and the
model cannot say how, the counterexample that bounds the model;
out-of-scope, the room did not organize, or did something
the model is not about (received the event as news, talked about another
room's work, played), which bounds the model's scope and not its claims;
too-thin, the room is above prior.md's floor
and its record still does not show how it organized, which bounds the
record, read with its off-platform pointers beside it. The
out-of-scope rooms are also read together, since what they
did instead may be a kind of its own.
Local validation precedes a shared claim. Resolve each supported exception in its local model and ledger, including unshared particulars. Shared conditions require substantive comparison of the rooms and a written warrant. Repeated corrections can define a cluster branch; they do not force the same revision everywhere. If no defensible formulation survives, replace or withdraw the claim under rule 14. Record unresolved local evidence explicitly. An exception cannot be printed beside an unchanged universal claim as a substitute for a scope decision. Preserve every pre-adaptation verdict alongside local and cluster judgments. The list is carried to D4, D5 and E1. This is an in-sample return run as a census, in the spirit of Eisenhardt's replication logic: a model that composes everything by being loose is weaker than one that composes most rooms and can say which it cannot and why.
The field's entries.
out/sealed/FIELD.jsonl names the tentative entries stage C4
took from the field. Rule them as any element, by the rooms' lines: each
becomes standing, bounded or withdrawn under rule 11, with its
history.jsonl line, and none stays tentative past the
freeze. Report them apart in notes-D3.md under a heading
The field's entries, one line per id: how many rooms
instantiated, restricted, contradicted and left it absent, and the
ruling.
5. The re-check
For every rewritten element, all rooms whose adapted account relies
on it go back to their resumed return lead against the revised model.
Include positive and contrasting cases and record how affected rooms
were identified. Write recheck-scope.json with
affected_rooms (a list), unaffected_rooms (a
room-to-reason mapping) and reason for the scope. These
sets must partition the analysed corpus. If the scope is uncertain,
recheck all rooms. Every affected room needs a revised local account
with its local status; unresolved cases stay explicit. Do not freeze a
newer model hash than the one returned to the affected cases. A
three-room sample may pilot the revision; it does not certify untouched
affected accounts. Preserve both versions. First write
MODEL-D3.md, the revised model as prose with ids (the
re-check never reads the prose written before the revision); then
handoff.py D --recheck <sub>,<sub> builds
handoff-D/recheck/ with the revised vocabulary,
VERSION and model, and the verdict packets for the same
rooms in verdict-D/recheck/. Close the leg with
done.sh D3 --cut packets-out. The handler runs the labelers
under the same brief into DROPS/D/recheck/, and
dispatch.sh D3 sends the verdict packets to the verdict
fleet (_fleet_raw/D3v/); when both have returned, the
harness runs ingest.py D --recheck, which compiles
adaptations-recheck.jsonl (ids
R-<sub>-<content-and-version-digest>-NNN) and
verdicts-recheck-D.jsonl, and opens D3b. You
read the before-and-after ledgers of those rooms and say in
notes-D3.md whether the rewrite fixed what the evidence
pointed at; E1 reports them. Both verdict lines stand, with the version
on each.
6. The close
Pending lines retain their unresolved status and are counted
separately from supported particulars. A locally validated account
cannot contain pending claims. Adjudicate every original and recheck
line; a completed recheck never silently accepts its lines.
exception-report-D.md: per room, particulars against
accepted shared lines; per element, rooms adapting it by op; the
composition criteria in prior.md. Report fixed-global
verdicts, local validation status, particulars and corrections met twice
separately. Repeated corrections are candidates for clusters, never a
failure threshold. Count distinct shared changes as well as ledger
lines; assess cluster adequacy at D4 to D5. Where all adaptations remain
unrelated particulars, say: a model whose adaptations are all
particulars has not composed. The model at the close is frozen as
one version: done.sh records its hash at D3c's close
(out/_closes/model-D3.sha256), and the hash goes into
RUN.json; python3 tools/ingest.py D --relift
then re-lifts every ledger line to it (the check at D3c and at D4
refuses a ledger that is not re-lifted); every ledger line is re-lifted
to it before stage D4, and the account, the figure and the data
structure are re-read against every amendment (rule 11). Write the
re-read into notes-D3.md under a heading
Re-read against the amendments, one line per amendment: its
id, what in the account, the figure or the data structure it changed, or
"nothing".
The counts, last. After every ruling is written and
not before, validate.py D3 computes and you read: the four
verdicts' counts over the analysed set, and
does-not-compose by kind; cannot-tell by
threshold; the rooms stage C2's last story could not tell, how many of
them compose now, how many do not, and whether any room that story told
does not compose here, the measure of how well the loop prepared for
this test; the composition rate of the rooms read against a story at C2
beside the rate of the rooms never read against one, from
story_rooms-pN.jsonl and verdicts-D.jsonl, the
nearest the run comes to measuring what the stories were worth. Report
them in notes-D3.md. No ruling is revisited because of a
count: a bad number is a fact to report, not a thing to fix.
Moments to log
Each element group opened and closed with its counts by decision;
each revision with its adaptation ids and move; each minting and
candidate element; each verdict ruled with changed_from;
each uncomposed room with its kind and condition; each finding bounded,
and each condition left as one room's description; the re-check rooms
named; the composition criteria; the counts read.
Final message
The claim (what the return taught the model), the room that best
supports it, the room that most threatens it, the condition that
separates them; then: lines by decision, revisions and their causes,
elements bounded, minted or made candidate, re-check rooms and what the
rewrite fixed, the diagnostics against prior.md, verdicts
ruled, the four verdicts and the kinds of does-not-compose,
the bounds with their second room and the conditions still one room's
description, residue kinds named, how the last story's misses fared and
the two composition rates, what the return showed that the room notes
did not predict; the licences exercised (METHOD.md). A return value.
Close
done.sh D3 at every leg, every revision logged and
snapped as it was made; the close-check report into
notes-D3.md; handback-D3.md; the head; the
closing diary line.
Interview point. D3c writes
out/interview/D3c.md (under 800 words: what you did, what
you found, what surprised you, what you doubt, and the three questions
you would most like to be asked) and closes with
done.sh D3 --cut interview: the model returned to every
room and adjudicated: where it composed, where it did not, what the
corrections changed. The principal investigator may talk with you here,
in a fork of this leg, run in a copy of your folder as it stood at the
close (not read-only; nothing done there reaches the run); the run goes
on from the cut either way. done.sh files the brief under
the leg, the stage, the step and the minute, and refuses the cut without
the brief (and, at a stage's end, without the handback).