{"path":"research/session49-what-goes-under-a-link.md","content":"# Session 49: What goes under a link\n\n**Date**: 2026-10-10, one local conversation. It began on 5 October as a repair to the route that\nwrites claim headlines (commits `808aab3` to `bdc6285`, 5 October, not retold here), and nearly all\nof what follows happened on the 10th · **Type**: a public post read against the corpus, two notes,\none ruling, a page built and deployed, one correction the founder caught, and the graph's shape\nread and drawn.\n\n**Through-line.** One question was moved forward five times in a day: what is under a link, how far\ndown it goes, who writes it, who checks it, and where it is kept. The last answer was the one\nnobody had looked for: not in the graph. (First told as *nowhere, and the graph has no place for\nit*; corrected the same evening, § 5.) By the end of the evening he had ruled where it is kept,\nand it was built (§ 5a).\n\nThis note keeps his words and the reasoning that joins the steps. Each step has its own home, named\nat its heading. Nothing here is a ruling unless his words are quoted beside it.\n\n---\n\n## 1. His words, in order\n\nKept because each changed what was done next. Messages that only said *go on* are left out.\n\n1. **On a post about machine-written proofs and a curated mathematics library**: *\"Mine this for\n   insights!\"* What came of it: `alien-proofs-and-the-library.md`, five proposals (ledger AF1 to\n   AF5).\n\n2. **On that note's first proposal, which wrote one general sentence under a link**:\n   *\"There are many intermediate reasoning steps in that link chain, no? Did you take full account\n   here of everything that is accounted for in the last audio walkthrough generated (which I\n   believe talked about premises and induction and evidence etc?)? I feel like there's a clear\n   place here for mechanistic evidence about WHY decomposition occurs etc etc?\"* And, the same\n   message: *\"What would a \"prover\" even be, in the context of Deliberus?\"*\n   The answer to the first question was no. The proposal was rewritten the same day\n   (`alien-proofs-and-the-library.md`, the section that quotes these lines).\n\n3. **The demand the day turned on**: *\"I guess that makes sense. But all the dark matter of the\n   intermediate chain of reasoning/causality must be elucidated by the Deliberus graph somehow. We\n   must not make too-large leaps/steps, that would be irresponsible for any scientist. We must\n   examine and make it possible to review each step of the reasoning tree/chain/graph.\"*\n   And: *\"We also must decide WHEN the machine writes its guesses and when it widens and narrows\n   and based on what (the subgraph? which subgraph exactly, connected to which exact claims/links?)\n   etc etc. Think deeply about all this and read up on anything relevant. Use this new corpus graph\n   thingy I just built in a separate session. :)\"*\n   What came of it: `the-chain-inside-a-link.md` (ledger AG1 to AG5).\n\n4. **The ruling** (ledger AG6), asked whether below its first level the machine may write deeper\n   steps itself or should only find and ask, where Claude had picked the second:\n   *\"It may and should write deeper steps. But the microtasks in charge of doing so need to be\n   quality-controlled, just like the other microtasks that are in play in Deliberus. Ground deeply\n   on this. Use the corpus graph to the best of your ability to make sure we keep track of all\n   connections both known and unknown to the rest of the ideas in the corpus.\"*\n   What came of it: `quality-control-for-deeper-steps.md` (ledger AG7 to AG11).\n\n5. **Asked whether to build the page where he reads the machine's written-out steps, or first run\n   two tests that need nobody**: *\"Build the page\"*. And before it: *\"Make me an audio walkthrough\n   of recent progress and insight in this session. Focus on actual ontology/core stuff, not the\n   corpus graph tooling etc. 10 minutes max.\"*\n\n6. **On hearing a reply say that five habits run for every small task, one of them *asked twice***:\n   *\"'Asked twice'? I don't think I ever blessed that particular part. But this stuff was being\n   thought through in one of these existing Deliberus sessions iirc? If so I'll work on it over\n   there.\"* (§ 4.)\n\n7. **After the page went live**: *\"Wait, are the rules stored as claims, or what does the actual\n   graph ontology look like? Can you draw a diagram for me? Btw the Lins project, how far is it\n   from being useful for inspecting the Deliberus graph?\"* (§ 5, § 6.)\n\n---\n\n## 2. The chain of reasoning, step by step\n\n**From a post about proofs to the sentence under a link.** The post's point, read against the\ncorpus: a machine can produce a proof that a checker accepts and that no later author can build on.\nDeliberus has no checker at all, so the nearest thing it can ask of a machine-written step is that\na person can read it and say where it goes wrong. The first proposal stopped at one general\nsentence under each link, the rule.\n\n**His second message opened the rule.** Under *squirrels that smell of decomposition are dead*\nthere is a chain: why decomposition makes that smell, why nothing else does. One sentence under a\nlink is a single leap dressed as a step. The walkthrough of 8 October had already said a rule rests\non compared cases and on mechanism; the proposal had not used it.\n\n**So the question became how far down, and who writes it.** The corpus graph (the index of what\nnotes say about each other) was asked first, and returned the ruling the October proposals had\nnarrowed without naming it: on 25 August he ruled that the machine works out the whole descent\neagerly. Counted on the live graph that day: 1 link of 1,569 has anything under it.\n\n**Claude's pick was the cautious one, and he overruled it.** Below the first level the machine\nwould only find and ask. His ruling: it writes, under the same quality control as the other small\ntasks. That moved the work from *whether* to *what checks it*.\n\n**The grounding found that the quality control it was told to copy exists in half.** Ten controls\ncan be named. Four run on live tasks. One exists in trial scripts only. Five wait on a person, and\nno person had yet answered a sitting, written a note, or touched a machine-cut part. So no small\ntask has a measured error rate, and the first thing owed was a page where a person reads.\n\n**The page was built for finding, by the standing principle that a person reads a machine pass\nbefore anyone proves how often it is wrong.** It reads from a file because of what § 5 found\nafterwards: there was nowhere in the graph to read from.\n\n---\n\n## 3. The page, and the calls made without asking\n\n`/step-review/first-reading`, live since 19:35 on 2026-10-10 (build `f44f090`). 59 items under 30\nlinks. Full description: `quality-control-for-deeper-steps.md` § 5.4.\n\nFour choices were Claude's and are unruled (ledger AD20, AG11):\n\n| Choice | Why | What it costs |\n|---|---|---|\n| A link's items come together: the step, then what a machine wrote under its rule | the second level cannot be judged without the first in view | the order is not random, so position effects are not averaged out |\n| A fifth answer: *there is nothing to write: the first claim is no reason for the second* | on the trial's own sorting, five of thirty links were written around; a reader needs a way to say the link is the fault | it invites judging the link, which ledger AD7 says no reading may act on. The answer is recorded and acts on nothing |\n| A ring beside each sentence, to point at the one that is wrong | the corpus's own finding that people who detect an error often cannot say where; pointing is cheaper than writing | one more thing on a phone screen |\n| One item in five is shown without the machine's checks | to see whether a reader who has seen the checks agrees with them more than one who has not | 11 items carry less help |\n\nThe note box is open by default and asks for the first thing wrong. The notes are the product of\nthe sitting; they are read with `scripts/read_review_notes.py --sitting first-reading`.\n\n**What was verified before it went live**, since the test suite stands in for the database: the\nnew table and the real routes were run against a throwaway Postgres 16 on the keeper's machine.\nAfter the deploy the page, its data, the results route, an unknown name and an unsigned answer were\nread over the wire.\n\n---\n\n## 4. The correction he caught\n\n**What was said.** A chat reply, the note's summary and the walkthrough all said five controls run\nfor every small task today, and counted *asked a second way* among them.\n\n**What was true.** The note's own table said that control is built in trial scripts only. The\nsameness check can read a pair in both orders, and the linking step calls it without that. And it\nhad never been ruled: as a rule for every pass it is ledger AD14, open.\n\n**How it came to read as his.** On 7 October a session added a line to the always-loaded\ninstructions, under the leave to add operational notes without a ruling. The line is phrased as an\ninstruction (*before a pass gates anything on a model's yes or no, put the same items to it a\nsecond way*). Three days later it was read as standing practice and listed as running.\n\n**Where it was corrected**: the note's summary and table (his words in the ruled column), the\nREADME row, the index entry and the instruction line itself, the session history, the\nwalkthrough's header (the spoken text is kept as spoken) and the ledger row.\n\n**What it shows beyond itself.** The leave for operational notes was given for mistakes to avoid.\nA note that tells every pass what to do is a position, and it entered the always-loaded file with\nno ruling and no mark of whose it was.\n\n---\n\n## 5. What the graph holds\n\nRead from the live graph on his question. The drawing, the tables and the command that prints the\nnumbers fresh are in `docs/architecture-reference.md` § Graph Database\n(`uv run python scripts/graph_facts.py --shape`).\n\nThree things the reading showed that the notes had not said plainly:\n\n1. **Rules are not claims, and they are not in the graph.** Every sentence a machine wrote under a\n   link in the trials is in the trial files, in the batch the page reads, and in the record of\n   machine judgments. *(True when read. Changed by his ruling later that evening, § 5a.)*\n2. **Nothing can be attached to the arrow itself.** A link is an arrow with fields. A standing\n   question is kept as a node that remembers both claims' ids.\n   ⚠ **Corrected the same evening.** This item first said that workaround is the only precedent\n   the graph has. It is not. The arrow can hold the id of a claim about it: the relevance claim,\n   built on 28 September and never yet made on the live graph. And the linking step's own reason\n   already sits under nine links in ten, as a text field nobody can point at\n   (`claim-or-system.md` § 1).\n3. **Two thirds of all claims are answers nobody has given**: the two possible answers to each\n   standing question. Any picture of the graph that does not hide them shows mostly those.\n\nAlso read: the link for arguing that a part is required has been built since 17 September and has\nnever been written on the live graph.\n\n**His next question, and what came of it**: *\"Ok well it makes sense to store them as claims,\nright? Or what might belong as a claim and what might belong as a feature of the ontology and\nsoftware itself? This is an ever-present question in Deliberus. Let's mine the corpus graph for\neverything that's relevant to this question.\"* The index of the notes was asked, and what it\nreturned is set side by side in `claim-or-system.md`: yes, as claims, kept under the link's\nrelevance claim; what a written-out step holds sorts four ways (a claim, the record, a reading,\nform); and the one piece nobody had ruled was the standing of a claim a machine wrote and nobody\nasserts (ledger AG12, AG13).\n\n### 5a. His ruling, and the build\n\nAsked the one question that note left (a claim the moment it is written, or only once somebody\ntakes it up), he answered:\n\n> *\"The moment it's written. Go ahead and make it happen.\"*\n\nBuilt the same evening (`deliberus/machine_sentences.py`; what it is, what it is not, and the\ncalls made without asking: `claim-or-system.md` § 4a). Three things the build turned up that the\nproposal had not said:\n\n- **Being inert has to be written into the strength code.** The proposal said a machine's sentence\n  weighs nothing. Read against the code, nothing made that so: a part with one reader's vote on it\n  would have counted as an examined part, and a link the machine had only guessed would have gone\n  from no relevance to a half. A clause now leaves a machine's part out until somebody argues it\n  is required, and a test fails if the clause is removed.\n- **A test that could not fail was written first.** The first version gave a claim its standing\n  the ordinary way, which left it a hair above neutral, so the links under test were unexamined\n  before and after and the test passed with the guard taken out. It now grants standing directly\n  and has two controls beside it: a strong first claim does move the second, and the same parts\n  under a person's name do move the link.\n- **Every reader that picks claims out of the graph had to decide.** 257 queries in the code read\n  claims. A scan sorted them: most name the claims they read, or need something a machine's\n  sentence lacks (a text it was taken from, a vote, an embedding). Thirteen modules were changed\n  to leave the kind out, most from one shared list; eight readers read every claim and are listed\n  with the reason. The scan is a test, so the next reader is asked the same question.\n\nWhat it does not do is in the note's own list: no comparing of rules by meaning, no way for a\nperson to take a rule up, no link kind for the second level, and no pass in the pipeline that\nwrites steps.\n\n---\n\n## 6. Lins, measured once\n\nLins is the founder's own explorer for this kind of database. It was built and run once against the\nlive graph, reading only. It connects, lists the graphs and reads the kinds of node and link\ncorrectly. What it returned was not readable: the first thousand nodes in storage order, of whose\nfive thousand fetched links 1,512 join two fetched nodes; every node named *Claim*; 533 embeddings\nsent along; and 63% of the fetched claims being unanswered answers (item 3 above, seen from the\nother side). Four changes, each beside what showed it: `graph-visualization.md` § 11.\n\n**Later the same evening**, on his word (*\"Yes please. Let's make Lins perfect to use for\nDeliberus. Is it possible to launch it after that? How does it work again, is it possible to run\nas a standalone desktop app yet?\"*): the four gaps were closed in Lins as general features, how\nDeliberus is shown was put in this repository (`tools/lins/`), and `uv run python scripts/lins.py`\nopens it. It is a server that carries its own page and opens a browser tab; a desktop shell is on\nLins's roadmap and not started. Then he saw it: *\"This is barely legible and the graph needs to be\nspaced out much more and the clustering needs some work. Research best practices for all this\nextensively online. Lins was inspired by Neo4j's system, right? Take a look at how they visualize\ncomplex graphs and propose updates based on having thought deeply about it? And we should probably\nnot show too much of the graph at any one time, it becomes overwhelming, let's deal with the UX/UI\nof this carefully.\"* Three plain faults were fixed; the design is researched and proposed in Lins's\nown notes, since its founding notes reserve that design for him.\n\n**His answers to the proposal's first question**, the same evening. On whether the texts belong in\nthe picture: *\"Should the sources really be shown in the graph? Maybe it pollutes more than it\nhelps, for now?\"* They are left out of the Deliberus view (`tools/lins/deliberus-view.toml`, with\nhis question beside the line). On claims drawn as cards that hold their headline, against small\ncircles with a name beside them: *\"I'm with you. But why would the Rust renderer be set aside by\nthis? Explain\"*. So cards are agreed, and what draws them is a separate question, still his: the\nproposal had put the two in one decision, and cards do not decide the other. And an empty strip\ndown the right of the window was two faults, both fixed (`graph-visualization.md` § 11).\n\n---\n\n## 7. Found on the way\n\n- **A deploy would have published three notes that open with a folder on the keeper's machine.**\n  Repaired, and a test now reads every served document for one.\n- **A to-do line said a note *becomes public at the next deploy* when it had been public for three\n  days.** Three more lines of the same kind were corrected. A line that says *not yet deployed* is\n  checked against the running build before it is believed.\n- **No test database exists on the production host.** A new table is run once against a real\n  Postgres before the deploy that creates it.\n- **A sentence about how the production pause behaves was written from memory and narrowed after\n  the code was read.**\n\n---\n\n## 8. Open at the end of the day\n\n- **His reading of the page.** Afterwards: the notes are read, the faults grouped, the task\n  rewritten (`TODO.md`, his list, item 3).\n- **Asking a second way** (ledger AD14): unruled.\n- **What draws Lins's cards** (the browser's own drawing, a library, or a renderer in Rust), then\n  the proposal's later questions. Nothing of the redesign is built before his word.\n- **The rest of the storage build** (§ 5a, last paragraph), and ledger AG7's protections and AG13.\n- **The two additions to the page's answers, and its order** (ledger AD20, AG11).\n\n---\n\n## Cross-references\n\n- `alien-proofs-and-the-library.md` · `the-chain-inside-a-link.md` ·\n  `quality-control-for-deeper-steps.md` (§ 4.2, § 5.4) · `claim-or-system.md` ·\n  `what-a-rule-rests-on.md` ·\n  `graph-visualization.md` § 11\n- `docs/architecture-reference.md` § Graph Database\n- `docs/listening/2026-10-10-the-chain-folded-inside-an-arrow.md` (the fifteenth listening piece)\n- Ledger: AD14, AD20, AF1 to AF5, AG1 to AG11 (`session26-open-rulings.md`)\n- `SESSION-HISTORY.md`, the entries dated 2026-10-10\n"}