{"path":"research/outside-checks/README.md","content":"# The outside check: a reader who is not the author compares a proposal with what is settled\n\n**Built:** 2026-10-10 by Claude, on the founder's word. Asked *\"shall I build the outside reader that\nchecks each proposal against your settled rulings?\"*, he answered: *\"Yes build it\"*.\n**Status:** built and tested without a model; run on a look-back and on the nine newest proposals (below).\nA reminder fires when a new proposal row is written. Whether the reader should run by itself is his to say.\n**Code:** `deliberus/outside_check.py` (no model), `scripts/outside_check.py` (the reader),\n`tests/test_outside_check.py`; the ledger is read by `deliberus/ledger.py`, shared with the corpus graph.\n**Record:** `records.jsonl` beside this file.\n\n## What it is for\n\nA proposal that reaches the founder should say which of his settled rulings it meets, and whether it\nrepeats, extends, narrows or reverses each. On 2026-10-07 one did not: a session proposed that no machine\nreading may weigh a link (ledger AD7) nine days after he had ruled that a machine of a second model family\nproposes that weight (Q33). The session had opened the ruling's note 49 minutes earlier and cites it in the\nparagraph that proposes ([what-a-rule-rests-on.md](../what-a-rule-rests-on.md) § 14.6). So reading more, or\nearlier, would not have helped. Two things were missing: an act of comparison with a product, and somebody\nwho was not the author to make the same comparison.\n\nThe question this layer answers, which nothing answered before: **for this proposal, which settled items\ndoes a reader outside the draft find that it touches, in whose words, and does that differ from what the\nauthor says?**\n\n## His words on the design\n\n- On the three things proposed (the settled items at hand at the moment of proposing; a line the proposal\n  must carry; a reader who is not the author): *\"All of these sound great.\"*\n- On depth: *\"Comparing against settled items focuses the model's attention helpfully, especially if the\n  prompting encourages it to read up deeply to understand the backdrop for each settled item and to make\n  sure the relevant parts of the corpus has been taken into account (and even parts that don't seem\n  relevant can still be relevant, like we've seen lately - I drew connections that were \"unexpected\" at\n  multiple occasions)\"*\n- Against a cheaper middle step, handing the session its own proposal back as if from someone else:\n  *\"Don't think it's gonna fall for that, if it arrives JUST after coming up with the same content itself?\n  Haha.\"* That step is not built.\n\n## How it works\n\n1. **What counts as settled** is read each time from where it already lives, and is never kept as a second\n   list: every ledger row that is not open, with how it was settled, and every conviction and principle\n   line of the instruction file. A withdrawn or superseded row is included with its state.\n2. **The author's line.** A proposal row ends with `**Meets:** reverses Q33; extends D6` or\n   `**Meets:** nothing settled`. Writing it is a reading assignment: for each item it names, the author\n   opens that item's home note.\n3. **The reader** is a model run with none of the project's instructions (Claude Sonnet through the\n   operator's own login, at low thinking effort, one proposal a call and three calls at a time; about a\n   minute for each proposal). It is handed the proposal as proposed, without the author's line, and every\n   settled item in full. For each item it says a proposal\n   touches it must copy the words on both sides. Code confirms that the words occur in the texts, and a\n   finding whose words do not occur counts for nothing.\n4. **The second look.** For each finding that a proposal narrows or reverses something settled, and for\n   each item the reader could not decide, code fetches the passage of the note the settled item points at,\n   and the reader says whether the finding stands, changes or falls. Both readings are kept.\n5. **Author beside reader.** Code lays the two side by side. Where they agree, the proposal reaches the\n   founder with its line. Where they differ, both reach him, with the quotes. The session may revise the\n   proposal or its line. It may not remove the reader's finding: the record is added to and never rewritten.\n\n```\nuv run python scripts/outside_check.py --new          # every open row not yet compared\nuv run python scripts/outside_check.py AE5 AE6        # these rows\nuv run python scripts/outside_check.py --unchecked    # list what is owed a check; no model\n```\n\n**When it runs.** A reminder (`outside-check-nudge`, a hook in the keeper's own settings) fires in the\nsession that writes a new open row into the ledger, names the rows, and gives the command. Rows that\nexisted when the check was built are named in a baseline record and are owed nothing.\n\n## Decided by Claude without asking, and his to change\n\n- **Settled means ledger rows that are not open, plus the conviction and principle lines.** The\n  constellation's sentences are left out, since each restates a ruled row. A position that lives in a\n  research note and never reached a ruling is not settled, so the check cannot see a proposal meet it.\n- **It reminds; it does not run by itself.** Each proposal is one call that reads about 13,000 words on the\n  operator's plan and takes about a minute. Running it unasked on every edit of the ledger is one change away.\n- **Low thinking effort.** At the engine's default effort one proposal against four items took 92 seconds and\n  four proposals against everything settled did not finish in ten minutes. At low effort the proposal that\n  collided was read against everything in 49 seconds and its reversal of the ruling was named.\n- **It reports to the session.** What reaches the founder is the row, carrying both lines.\n- **It goes around the project's record of machine judgements** (`deliberus/judgments.py`), which is for\n  passes over the graph. Its own record holds every answer.\n\n## What it cannot do\n\n- It is of the same family of models as the sessions that write proposals. It stands outside the draft and\n  not outside the family.\n- It compares a proposal with what is settled. It does not find a bearing from a part of the corpus that\n  nobody handed it, and so does nothing for the connections the founder calls unexpected.\n- A cheap decision model was tried in the reader's place on 2026-10-10 and failed a pass mark written\n  first: it does not see a conflict as a conflict (the keeper's working note, outside this\n  repository).\n\n## The look-back on the proposals of 7 October\n\nThe ten proposal rows that were later found to meet settled things (AD7, AD17, AD22 to AD29), and as\ncontrols the four rows the founder blessed that day (AC1 to AC4), each as first written, read against what\nwas settled at commit `45066a7` with both arcs left out.\n\n**Written before the run.** The expectations come from the nine places listed in\n[what-a-rule-rests-on.md](../what-a-rule-rests-on.md) § 14.2, which three readers and Claude found the\nnight after. The labels are Claude's, and Claude knew them when it built the reader's instructions. The\ninstructions name no case from this list.\n\n| | The proposal | should be found to touch | Reachable? |\n|---|---|---|---|\n| E1 | AD7, no machine reading may weigh a link | Q33, as *reverses* or *narrows*. **This is the pass mark.** | yes |\n| E2 | AD17, a machine's sentence weighs nothing | Q33, any relation | yes |\n| E3 | AD29, each chain ends in a named kind of stop | `conviction:nothing-is-permanently-terminal` or O10 | yes |\n| E4 | AD24, a stranger as the first reader | a ruled row on the stranger test (J4, J9, J10, J13, J15, J17) | yes |\n| E5 | AD28, the author may replace a rule | D6 or `principle:contributions-are-added-never-overwritten` | yes |\n| E6 | AD28, *committed by the step, not asserted* as a standing | C8 | yes |\n| E7 | AD28 or AD24, the author asked about a machine's rule | D3, J17 or `principle:never-ask-a-mind-to` | yes |\n| E8 | AD27 or any of AD22 to AD29, machine work on machine work | T1 or `principle:review-need-not-keep-pace` | in part |\n| | Place 3, the map tells no stories | a note's position, in no settled surface | no |\n| | Place 9, where a written step lives | an unruled proposal | no |\n| C | AC1 to AC4 | no finding of *reverses* | |\n\n**After the run** (2026-10-10; fourteen calls, 137 seconds, and 37 seconds for the second look at 23\nfindings; as printed in `look-back-2026-10-07-as-printed.txt`).\n\n| | Expected | What the reader said |\n|---|---|---|\n| E1 | AD7 against Q33 | **Found: reverses Q33**, and it stood after the backdrop. The pass mark is met. |\n| E2 | AD17 against Q33 | Missed, at low effort and again at medium. |\n| E3 | AD29 against *nothing is permanently terminal* | Found the item, as *extends*. It did not see the tension the nine places name. |\n| E4 | AD24 against the stranger test | Found: depends on J17. It also asked, as something it could not tell, whether the proposal's stranger is the test's stranger, which is the point the nine places make. |\n| E5 | AD28 against *contributions are added, never overwritten* | Missed at low effort. At medium effort it raised it as something it could not tell: whether a replaced step is removed from view. |\n| E6 | AD28 against C8 | Missed at both. |\n| E7 | AD24 or AD28 against *never ask a mind to audit its own frame* | Found: AD24 depends on D3. |\n| E8 | machine work on machine work | Raised twice as something it could not tell (T1, and the principle on review and depth). No finding. |\n| C | AC1 to AC4 | No *reverses* and no *narrows*. AC4 *extends* three rows on the stranger test, which is what it does. |\n\n**One finding nobody had listed.** AD7 also *reverses* the principle that confident housekeeping is the\nmachine's job, under which a machine-written link that fails a confident re-check is superseded by itself.\nIt stood after the backdrop. The nine places do not name it.\n\n**Reading (Claude's).** The reader names a plain reversal, where the two texts share their words, and it\ndid so twice here. It misses a collision between two texts that share a subject and few words: three of\nthree such (E2, E5, E6) at low effort. Raising E5 as a question at medium effort is the nearest it came.\nSo a clean result from the reader means *no plain reversal was found*. It does not mean the proposal meets\nnothing. Three findings were discarded by the quote check: two named rows that are still open, and one\nquoted words that are not in the proposal.\n\n## The first run on live proposals (2026-10-10)\n\nThe nine newest open rows (AE1 to AE4, AF1 to AF5), none of which carries an author's line yet: nine calls,\n96 seconds, 11 seconds for the second look (`first-run-2026-10-10-as-printed.txt`, and the record).\n**No proposal was found to reverse anything settled.** One was found to narrow a ruling: AF1 (a\nmachine-written rule is worded as narrowly as covers its links) against J18 (a headline may carry its own\nscope). The rest are *extends* and *depends on*. Since no row has an author's line, every row reads\n*the reader lists, the author does not*, which is the state the reminder exists to end.\n\n## Where a finding goes next\n\nThe two rows of 7 October that collided (AD7, AD17) were read once more the same afternoon as they stand\ntoday, for the record: AD7 reverses Q33, and the finding stood on the second look. The\n[corpus graph](../corpus-graph/README.md) reads this record, so a session that opens the home note of a\nruling is told which proposal was found to reverse or narrow it. On 7 October that note was read 49\nminutes before the proposal was written, and nothing said so.\n"}