{"path":"research/quality-control-for-deeper-steps/corpus-bearings-how-the-small-tasks-are-checked-as-a-reader-returned-it.md","content":"# How the existing small tasks are checked, and what carries over to a deeper step (2026-10-10)\n\nOne of three read-only readers (Sonnet 5.5) sent on 2026-10-10, the hour the founder ruled on how deep the\nmachine may write under a link: *\"It may and should write deeper steps. But the microtasks in charge of\ndoing so need to be quality-controlled, just like the other microtasks that are in play in Deliberus. Ground\ndeeply on this. Use the corpus graph to the best of your ability to make sure we keep track of all\nconnections both known and unknown to the rest of the ideas in the corpus.\"* (ledger AG6).\n\nThis reader's part: the existing small machine tasks and how each is checked, with every control sorted into built, measured, ruled or proposed, and whether each carries over to a task whose inputs are themselves machine-written sentences. It was told to read\n[the-chain-inside-a-link.md](../the-chain-inside-a-link.md) in full first, to ask the corpus graph about\nevery note before opening it, to change nothing and to call no model. It made 136 tool calls. The three\nbriefs are in [the-three-briefs.md](the-three-briefs.md). Its report is below, unchanged, except that\nthe machine's own path to the repository is cut to the path inside it.\n\nWhat was done with it: [../quality-control-for-deeper-steps.md](../quality-control-for-deeper-steps.md)\n§ 11 says which of its findings were checked against the files and what each changed. A finding is a\nreader's, and stays a hypothesis until both passages have been opened. What was kept is in\n`../corpus-graph/found.jsonl` (lines whose `where` names this file).\n\n---\n\nKey: B built, M measured, R ruled (his words quoted), P proposed. Notes (docs/research/): MB microtasks-in-broad-daylight, PR proving-a-pass-reliable, EL the-evals-loop-and-our-machine-passes, PQ pass-quality-and-the-choice-of-model, ER earning-the-right-to-write, MW machine-work-as-a-standing-property, PV the-parts-review, SF split-review-and-the-founders-intentions, SR storing-the-record-of-machine-judgments, AC auto-connect-upgrade, WO writing-out-the-unwritten, OR its outside-reading file, CH the-chain-inside-a-link, SE scheme-set-exhaustiveness, OC outside-checks/README, LG session26-open-rulings, CM CLAUDE.md, TODO TODO.md. Code is under deliberus/ unless marked scripts/ or tests/: ps proposed_split, dc extraction/decompose_claim, au extraction/auto_connect, kp keeper, rj relevance_judge, dj decomposition_judgement, rs reported_speech, ss support_semantics.\n\n## 1. The small tasks in play and how each is checked\n\n| Task: decides or writes | Code checks | Second, separate call | Recorded per call | People (labels, reads) | Measured | Stands, by whose word |\n|---|---|---|---|---|---|---|\n| **Keeper**: 1 of 7 keys per pair; same gives a merge mark, contains/overlaps a split note, else stop (kp:55-83) | Reason before key (kp:92); unknown key refused (kp:213); stop ends the pair (au:511) | Swap check (both orders) built, off, unused by linking (kp:154; au:508) | Row per call, inputs named (kp:206); decided_by on mark (au:646) | 0; sitting-1, 120 pairs, unsat (PQ:473) | Linking asked again: sameness same 42/54 (PQ:155); overlaps 16/20 on one model, 6-7/20 on two others (MB:406); 47/47 merge marks false (AC:91) | Runs in linking, propose-only. R \"Confirmed the proposed ordering, thx\" (AC:30). T5 open (LG:475) |\n| **Splitter**: cuts a claim into parts, writes them as claims in the author's name (ps:343-458) | Degenerate answer refused (ps:125); claim with parts not cut again (ps:181); typed version \"2\" (ps:76) | Coverage check gates the write (ps:314) | Link keeps version, both models, verdict (ps:412-423); prompt whole | 0 touches on 51 parts (PQ:64); 111 now, unlabelled (MB:558) | Claude reading Claude: v1 6/37 parts harmful (MB:182); v2 recut 60 parts, 9 add a gloss, one \"or\" split (MB:481-509); 5 models, 4 cuts (PQ:262) | Writes marked. R \"Wire and switch first, sitting later.\" (ER:355); hold declined: \"we don't have to hold\" (PQ:524-525); \"Fresh cuts blessed\" (MB:415). Live splits used an unmeasured fallback (PQ:314) |\n| **Coverage check**: per part, weaker if false? plus dropped, invented, covers (dc:104) | Gate reads that answer only (ps:144); no verdict if a call or part failed (ps:291) | Is the second call; original sits in its prompt, blind by field order only (dc:188-196) | Verdict, model on link (ps:255) | 0 | Same answer twice on 45/45 parts (MB:260); five checkers each missed or false-alarmed (PQ:265-285) | Gates every write; rewritten 2026-09-30 on \"Should we rather not just fix the 'coverage check'?\" (MB:233) |\n| **Judge of parts**: part kind (necessary to no-fit) and 0-1 dependence (dj:54) | Unknown kind or bare no-fit refused (dj:195-200); reason first (dj:117) | Model-free reader beside it (dj:94) | Proposal, confidence, agreement on edge (dj:249) | 0; review-1, 60 edges, unsat (TODO:1331) | 197 edges: 81 no-fit, 70 miscast (PV:85); 84 stored backwards (PV:98); readers disagree on 18, agree 27, silent 152 (PV:36-41) | Proposing only. Last ran 2026-09-22 (PV:154) |\n| **Relevance judge**: does a link bear, which way, how far (rj:59-89) | Gate first (rj:120); conflicting and unconfident readings ignored (rj:20, 127); model stored (rj:193); reads only links with a scheme, not confirmed=false (rj:155-157) | None; second family by rule (rj:23) | Whole reading on link (rj:180) | 0 | Bare number 0.5 on 8/12, named steps 12/12 (MB:115); five models, five readings (PQ:121) | Built, writes nothing live (PQ:385). R Q33 \"your proposal is blessed, make it so.\" (rj:3) |\n| **Scheme classifier**: which of 44 schemes fits a link, or none (schemes:723) | Gate before names (models:242; schemes:745), test-pinned (tests/test_schemes:206); missing reason filled, not refused (models:263) | None | Generic row; a name written after a no is lost (SE:291) | 0 | No-fit 0/3,666 beside a shrug (PQ:172); gate changed 3/24, second reading 4/24 (SE:277) | Gate built 2026-10-10, not deployed (SE:262). R \"Single exit is blessed\" (CM:564) |\n| **Linking step**: writes support/attack/qualify between texts, confirmed=false, kept if model's strength >0.3 (au:606, 722) | Gate read first (au:587); 3 relations writable (au:226); same off menu once keeper ruled (au:381); pair ceiling (au:468) | Keeper first; no re-read | Inputs named (au:405); no judgment number on link (LG:619) | 0; 822 links, none with anything under it (CH:84-90) | Asked again: relation 46/54, attacks 20/24 (AC:126) | Unconfirmed; unblessed provenance presumes nothing (ss:205). Paused with extraction 2026-10-05 (PQ:382). R \"Repair it sure!\" (AC:93) |\n| **Extraction's claim passes**: text into claims with passage, unstated premises, linked patterns | Reason first (tests/test_reason_before_verdict:12); quote check is a script, not a gate (Y6 open, LG:595) | Self-check by same machine; score removed, findings unread (MW:101-148) | Source span; prompt whole | 0 (EL:151) | 94.1% of 1,144 passages word for word (PQ:215) | Base of every chain; no human-labelled rate (PR:355); paused live 2026-10-05 (PQ:379) |\n| **Title writer**: 3-5 word headline (api:4286-4338) | Debt query (title_debt:32); marked fragments refused (api:4333) | None | title_model on claim (api:4337) | 0; he called shared part titles \"not acceptable\" (MB:551) | Never (PQ:387); 330/1,989 longer than old cut (PQ:189) | Runs when called (MW:507); no ruling |\n| **Reported speech**: splits report from position; mints position as a claim (rs:366) | validate_split: high confidence, both halves, not the original (rs:216); party_holds_position first (rs:113) | None; recheck script re-asks stored reports | Input named (rs:378) | 0; a session read 84 reports, 1 wrong (CM:437) | 1,859 claims: 153 read, 46 minted (ER:474) | On for new extractions (PQ:388). R 2026-08-15 \"always mint\", his words not quoted (rs:10) |\n| **Outside reader**: compares a new ledger proposal to settled items (outside_check.py) | Quotes must occur word for word, author's line never shown (outside_check:14-16) | Second look at narrow/reverse findings (OC:52) | Own records.jsonl (OC:80) | 0 | Pass mark met; 3/3 same-subject collisions missed at low effort (OC:121-142) | Reminder only; R \"Yes build it\" (OC:3); same family as authors (OC:85) |\n\nAcross the rows: every task rests on code gates, reason-first or gate-first questions, marks and the call record (client:270). Second calls are the splitter's coverage check, the outside reader's second look and the keeper ahead of the classifier. No task has a human-labelled error rate on record: the answer tables were empty on 2026-10-05 (EL:21, 136; I did not read them now), and every figure above is Claude reading Claude (CH:402). So \"quality-controlled like the other small tasks\" means this bundle today, with no measured human rate behind it.\n\n## 2. Controls that exist, by kind\n\n1. Reason before verdict. B tests/test_reason_before_verdict:65; resident rule CM:237 (no ruling quoted). M repair left the parts census unmoved (PV:107).\n2. Refusal asked first. B au:232, rj:68, schemes:745 (not deployed). R \"Single exit is blessed\"; \"Great, do it, and document that rule\" (CM:564). M 0/3,666 (PQ:172). Keeper and parts judge keep a no-answer on the menu (kp:55; dj:54).\n3. Asked a second way, count who changes side. M 4 refusals against 20 (CM:283); B trial scripts only. Same question twice: B scripts/measure_splitter.py, M 45/45 (MB:260). P AD14 (LG:748).\n4. Both orders. B kp:154, off in linking (au:508). M blind reader same on 26/29 (WO:48). P AD14.\n5. Separate checker not shown the draft. B in part: coverage check (dc:188), outside check (outside_check:14-16). M blind reader steady, lenient (WO:433). P AD14-15 (LG:748).\n6. Code check of names and numbers. B gates ps:125, rs:216, au:226; script only measure_quote_fidelity. M 94.1% (PQ:215). P Y6 (LG:595); number/date/name law (MB:590) not in code.\n7. Write marked, reversible. B ps:412, au:729. R \"Wire and switch first, sitting later.\" (ER:355); \"Yes, replace by itself, keep the old link visible.\" (SF:223).\n8. Hold what failed. B ps:314, rs:216, au:587, rj:127. M 4/11 held for invention (ER:378).\n9. Undo. B ps:621, ps:735, scripts' --restore (AC:91, 112). P AF2 (LG:783).\n10. Record of every call. B client:270, judgments:494; edits refused, proven live (SR:265). R \"Yes build it.\" (LG:618, 629). Not built: number on the item (Z1b, LG:619); \"was this ever asked\" query (R8, P).\n11. Person reads before a rate is proven. R \"Sure\" (LG:598). Not done: 0 labels (EL:245). P sample sizes 59 and 149 (T3, LG:473); two rates, never one figure (Y12, LG:603).\n12. Review page and note box. B, R \"Add it!\" (LG:600); scripts/read_review_notes.py; M \"No notes yet\" (EL:245). On the person: B seeded wrongs 1 in 6, blind 1 in 5 (sameness:75); parts review blind only (parts_review:32, 96).\n13. Sealed share. P Y11 (LG:602); no code.\n14. Random draws every sitting. P Y14 (LG:605); today a fixed salted draw (sameness:81).\n15. Second model family. R Q33, relevance judge (rj:3). B answering model stored (rj:193; ps:236), family guard (scripts/recut_splits:28). P Y4 (LG:593). M 1 of 5 checkers caught what the writer's family passed (PQ:265).\n16. Admission in four steps. P Y3 (LG:592); only measuring scripts (measure_splitter.py, measure_passes_on_router_models.py).\n17. Depth capped by measured error. R core of T1 (CM:552; LG:471); other clauses unruled (TODO:1650). B only: a claim with parts is not cut again (ps:181); nothing counts depth. M no human-labelled rate for any machine step (PR:355).\n18. Version by fingerprint. B judgments:19, 3 production sites (rs:378, kp:206, au:405); splitter's is typed (ps:76). R inside Z11 (LG:629).\n19. Also: unblessed provenance presumes nothing (B ss:144; R \"Yes it should. We should expect good splits\", ER:160); five tests with no key, and a known-answer test (P AF2, AF4, LG:783, 785; an untracked, unrun script counts authors' own chains: docs/research/the-chain-inside-a-link/chains_authors_wrote.py).\n\n## 3. Carry-over to a deeper step (inputs are machine-written sentences)\n\nNo outright no.\nYes: 1 (the test skips models imported under another name: api:4286, test:51); 8 (a held step must also hold what rests on it); 11 (level by level: level two's rate depends on level one, PR:82); 13 (writer's instructions are tuned on the cases); 14 (draw at every level, unflagged steps included); 16 (step 4 needs labelled steps; none exist); 19 (a known-answer test measures recovery, not correctness, LG:785).\nYes, with lineage: 7 (reversing a step must mark steps built on it: MW:365, P, no code); 10 (needs the number on each item and inputs named at each call: CH:365).\nWith a change: 2 (the writer wrote a rule for 29 and 28 of 30 links, WO:388, so its own \"no\" fires too rarely; take the \"no\" from a reader or code); 3 (open writing cannot be voted, WO:286; compare two writings by the sameness check, itself loose on overlap); 4 (the keeper's mirror trick has no analogue; both orders of premises do, and matter more as premises grow, OR:31); 5 (give the checker source passages and the two end claims, never upper machine steps, OR:353); 6 (anchor to the original passage at every level, else machine is compared with machine); 9 (undo must cascade down; undo_recut works per claim); 12 (no page exists for a written step, Y10b, LG:601); 15 (writer, upstream steps and reader share one family; found steps lean on it least, CH:168); 17 (a rate per level; AG6 leaves open whether an unmeasured level waits); 18 (also fingerprint the retrieval that picks the inputs, SR:348).\n\nNeeded, held by no task: (a) a depth counter per machine item, from the source or a person's last touch (T1's dial); (b) an error rate per level, measured on steps built from the sentences actually stored; (c) lineage from step to recorded judgment to inputs, with mark-dependents and read-again (AG5, LG:798); (d) \"needed?\" decided by leaving a part out before a blind reader, never by the writer, who wrote 3.6 sentences where 1.2 sufficed (WO:396); (e) a sitting for steps with a first-thing-wrong note (Y10b, AD20); (f) found against made marked, code checking the located claim exists (CH:159-166).\n\n## 4. Contradictions and gaps\n\n1. AG6 withdrew \"one made level without a measured rate\"; AG2 (LG:795) and CH:171-172 still say it, CH:5 still says all unruled, and AG7 onward does not exist (LG:799).\n2. T1's ruled core caps depth by measured rate (CM:552; LG:471); \"no rate, a person engages first\" is unruled (LG:471); AG6 says write deeper. Extraction is presumed in strength (ss:144) with no rate (PR:355). A reader finds T1 would bar the ruled kartpaus recursion (docs/research/corpus-graph/readers/2026-10-10-machine-work-notes-as-a-reader-returned-it.md:135).\n3. Coverage is called blind, without the original (dc:35-38; MB:236); its prompt says so, then holds the original (dc:188, 196).\n4. Abstention is stored, not used: an unconfident same still marks (au:513-526); the swap check, \"most mature bias control\" (kp:36), is off in linking (au:508).\n5. The relevance judge cannot select the linker's links (rj:155-157; au:731), yet CH:96 (\"presumed to bear nothing until it is read\") needs a reader. rj:18-21 lets a confident reading set relevance; PQ:364 says write nothing for a degree; AD7 (LG:741) bars it; OC:123 finds AD7 reverses Q33.\n6. CM:564: no-answers never on a menu; kp:55 and dj:54 keep them. EL:383, 480: a listed refusal \"measured to fail\"; SE:277 and a reader (F6): the costless shrug lost; SE:303-309: the parts judge's no-answer fired 81/197.\n7. SR:258: one call site names inputs; code: three (rs:378, kp:206, au:405). judgments:19: nobody types a version; ps:76 does. CM:369: only splitter and relevance judge store the answering model; api:4337 does too. ER:330-335 promises automatic demotion; ss:144 is a static set.\n8. The reason-order guard skips aliased bases (test:51; api:4286). A missing no-fit reason is filled (models:263) but refused by the parts judge (dj:195-200).\n\n## 5. What the corpus graph already held\n\n- the-chain-inside-a-link (full, 457 lines): AG6 names it as home; the note never mentions AG6.\n- microtasks-in-broad-daylight (full, 661): T7 home; reader: splitter lacks a test for a cut through a term (unchecked).\n- proving-a-pass-reliable (full, 589): T1 home; readers: T1 would bar the kartpaus recursion; the machine stack needs a depth cap.\n- the-evals-loop (full, 511): Y9 home; reader: the refusal lost to a costless shrug, not to the list.\n- pass-quality (full, 722): X9 home; reader: its checks cannot see what kind of object extraction makes.\n- earning-the-right-to-write (full, 528): reader: a week of empty correction record read as no objection.\n- machine-work-as-a-standing-property (full, 560): a freshness key with a test that it runs.\n- storing-the-record (full, 370): Z11 home; reader: a written wording is a recorded judgment. split-review (full, 663): B7 home, \"not wired\". auto-connect-upgrade (full, 239): AB11 home.\n- writing-out-the-unwritten (lines 1-75, 236-607; not 76-235): AD13 home; AD23's correction is not in the AD13 row.\n- the-parts-review (full, 222), outside-reading-dependable-small-tasks (full, 386), outside-checks/README (full, 159): nothing.\n- Also scheme-set-exhaustiveness (gate-trial section only): reader narrows EL's refusal claim. CLAUDE.md read at 1-80, 145-230, 232-573.\n- Code: every assigned file in full, except judgments (1-170, 405-620), auto_connect (1-100, 189-318, 381-764), measure_quote_fidelity (1-120).\n"}