{"path":"research/session40-two-factors-and-a-day-of-rulings.md","content":"# Session 40: two factors, and a day of rulings\n\n**Date**: 2026-09-28 · **Type**: four rulings taken one at a time, a guardrail made global, a bug\nfound by looking at the screen, the two-factor strength build, and two research passes launched.\n\nThe conversation continued from session 39 (`session39-what-the-graph-stopped-claiming.md`). Its\nthrough-line: **the strength layer stopped standing in for things nobody checked** — a default\nstrength nobody set, a `confirmed` flag nobody confirmed, a supporter's standing the target never\nsaw.\n\n---\n\n## 1. The rulings, in his words\n\nTaken one at a time after he asked: *\"TLDR rn, tired in the morning. Summarize my decisions one by\none in 2 short sentences max. One decision at a time.\"*\n\n- **Ledger Q30, the store-the-blank guardrail.** He asked to generalise the day's repairs: *\"maybe\n  generalize a bit more from that - what's the general guardrail that we can deduce from incidents\n  such as that?\"* Ruled: *\"Great, add it globally.\"* It is now the write-side twin of *Validate\n  completeness at boundaries* in the global instructions: when nothing has checked a recorded fact,\n  store a blank that says so, never a plausible stand-in. Same message: *\"David doesn't care about\n  his name being here, esp. if it's just his first name\"* (ruled, `TODO.md`).\n- **Ledger Q31, a link's strength becomes a reading.** The question: *\"Wouldn't it make more sense\n  to give it a conscious look, to reconsider what the default value SHOULD be, maybe it should be\n  set dynamically or smt? Let's look at this carefully and think deeply about it.\"* Ruled:\n  *\"Yes.\"* (`what-a-link-strength-means.md`).\n- **Ledger Q32, retire the `confirmed` field.** The question: *\"What even is the purpose of the\n  \"confirmed\" field/tag? ... Isn't it a bit fuzzy and therefore risky, just like the whole thing\n  with voting etc? Read up deeply and think deeply about this.\"* Ruled: *\"Yes.\"* It settles Q29 and\n  makes the C8 rename moot (`what-confirmed-means.md`).\n- **Ledger Q3, direction ruled.** *\"It feels rather obvious that the answers should move the link's\n  strength in proportion to how well supported it is. But here we also ... need to consider the\n  *relevance* as well\"*. The tiers and arithmetic stay open.\n- **Ledger Q33, two factors.** *\"About the decision: your proposal is blessed, make it so. Then we\n  can discuss other tangential aspects afterward.\"* In the same message he set the terms for the\n  details: *\"This is concerning to me, since I want to make conscious choices about such crucial\n  design and epistemic-calculus considerations and want to deeply consider everything academia has\n  produced that bears on these decisions generally and specifically about these tidbits. Find out\n  much more about all relevant publications, starting with what's documented in the corpus and if\n  anything relevant to this and the relationship to bayesianism etc has been published and how\n  directly it is relevant (heheh).\"*\n\nAlso from the day: Manu Herrán's post on definitions in conflicts, filed as\n`definitions-as-alignment-tests.md`; the Borderland blobbing draft map stored in its compartment.\n\n## 2. The drop button that never appeared\n\nAsked where the Drop button shows, the panel turned out never to have rendered: from 2026-09-21 the\nclaim page discarded every written split on load (`web/src/lib/split.ts`, commit `10f7df6`). He\nasked: *\"Ok so it was just a bug that it discarded the splits? Are you sure? If you double check and\nare sure it was just a bug, then go ahead and deploy.\"* Checked, deployed, shown in the browser.\nThe lesson recorded in `what-confirmed-means.md`: **zero refusals through the flag measured nothing**,\nbecause nobody could have refused.\n\n## 3. From the relevance sweep to two factors\n\nA full corpus sweep (`relevance-in-the-corpus-sweep.md`, verbatim) found that relevance existed in\ncode only on part-of links, and that for ordinary support and attack links **the supporting claim's\nown strength never reached its target**: each link moved its target by one number computed from its\ncounted question answers. The synthesis (`relevance-and-the-two-factors.md`) mapped the corpus's six\nsenses of *relevance*, named Johnson and Blair's acceptability–relevance–sufficiency triangle as the\nfitting classic frame, and proposed `effect = acceptability × relevance`, relevance on the link,\nproposed by a machine, argued by people, never voted. That is what he blessed.\n\n⚠ One claim in that synthesis was half wrong, found the same evening by the literature review: the\npublished model the strength layer follows (Potyka, KR 2018) does feed each supporter's own\nstrength, but it has no link weights. The product with a weight on the link comes from later\nedge-weighted variants, the closest being Yin, Potyka, Rago, Kampik & Toni (2025), who read that\nweight as relevance (`strength-calculus-literature/computational-argumentation.md` § 0).\n\n## 4. The build, and what it measured\n\nBuilt the same evening, commit `76da237`; tested (1,888 passing) and **not deployed**, because the\ncalculus details are his to choose after the literature review. What was built and every named\nchoice: `relevance-and-the-two-factors.md` § 5.\n\nMeasured on the live graph:\n\n- of 3,627 live scheme-bearing support and attack links, **3,118 are a critical question's own\n  poles**, which are scaffolding; **509** are argument links;\n- a claim's upstream region is tiny (median 1 claim, largest 41) and holds **no two-cycles**, so a\n  one-pass walk is exact in practice, and computing on request is cheap enough that no cache was\n  needed;\n- **1 of 722** claims with an incoming link or part changes. Only 12 of the 509 argument links start\n  from a claim with standing, and none moves its target by more than 0.001.\n\nThe one change is instructive: the justice-and-equality claim from the first dogfood run had a\nconnection question answered on its link, but the value premise the link starts from has no standing,\nso nothing now reaches the claim. **Relevance is only ever relevance of something.** Its badge says so\ninstead of claiming nothing was scored.\n\n## 5. The judge's first trial, and the three things it changed\n\nA dry run of the machine relevance judge over the 12 links that matter today:\n\n1. **The Claude engine's login had expired** (`claude` reports *OAuth session expired and could not\n   be refreshed*), so the run fell through to a Gemini fallback, the family that extracted the links,\n   while its label said Claude. The script now refuses to fall through, and the model client records\n   the model that actually answered (`client.last_served_model`).\n2. **Asked for a number with three anchors, it answered 0.5 on eight of twelve.** The number became a\n   named five-step scale.\n3. **On one link filed as an attack, its own reasoning described support.** Direction is now asked\n   outright, and a reading that runs the other way from the filing is kept as a disputed filing and\n   never used: a candidate misfiling detector the design had not planned.\n\n## 6. Two questions still running\n\n- **The literature review** he asked for, in two halves: computational argumentation, and Bayesian\n  epistemology with informal logic. Reports land in `strength-calculus-literature/`.\n- **The split-review panel**, his question: *\"This UI... I wanna revisit the reasons for this to even\n  be in the UI, or whether we can/should entrust \"the machine\" with splitting claims reliably, or\n  whatever's already been researched and reasoned in the corpus. Look back far and deep into the docs\n  corpus and consider what my stated intentions/reflections have been historically.\"* A research\n  pass gathers his intentions from 2011 on: `split-review-and-the-founders-intentions.md`.\n\n## 7. Considered and rejected\n\n- **The raw form (a supporter adds its full strength, unexamined or not)** — the published default,\n  rejected because three unexamined supporters would manufacture a strong claim out of structure.\n- **A weakened supporter pushing its target the other way** — what probability theory says when a\n  link's conditional probabilities are known; off by default because it pays a straw man (attach a\n  weak \"supporter\" to a claim you oppose, refute it). His to rule on. *(Ruled 2026-09-30, for now: stays off;\n  `relevance-and-the-two-factors.md` § 7.)*\n- **A precomputed whole-graph snapshot with a cache** — rejected once measured: regions are small,\n  and a cache would need invalidation on every write.\n- **Reusing the part-dependence score as bearing** — rejected: it would discount a corroborating\n  study for having siblings.\n- **Sorting the critical questions with a model** — done by hand instead (122 templates): a sort\n  that decides how answers act should be reviewable as one table.\n\n## 8. Open loops, each with its home\n\n- His calculus choices, the deploy, the judge run as a second family after a `claude` login refresh,\n  a screen for arguing relevance, and where standing originates: `TODO.md` § Relevance.\n- The split-review panel: `TODO.md` § The split-review panel.\n- Retiring `confirmed` and making link strength a reading: `TODO.md` §§ for Q31 and Q32.\n\n## Cross-references\n\n`relevance-and-the-two-factors.md` (ruling, build, open consequences) · `relevance-in-the-corpus-sweep.md`\n· `what-a-link-strength-means.md` · `what-confirmed-means.md` · `definitions-as-alignment-tests.md` ·\n`session26-open-rulings.md` rows Q3, Q29–Q33 · `deliberus/relevance.py` · `deliberus/relevance_judge.py`\n· `scripts/propose_link_relevance.py` · `tests/test_two_factor_strength.py` · `session39-what-the-graph-stopped-claiming.md`.\n"}