{"path":"research/the-squirrel-and-the-strength-calculus/strength-rulings-and-code-as-read-2026-10-08.md","content":"# Strength-layer rulings and code: what the files say (research report)\n\n> **What this file is.** The report of one read-only helper (a smaller model) asked on 2026-10-08\n> to read the strength notes and the strength code in full, for\n> [the-squirrel-and-the-strength-calculus.md](../the-squirrel-and-the-strength-calculus.md). Kept\n> as the helper wrote it, with one local file path removed. Claude checked what that note relies\n> on (the rulings quoted there, the header of `relevance.py`, the strength functions, the August\n> and September passages cited) and did not check the rest. Two of its observations are listed in\n> the note's § 7 as unverified.\n\nRepository: the Deliberus repository. Read-only research, 2026-10-08. Nothing in the repository was edited.\nThis report gives no opinion on the new question (written-out rule/fact steps: all-necessary parts of one reason, or separate additive supports). It reports what the files say.\n\n## 0. What was read, and how\n\nPath note: the file `deliberus/qbaf.py` does not exist. The strength module is `deliberus/graph/qbaf.py`. All line numbers below refer to current files at HEAD 662dde7.\n\nREAD IN FULL (Read tool, start to end):\n- docs/research/weakest-link-arithmetic-and-the-merge-hunch.md (704 lines)\n- docs/research/what-the-necessary-default-changes.md (188)\n- docs/research/relevance-and-the-two-factors.md (403)\n- docs/research/what-a-link-strength-means.md (169)\n- docs/research/strength-layer-audit.md (181)\n- docs/research/starting-values-and-the-problem-of-the-prior.md (1029)\n- docs/research/what-counts-as-evidence.md (934, all of it, not only the weighing parts)\n- docs/research/retrieval-instruments-beyond-cosine.md (124)\n- docs/research/synthetic-stress-suite-and-ontology-reflection.md (80)\n- Code: deliberus/graph/qbaf.py (482), deliberus/relevance.py (123), deliberus/support_semantics.py (359), deliberus/graph/badge_inputs.py (427), deliberus/evidential_weight.py, deliberus/evidence_routing.py, deliberus/relevance_judge.py (196), deliberus/hinge.py (272), deliberus/decomposition_judgement.py (259).\n- Tests, in full: tests/test_two_factor_strength.py, tests/test_requirement_cap.py, tests/test_support_semantics.py.\n\nREAD IN PART:\n- deliberus/api.py: get_claim_badge (2218-2240), map tags (2380-2415), argue_part_requirement (2787-2876), argue_link_relevance (2879-2967). Not the other 5,000 lines.\n- deliberus/extraction/schemes.py: lines 186-214, 280-310, 430-470, 562-670 (meta critical questions, sign and abductive schemes, CQ_BEARS_ON).\n- deliberus/parts_review.py 1-70, deliberus/proposed_split.py 70-100 and 340-380.\n- docs/research/session26-open-rulings.md (the ledger; 766 lines, 212 KB, rows are very long). Found rows with ripgrep, then read each matching row whole: B2, B3, B7, B9, B10, D9, N9, O4, O9-O13, P2-P10, P16, Q1-Q36, R1-R7, S2, T1-T7, U1-U2, W1-W6, Y7-Y14, AC1-AC4, AD1-AD29. I did NOT read the other arcs line by line.\n- Chased citations outside the listed files (read in part, flagged where used): TODO.md (lines 925-950, 1600, 1636-1675, 1776-1936), docs/research/support-semantics-and-the-conjunction-problem.md (full), linked-convergent-and-what-we-are-actually-asking.md (full), a-cut-through-a-concept-is-an-argument.md § 5, strength-calculus-literature/bayesian-and-informal-logic.md (lines 1-335 and 341-525), philosophy-of-the-unwritten-step.md (1-150, 198-360), writing-out-the-unwritten.md (78-117), how-far-a-premise-is-from-its-claim.md (196-232), session29-the-derivability-arc... (1-70).\n\nONLY SEARCHED (rg), not read: strength-calculus-literature/computational-argumentation.md, the-load-bearing-unsaid.md, what-a-link-rests-on.md, evidence-division-and-the-foundation.md, relevance-in-the-corpus-sweep.md, the live graph (no queries were run; \"on the live graph\" statements below are the docs' own, with dates).\n\nOne computation note: the worked numbers in section B.7 are mine, produced by re-implementing the formulas in a standalone python snippet (nothing imported from or written to the repo). They are marked \"derived\". Every other number is from a file.\n\n---\n\n## A. RULINGS\n\nConvention: \"RULED\" = the founder settled it, in the ledger's or the doc's own wording. Where a ruling is \"for now\", \"provisional\", or only a direction, it is said so. Quotes are copied exactly (spelling and punctuation as in the file). Where the files record a founder's words only by paraphrase, I say so.\n\n### A1. 2026-08-31, the padding ruling (\"option C, both\")\n- Founder's words: *\"Go with option C, both.\"*\n- Recorded: session26-open-rulings.md rows B9 and B10 (\"RULED 2026-08-31 with B10\" / \"RULED 2026-08-31, option C - both\"); TODO.md § \"RULED 2026-08-31 - padding defense, option C (both)\" (line 1780); what-the-necessary-default-changes.md header (written without final period: *\"Go with option C, both\"*); weakest-link-arithmetic-and-the-merge-hunch.md header; strength-layer-audit.md \"Update 2026-08-31\" box; qbaf.py `subclaim_energy` docstring (\"founder-ruled 2026-08-31, option C of the padding-defense decision\"); support_semantics.py module docstring (\"History of the default\").\n- What it decided: (1) the default flip: untagged (or `undecided`) DECOMPOSES_INTO children aggregate as `necessary`, the weakest part governs, instead of adding; implemented as `subclaim_energy(...)` passing `undecided_as=\"necessary\"`; \"3 vs 12 untagged children now score identically\", 80 parents / 132 untagged edges affected on the day. (2) A backfill pass, propose-only, with a three-way output per edge: `necessary` / `corroborative` / miscast-as-decomposition (the child is really an evidence item that should be SUPPORTS). The reasoning recorded for the default (qbaf.py:272-281): \"Under the separability floor, parts of a decomposed whole are constitutive unless tagged otherwise.\"\n- What the files do NOT record: what options A and B were. Only \"option C - both\" is in the files I read.\n- Status: ruled; blessed provisionally (A3).\n\n### A2. 2026-08-31, the separability floor (context for \"parts are constitutive\")\n- Founder's words (ledger B2 and B3): *\"Both blessed.\"* B2: \"The floor is separability - decompose until nothing separable is still bundled\". B3: \"Molecular-not-atomic is about decontextuality, a different axis\".\n- Recorded: ledger B2, B3 (RULED 2026-08-31). The padding ruling leans on it: what-the-necessary-default-changes.md § 2 and § 6 (\"Under that floor, a genuine part is required by construction\").\n\n### A3. 2026-08-31, the two \"felt consequences\" of the flip, blessed provisionally\n- Founder's words (verbatim, what-the-necessary-default-changes.md § 5; also TODO.md stack item 1, line 1801): *\"The crux-pointer concentrating I guess sounded rational. The pebble protection requiring a tag seems to me too nitty-gritty complex for my brain rn and unclear what the ACTUAL consequences are, but lemme just bless it for now and we can always come back to revisit it in the future, doesn't feel super-central right now, we have bigger fish to fry, right?\"*\n- What it decided: both consequences stand: (a) pebble protection (a small well-supported claim among unevidenced siblings is not dragged down) moved from automatic to claimed (tag parts `corroborative` to get it back); (b) the hinge/crux pointer concentrates on the weakest required part. The doc calls it \"Ruled 2026-08-31, provisionally ... the blessing is explicitly provisional, the revisit flag is registered in TODO's decision stack\". The TODO calls it \"a provisional blessing, not a deeply-examined ratification; the new-edges-only escape hatch remains available\".\n- Note: ledger row B10 still prints \"Awaiting founder confirm on both consequences\" (see F1).\n\n### A4. 2026-08-31, NOT rulings but on the record: the merge hunch, and the novelty dial\n- Commission for the research pass, verbatim (weakest-link header): *\"If any central decision we've made or are making here depends on something that can be questioned, research it extensively and deeply online.\"*\n- The merge hunch, verbatim (weakest-link § 5): *\"I have a hunch that part of the protection against splitting subclaims thin could be based on steadily improving the auto-merge of claims, such that we'd always see through the trivial attempts to split into unwarranted subclaims? Investigate this. Maybe it's not enough, maybe it is.\"* The doc's verdict (§ 5d): not needed where the flip landed; \"right, and genuinely needed, where addition survives\" (the corroborative channel); \"insufficient alone\".\n- The corroborative-channel dial: TODO.md stack item 2, design half, line 1917: \"ENDORSED build-soon (founder 2026-08-31: \"Understood about the novelty dial, sounds good. We should build that soon\")\". Built? No (see B.8). The weakest-link doc § 9b itself calls the dial \"proposed, unruled\" (see F5).\n- Founder questions that shaped it: *\"how hard can it be to never count any subgraph twice?\"* and *\"couldn't we do CORE and improved claim-auto-merge?\"* (TODO.md line 1926-1928; paraphrase-quoted there).\n\n### A5. 2026-08-31 / 2026-09-02, NOT a ruling: the up-transmission whisper and the saboteur's door\n- On the whisper (session29 doc Part I § 1, quoted): *\"This confuses me. I always thought the system somehow inherently had 'dealt with' this. That the badge/evidence score of a mother claim was maybe somehow implicitly assuming that all parts had been brought to bear. But we probably do need to 'check' this, however that's done best. Don't we need humans for this? Isn't this the reserved-for-humans responsibility of ensuring we're not in any frame lock-in? Or do you imagine us not even needing humans for that?\"*\n- On the deflation mirror (weakest-link § 9d, 2026-09-02): *\"the irreplaceable human value and action also still definitely makes them able to game and manipulate the system, right? Unless the similarity sensitivity and auto merge can somehow defeat any human saboteurs.\"*\n- Status of the whisper: UNRULED (TODO.md stack item 3 \"awaiting one word\"; line 1644 \"Founder calls still waiting\").\n\n### A6. 2026-09-17, the argued-requirement cap (\"the designed completion\")\n- Founder's words: first, on whether the weakest-part cap should apply to untagged parts at once: *\"Apply it if it wasnt left half-applied for some strong reason that we don't recall?\"* (TODO.md line 1836: NOT applied that day, because the tagged-only cap was the accidental guard that kept the deflation door shut; the reason is recorded). Then: *\"Build the designed completion.\"*\n- Recorded: weakest-link § 9d (\"BUILT 2026-09-17\"); TODO.md stack item 6 (lines 1826-1862); support_semantics.py comment at line 114-121; tests/test_requirement_cap.py docstring; the \"Precision added 2026-09-17\" paragraph in what-the-necessary-default-changes.md § 0.\n- What it decided: a part caps its whole \"in proportion to how well it is established that the whole REQUIRES it - never by mere existence\". Presumed weight 0.5 for a confirmed/person/extraction/split part; 0 for an unconfirmed machine proposal; 1.0 for an explicit `necessary` tag; anyone may argue the requirement as an ordinary claim (\"W requires X: ...\", edge type ARGUES_REQUIREMENT), whose own strength then sets the weight. Exact code in B.2.\n- Status: ruled and built, live (deployed 2026-09-19). \"The presumed weights are de-baked constants (0.5 / 0.25 / 0) awaiting a ruling\" (TODO.md 1850-1851; \"Founder calls still waiting: the presumed requirement weights (0.5 / 0.25 / 0)\", line 1644).\n\n### A7. 2026-09-19, reception of the cap: accepted for now, attack-proofness open (ledger O13)\n- Founder's words (verbatim, weakest-link § 9e): *\"Well, ideally the RELEVANCE (which I guess all this is about) is judged provisionally by the machine/LLM-passes or whatever and then humans can challenge it but I'm wary of saboteurs/spammers adding bogus parts that aren't actually relevant. I'm open to making the relevance claims explicit like you say, but I wonder how foolproof / attack-proof this way of dealing with this issue is, we'll have to explore that going forward I guess. But we will make do with what we've settled now on this issue.\"*\n- What it decided: the cap stays as built (\"we will make do with what we've settled now\"). His direction (not a ruling): the machine judges relevance first, provisionally; people challenge. Attack-proofness is \"an open exploration\".\n- Ledger O13 status: \"OPEN - his direction, my design step; attack-proofness itself stays an open exploration\". The exposure, computed from the shipped function (§ 9e table): a person-added bogus part left alone caps the whole at 0.75, at 0.55 once argued down to 0.1, at 0.50 once refuted; \"That is not attack-proof. It needs a defender to show up.\"\n\n### A8. 2026-09-21, a split part caps like a person's part\n- Founder's words (support_semantics.py:199-203, in the docstring of `presumed_requirement_weight`): asked whether a machine-written part should cap like a person-kept one: *\"Yes it should. We should expect good splits.\"* Also tests/test_support_semantics.py `TestASplitPartCapsLikeAPersonsPart` docstring.\n- Decided: provenance `split` joins {extraction, human} as presumed constitutive (weight 0.5). A coverage verdict of `invented` or `unasserted` overrides every provenance to weight 0.\n\n### A9. 2026-09-28, links: Q3 (direction), Q31, Q33 (the two-factor rule)\n- Q33, founder: *\"About the decision: your proposal is blessed, make it so.\"* (ledger Q33, \"RULED 2026-09-28\"; relevance-and-the-two-factors.md header; qbaf.py docstring line 22-23; relevance.py docstring line 3-4; relevance_judge.py docstring). In the same message he asked that the calculus details be chosen consciously: *\"I want to make conscious choices about such crucial design and epistemic-calculus considerations and want to deeply consider everything academia has produced that bears on these decisions generally and specifically about these tidbits.\"* (Q33 row). The review that followed is `strength-calculus-literature/`.\n- What the blessed proposal said (these are Claude's words in the doc, blessed as a whole): \"a link's effect is the supporter's own strength times the link's relevance, with relevance living on the link, proposed by a machine, argued by people, and never voted\" (relevance-and-the-two-factors.md § 0 item 5). Q33 row: \"relevance is a weight on the link (a gate and a magnitude), proposed by a machine of a second model family with an abstention, argued by people through the link's connection questions, never voted; critical questions sort into the two factors.\"\n- Go-live word (relevance doc § 5): the build \"went out before the calculus choices below, on the founder's word (*\"we don't have to hold off on this epistemic calculus change in particular\"*); the defaults stay as built until he rules on each.\" Built 2026-09-28, \"live since 2026-09-30\".\n- Q3 (weigh answers, never count them), \"RULED in direction 2026-09-28\", founder: *\"It feels rather obvious that the answers should move the link's strength in proportion to how well supported it is. But here we also ... need to consider the *relevance* as well\"*. The ledger says \"The tiers and the arithmetic stay open; the relevance half is Q33. OPEN - decision; changes shipped strength semantics\".\n- Q31 (a link's strength is a reading, never a stored value), founder: *\"Yes.\"* (what-a-link-strength-means.md header; ledger Q31 \"RULED 2026-09-28\"). Build pending, not built (no `classifier_confidence` anywhere in the code).\n- Choices inside Q33 that the files say are STILL OPEN (relevance.py docstring lines 30-35; relevance doc § 5 table): how the two factors combine (\"product, as built, or weakest link\"), what an unexamined link presumes, a fixed point versus the one pass. See F-section tension on \"times\".\n\n### A10. 2026-09-29, explicitly NOT a ruling: refuted reasons\n- Founder, verbatim (relevance doc § 6): *\"Keep it, with the two repairs. Seems more intuitive/truthful to me. No... actually I'm not sure. Because if the implication is that there's SOME truth value to a claim if it's in the middle then that'd be misguiding if there's no good and relevant reasons whatsoever for believing it's true. But ofc all of this depends on whether it's been examined deeply and exhaustively and it all depends on how you see/judge *relevance*. Right? Btw I'm curious what is an 'objection' vs an attack link/claim, and what are these in relation/comparison to a 'refuted reason'? Can they simply be negations of each other? How do we handle this potential mirroring?\"* The doc labels it \"explicitly not a ruling\".\n\n### A11. 2026-09-30, a refuted supporter adds nothing (ledger Q34), \"for now\"\n- Founder, verbatim: *\"but we'll go with your recommendations on this for now, and then we can always poke holes in that later if we feel like it.\"* (ledger Q34 \"RULED 2026-09-30, for now\"; relevance doc § 7; relevance.py:93-95.)\n- Decided: `WEAK_SUPPORTER_SUBTRACTS = False`. \"A reason that fails drops out; failure counts against a claim only through a contribution that says why\": (1) an objection (a finding against the claim); (2) a need, argued as a requirement claim that caps the claim (\"built for parts; extended to reasons with a presumed weight of 0\" - NOT built for reasons); (3) a thorough search that found nothing (argument from ignorance). With it: a refuted reason should count as examined, and a third display state \"nothing stands (N checked)\". \"State: ruled; all four pieces unbuilt (TODO.md § Relevance).\"\n- Consequence recorded: \"relevance means the gain: how much a reason adds if it holds, against having no such reason.\"\n- Rejected at the time (ledger Q34): subtracting for every failed reason from 50/50; subtracting only for the source's own reasons; a separately judged loss weight per link.\n\n### A12. 2026-09-30 to 2026-10-04, OPEN: Q35 (honest starting values) and Q36\n- Q35 (OPEN; \"rec: adopt as the path, through Q4\"), founder's words on the record (relevance doc § 7; ledger Q35): *\"But... every claim in Deliberus will ultimately have a subgraph which is equivalent to the already-guess in the probability/Bayes perspective - no? This has always been my intuition for Deliberus...\"*; *\"Yes, but remember that 'one finding can be written twice'\"*; *\"So Deliberus 'middle' is neutral ground? What does 'neutral ground' translate to in Bayesian/probability terms?\"*; *\"I'm thinking that if I imagine myself one year hence, one year down the line, I'm sitting in front of my computer and using Deliberus through whatever UI or agentic interface. It will already have best guesses for all the claims in the graph database. And those best guesses are based on the subgraph and the evidence and the reasoning underneath and the flow of truth energy or whatever we call it. Right?\"* Then: *\"Well... hmm, just thinking out loud here... but the honest prior for each claim should be the estimated truth/evidence value, which is calculated in Deliberus, no? It depends on its whole subgraph, and then that truth-guess in its turn is used to argue for other claims, and so the truth-value-calculations/estimations are bubbling up at every turn, no? Isn't this how the graph epistemic calculus was MEANT to work? Am I getting something wrong?\"*\n- Q36 (OPEN, \"rec: yes in principle, after honest starts, extracted reasons first\"): whether a conclusion's own source's \"because\" counts as the contribution that says why.\n- starting-values-and-the-problem-of-the-prior.md header: \"State: findings and recommendations, nothing ruled.\"\n\n### A13. 2026-10-04, P7 \"does Deliberus ever output a probability?\" (OPEN), his lean as a question\n- *\"'computes a number' is very vague and overly modest, innit? can the page say what it is? It's a truth estimate, right, this is epistemic calculus we're talking about? No?\"* (ledger P7; starting-values doc § 11). Status OPEN.\n\n### A14. 2026-10-07, the neighbourhood of the new question: all OPEN, none ruled\nFounder's words recorded in the ledger / docs (Arc AD, \"Every row below is Claude's and none is ruled\"):\n- *\"Are we stringent about how far-removed a premise is from the claim itself? Perhaps it's actually depending on a chain of inferences that's made up of more complex reasoning and a few different premises etc? Idk\"* (Arc AD heading).\n- *\"This needs to be handled/explicated/scaffolded by some pass. Maybe a new pass that's more like a 'standing property of the graph' in some ingenious way. Think deeply about what's robust and wise here.\"*\n- *\"I think merely naming what the links consist of would be weak sauce. I want to have all the implicit reasoning structure and premises be explicated and exposed and scaffolded automagically. To the extent that process can be trusted of course. This depends if we can split it up into microtasks that we can rely on deeply.\"* (ledger AD6: \"NOT ENOUGH, his word 2026-10-07\".)\n- *\"What does philosophy both analytical and otherwise have to bear on the links/premises questions? Think deeply about this from many different angles.\"*\n- AD13 to AD29 (written-out steps; AD22 \"the toll bridge\": the rule, the facts and the joined names are drawn as the grounds of the link's relevance claim, \"and not as further arrows into the conclusion\") are all \"OPEN - rec: adopt\" or \"his alone\"; TODO.md line 936: \"His rulings on AD22 to AD29. The two that touch the ontology are his alone\". Nothing built.\n- His own 2011 and 2013 words about the squirrel and about relevance, as recorded in writing-out-the-unwritten.md (outside the listed files) are quoted in section E.\n\n### A15. Earlier context the docs lean on (not about this question, but cited as authority)\n- \"votes are telemetry since 2026-08-31\" (relevance doc § 1): relevance \"cannot be voted; it must be argued\".\n- Founder's position P2/P3 (OPEN): see starting-values doc § 1.\n\n---\n\n## B. THE CODE TODAY\n\nEntry point: `GET /claims/{id}/badge` (deliberus/api.py:2218-2240) -> `badge_inputs.compute_badge_recursive` (badge_inputs.py:300-364) -> `badge_inputs.gather_badge_inputs` (39-249, Cypher), `attach_flow_inputs` (367-404), `edges_for_badge` (407-427) -> `qbaf.compute_claim_badge` (qbaf.py:292-482). Hinge and question ordering call the same functions (hinge.py:212-272 `hinge_analysis` clamps a claim inside `compute_badge_recursive`).\n\n### B.0 The whole computation in one paragraph\nFor a claim C:\n- energy(C) = sum over incoming SUPPORTS links of contribution_i  minus  sum over incoming ATTACKS links of contribution_j  plus  sub_energy (from C's DECOMPOSES_INTO children). (qbaf.py:343-380)\n- strength(C) = qem_strength(0.5, energy), then min(strength, ceiling) when a part-cap exists. (qbaf.py:416-420)\n- qem_strength(b, E) = b + (1-b)*h(E) for E>0; b - b*h(-E) for E<0; b for E=0; with h(x) = x^2/(1+x^2). (qbaf.py:105-132). The base weight b is 0.5 for every claim (all callers use the default `NEUTRAL_POINT`).\n- A claim with no input that differs from 0.5 is \"UNEXAMINED\" and carries NO number (strength None). (evidential_weight.py:85-116; qbaf.py:387-414.) With no links and no children at all it is \"NO DATA\".\n- Everything is ONE PASS, recursive, memoized, depth bound MAX_BADGE_DEPTH = 8 (badge_inputs.py:278); a claim already on the current path is read as having no standing (cycle cut, not iterated; badge_inputs.py:367-404, docstring).\n\n### B.1 How the CHILDREN (DECOMPOSES_INTO parts) of a claim feed its strength\nTwo separate effects: an ENERGY term and a CAP.\n\nWhich children: all non-superseded DECOMPOSES_INTO edges (badge_inputs.py:87-104). No `confirmed` filter on the part edge itself (the refusal filter `REFUSED_EXCLUDED` is applied to the SUPPORTS/ATTACKS neighbours of the child, not to the part edge). Each child enters at its own computed badge strength when that badge is examined (strength not None and weight>0), otherwise at a count-based prior: qem_strength(0.5, (supports - attacks)*0.3 + (agrees - disagrees)*0.15) (badge_inputs.py:35-36, 113-116, 343-353). Two unscored supports on a child lift it to 0.632 (derived; the relevance doc § 6 states 0.632).\n\nENERGY: `subclaim_energy` (qbaf.py:259-289) calls `interpreted_energy(parts, base, undecided_as=\"necessary\")` (support_semantics.py:301-339). Each child's `support_interpretation` (the edge property `d.support_interpretation`, badge_inputs.py:102) is normalised (`normalise`, 72-80) to necessary / corroborative / alternative / undecided. Undecided (absent, empty, or any unrecognised string) joins the NECESSARY group because `subclaim_energy` passes `undecided_as=\"necessary\"`. Then the three groups are aggregated separately and the results SUMMED:\n- necessary group (tagged necessary AND untagged together, one shared minimum): `necessary_energy = (min(strengths) - 0.5) * 0.3` (support_semantics.py:83-96)\n- alternative group: `alternative_energy = (max(strengths) - 0.5) * 0.3` (99-109)\n- corroborative group: `corroborative_energy = sum((s - 0.5) * 0.3 for s in strengths)` (289-298)\n- Constant: `CORROBORATIVE_WEIGHT = 0.3` (support_semantics.py:65), used for ALL THREE groups despite its name.\n- `interpreted_energy` with its default (`undecided_as=\"corroborative\"`) keeps the historical additive default for any caller other than `subclaim_energy` (test_support_semantics.py: \"non-decomposition consumers keep the historical additive default\").\n- The energy channel does NOT consult requirement weights: a part that has weight 0 for the cap (an unconfirmed machine proposal) still joins the minimum for energy. (Read from code: `interpreted_energy` takes only (strength, interpretation); I found no doc stating this.)\n\nCAP: `necessary_ceiling(zip(strengths, interps, reqs))` (support_semantics.py:258-286) gives, per part with weight w>0, cap_part = strength if w >= 1.0 else 1 - w*(1 - strength); the ceiling is the minimum cap over parts; None if no part has w>0. Applied as `strength = min(strength, ceiling)` (qbaf.py:416-420). With w=1 the part caps the whole at the part's own strength; w=0.5 gives 1 - 0.5*(1 - s) (strength 0.5 -> 0.75; 0.1 -> 0.55; 0.0 -> 0.5; 0.074 -> 0.537; all confirmed by tests and by the weakest-link doc § 9e table).\n\nPer-part weight w (the \"requirement weight\") = `requirement_weight(interpretation, presumed, argued)` (support_semantics.py:233-255), computed in `edge_requirement_weight` (badge_inputs.py:252-273):\n- explicit tag `necessary` -> 1.0 (`REQUIREMENT_WEIGHT_TAGGED`), whatever the requirement claim says;\n- explicit tag `corroborative` or `alternative` -> 0.0 (no cap);\n- otherwise, if a requirement claim exists and is examined: argued < 0.5 -> 0.0 (rebutted; closes the cap even below the presumption); argued >= 0.5 -> max(presumed, (argued - 0.5)/0.5) (so arguing can only RAISE the weight; at argued 0.9 -> 0.8; at 1.0 -> 1.0);\n- otherwise the presumed weight (below).\n\nPresumed weight (`presumed_requirement_weight`, support_semantics.py:193-230), in order:\n1. coverage verdict `invented` or `unasserted` -> 0.0 (`UNFAITHFUL_COVERAGE`, 151-158);\n2. `confirmed is False` -> 0.0;\n3. provenance named and not in `PRESUMED_PROVENANCES = {\"extraction\", \"human\", \"split\"}` (line 144) and `confirmed` is not True -> 0.0 (`REQUIREMENT_WEIGHT_PROPOSAL`);\n4. otherwise 0.5 (`REQUIREMENT_WEIGHT_PRESUMED_PART`). A MISSING provenance keeps the presumption (0.5), deliberately; the docstring says zero live edges lack one.\n5. An optional machine \"dependence\" reading could scale the 0.5 (base * relevance) only if env `DELIBERUS_RELEVANCE_PRESUMPTION=1` AND a caller passes `relevance=`; default OFF and no caller passes it (badge_inputs.py:124-125, api.py:2823/2862 do not). The relevance doc § 1 calls it \"wired to nothing\"; confirmed.\n6. `REQUIREMENT_WEIGHT_STANDARD_QUESTION = 0.25` is defined (line 124) and described as \"latent scaffolding, unbuilt\"; nothing uses it.\n\nNet for an UNTAGGED part, today: energy as a member of the min group; cap with weight 0.5 (confirmed or person/extraction/split part), 0 (unconfirmed machine proposal, or invented/unasserted coverage), or the argued weight if a requirement claim has been examined.\n\n### B.2 The argued-requirement cap, what is presumed, and how a requirement claim changes it\n- Minting: `POST /claims/{claim_id}/parts/{part_id}/requirement` (api.py:2791-2876). Text template: `\"{parent_short}\" requires \"{part_short}\": {reasoning}`; claim_type \"normative\", epistemic_status \"normative_assertion\", argument_label \"requirement\"; edge `(r)-[:ARGUES_REQUIREMENT]->(k)` with `parent_id`; pointer `d.requirement_claim` on the DECOMPOSES_INTO edge. One requirement claim per part; a second request returns the existing one (\"support or attack that claim rather than minting another\").\n- The requirement claim is excluded from the part's own incoming links: `'ARGUES_REQUIREMENT'` is in the NOT IN list at badge_inputs.py:62 (test_requirement_cap.py:147-151 pins it). Its strength comes from the ordinary computation on that claim.\n- Used only when examined: `badge.get(\"strength\") is not None and badge.get(\"weight\", 0) > 0` (badge_inputs.py:271).\n- Numbers: confirmed/person/extraction/split part presumed 0.5; unconfirmed proposal 0; tagged necessary 1.0; argued: see B.1. A requirement claim exactly at 0.5 leaves the presumption in place; 0.6 gives max(0.5, 0.2) = 0.5; 0.9 gives 0.8.\n- Requirement claims exist ONLY for DECOMPOSES_INTO parts. No requirement-claim facility exists for SUPPORTS/ATTACKS links (\"reasons\"), although the ruling text of Q34 speaks of extending it with presumed weight 0 (unbuilt).\n\n### B.3 How ONE SUPPORTS or ATTACKS link contributes\nWhich edges: `gather_badge_inputs` (badge_inputs.py:49-85) takes `(s)-[r]->(c)` where `r.scheme` is non-empty, `type(r)` is NOT in ['REPORTS','CLASSIFIES_TERMINUS','ARGUES_REQUIREMENT','SIMILAR_TO','ARGUES_RELEVANCE'], not superseded, not refused (`confirmed` null or true), `s.invalid_at` null, and `s.argument_label <> 'validity_verdict'`. Polarity: SUPPORTS -> \"supports\", ATTACKS -> \"attacks\", anything else \"neutral\" (qbaf.py:95-102; QUALIFIES, REFRAMES, DEFINES carry no polarity into strength, qbaf.py:45-52). A link is on the ARGUMENT channel when polarity is supports/attacks and the source claim_kind is not cq_positive/cq_negative (badge_inputs.py:227-228); otherwise it stays on the QUESTION (counted) channel.\n\nArgument link formula (`argument_edge_contribution`, qbaf.py:180-225; `link_contribution`, relevance.py:108-119):\n  contribution = relevance * (acceptability - 0.5), only when acceptability is not None and acceptability >= 0.5; else 0\n  plus a rebuttal term = qem_strength(0.5, e_rebuttal) - 0.5 (0 when no rebuttal answer)\n  signed by polarity in compute_claim_badge: `energy += contribution` for supports, `energy -= contribution` for attacks (qbaf.py:360-364).\nSo yes: the supporter's strength is taken as an OFFSET from 0.5 (relevance.py:116 `offset = acceptability - NEUTRAL_POINT`).\n\n- acceptability = the supporter's own computed badge strength (the FULL recursive badge of the supporting claim, not only its direct evidence), only if that badge is examined (`attach_flow_inputs`, badge_inputs.py:393-398: strength not None and weight>0), else None. If the link has answered PREMISE critical questions: acceptability = qem_strength(supporter_strength or 0.5, e_premise) where e_premise = sum(pos - neg) over premise-bearing answered questions (qbaf.py:209-213). So a premise answer can give an unexamined supporter standing (test_two_factor_strength.py:99-103).\n- Unexamined supporter, no premise answers: acceptability None -> contribution exactly 0 (\"a link from a claim with no standing moves nothing, however relevant it is\", relevance.py:110-111). The claim is then UNEXAMINED if nothing else moves (test line 36-39).\n- Supporter below 0.5 (refuted/weak): offset < 0 and `WEAK_SUPPORTER_SUBTRACTS = False` (relevance.py:105) -> returns 0.0. A refuted supporter adds nothing; a refuted attacker removes nothing. (tests lines 63-67.) The link's own edge strength then reads exactly 0.5 and counts as \"not examined\" in `count_evidential_inputs` (evidential_weight.py:102-103), which is the repair Q34 says is owed and unbuilt.\n- Supporter exactly 0.5: offset 0, contribution 0.\n\nWhere the link's RELEVANCE comes from today (`read_relevance`, relevance.py:75-89), in order of authority:\n 1. ARGUED: the link's relevance claim. `r.relevance_claim` is an edge property pointing at a claim minted by `POST /claims/{claim_id}/links/{source_id}/relevance` (api.py:2883-2967; text `\"{source_short}\" bears on \"{target_short}\": {reasoning}`, claim_type blank on purpose, epistemic_status \"unstated\", argument_label \"relevance\"; edge `(r)-[:ARGUES_RELEVANCE]->(target)` with `source_id`; one per link). Its computed badge strength, if examined (strength not None and weight>0), IS the relevance, clamped to [0,1]: `edge[\"argued_relevance\"] = float(badge[\"strength\"])` (badge_inputs.py:399-404) -> `RelevanceReading(_clamp(argued), \"argued\")` (relevance.py:84-85). Identity mapping, no further transform.\n 2. PROPOSED: `r.relevance_proposal` with `r.relevance_confident` true and no `relevance_direction_conflict`, written by `relevance_judge.write_reading` (relevance_judge.py:171-196; run via scripts/propose_link_relevance.py, dry-run by default, `--write` waits on the founder). Scale (relevance_judge.py:59-61): settles 1.0, strong 0.75, moderate 0.5, weak 0.25, marginal 0.1; gate \"does it bear at all\" = no -> 0.0. An unconfident reading is stored but ignored; a reading that runs the other way from the filed polarity is kept as a \"disputed filing\" and ignored (badge_inputs.py:163-167, 237).\n 3. PRESUMED by who wrote the link (`presumed_relevance`, relevance.py:64-72): provenance missing or in {extraction, human, split} -> `PRESUMED_RELEVANCE = 0.5`; any other named provenance (for example `auto_connect`) -> `UNPRESUMED_RELEVANCE = 0.0`. (test_two_factor_strength.py:86-90, 214.)\n Then the link's CONNECTION answers move it: `relevance = qem_strength(reading.value, e_connection)` if any connection answer exists (qbaf.py:207). Rebuttal answers do not act through the link; they add `qem_strength(0.5, e_rebuttal) - 0.5` to the contribution (qbaf.py:216).\n Per the docs (relevance doc § 5, and the 2026-10-07 cross-reference in § \"Cross-references\"), no relevance claim and no machine reading is stored for any live link (I did not query the graph), so today every live argument link runs on the presumption 0.5 (or 0.0 for auto_connect-provenance links).\n\nHow a relevance claim's OWN grounds combine: there is no special rule. The relevance claim is an ordinary Claim; `compute_badge_recursive` runs the same `compute_claim_badge` on it. Its incoming SUPPORTS/ATTACKS links are summed (each with its own relevance x offset, B.3) and its DECOMPOSES_INTO children, if any, combine by the parts rule (B.1: untagged = weakest-part-governs energy plus cap). So grounds written as separate SUPPORTS links ADD; grounds written as parts of the relevance claim are WEAKEST-PART. The `ARGUES_RELEVANCE` edge itself passes no strength to the target (excluded at badge_inputs.py:62-63; test_two_factor_strength.py:206-217). Nothing in the code decides which of the two shapes a relevance claim's grounds should take.\n\n### B.4 How contributions from several links into one claim are combined\nPlain sum in energy space, then one nonlinearity:\n  E = SUM_supports c_i - SUM_attacks c_j + sub_energy\n  strength = qem_strength(0.5, E) = 0.5 + 0.5 * E^2/(1+E^2) for E>0; 0.5 - 0.5 * E^2/(1+E^2) for E<0\n  then strength = min(strength, ceiling) if a part-cap exists. (qbaf.py:371-420)\nThere is no per-link saturation, no independence or novelty discount, no maximum, no grouping of links. Each SUPPORTS edge is its own term. The weight reading (\"how many inputs\") counts inputs with |strength - 0.5| > 1e-9 and has no notion of independence (evidential_weight.py:85-103).\nQuestion-channel edges (a question's own pole, claim-level questions) keep the pre-ruling counted rule: pos/neg per question = 0.5 + min(0.15 * evidence_count, 0.45); edge_strength = qem_strength(0.5, sum(pos - neg)); contribution = edge_strength - 0.5 (qbaf.py:146-177, 354-359; badge_inputs.py:21-23, 208-218).\nDisplay bands (qbaf.py:66-92): < 0.2 red; 0.2-0.48 amber; 0.48-0.52 neutral \"UNSETTLED\"; 0.52-0.8 blue; >= 0.8 green.\n\n### B.5 Is a \"linked argument\" (two premises, ONE reason) represented anywhere?\nNot found, as a feature of SUPPORTS/ATTACKS links. What exists:\n- SUPPORTS/ATTACKS edges carry no argument-instance, reason, or group identifier. Edge scheme properties are `scheme`, `schemes` (JSON list), `scheme_cluster`, `scheme_confidence`, `scheme_note` (graph/store.py:494-519, 685-704). The retrieval doc § 4 measured the same: \"3,515 scheme-bearing edges, and no instance identifier\". Each SUPPORTS edge contributes independently and additively (B.4).\n- The only \"joint\" structure is the part-whole relation: DECOMPOSES_INTO children of ONE claim, with `support_interpretation` necessary (weakest part governs, plus cap) / corroborative (add) / alternative (max). support_semantics.py:24-29 says these \"are the classical linked / convergent distinction, plus a disjunctive case\", and states the module \"is about how a claim's PARTS combine into the whole\".\n- The code comment at schemes.py:575-581 says what the CONNECTION critical questions cover: \"the warrant, the implicit bridging premises (is the expert an expert in THIS field?), exceptions and undercutters. Acts on the link's relevance.\" The meta critical questions of default_inference are `premise_acceptable`, `warrant_acceptable` (\"IF {premise} holds, {conclusion} genuinely follows - the connecting assumption survives being stated out loud\"), `exception_absent`, `rebuttal_absent` (schemes.py:199-204; bearings premise / connection / connection / rebuttal, lines 594-596).\n- No hyperedge, no \"premise set\" node. A conjunction of premises into one reason can currently be modelled only by (a) a mother claim whose DECOMPOSES_INTO children are the premises, which then SUPPORTS the conclusion, or (b) putting them as the grounds of the link's relevance claim (B.3, last paragraph). The code does not choose.\n- A decomposition-judgement pass exists that proposes (never asserts) a kind per part edge: `support_semantics_proposal` in {necessary, corroborative, alternative, miscast_as_evidence, does_not_fit} plus a `relevance_proposal` (dependence, 0-1) (decomposition_judgement.py:52-66, 237-259). It writes NEITHER `support_interpretation` nor anything the strength layer reads.\n\n### B.6 Other code facts that bear on the question\n- Three separate constants named NEUTRAL_POINT = 0.5 (qbaf.py:42, relevance.py:44, support_semantics.py:62). Same value, not one source.\n- The hinge now runs through the badge (hinge.py:18-29, 212-272), so granted/denied clamps pass through the same formulas.\n- Fair-share discounting (evidence_routing.fair_share_discounts, 125-154; discounted_subclaim_energy, 207-231) exists, is tested, is used only by slicing_stability.py, and is NOT in compute_claim_badge. Its own docstring (216-224) says it mirrors the corroborative aggregation and that \"where sharing cannot inflate, so no discount applies\" for the necessary channel.\n- Methodology tier (METHODOLOGY_BASE_WEIGHT) is not read by any production badge path (edges_for_badge does not carry it).\n- Question ordering prices a connection question on a link whose supporter has no standing at zero, so the descent offers premise questions first (relevance doc § 6; I did not read question_ordering.py).\n\n### B.7 Derived arithmetic (mine, from the formulas above; not in any doc unless noted)\n- One examined supporter at 0.8, presumed relevance 0.5: contribution 0.15, target 0.511.\n- Two such supporters as two SUPPORTS links at 0.9: E = 0.4, target 0.569.\n- The same two as UNTAGGED children at 0.9 and 0.9: E = (0.9-0.5)*0.3 = 0.12, 0.507 (doc: \"three parts each established at 0.9 lift their parent only to 0.507\", weakest-link § 7). Children at 0.9 and 0.6: 0.500.\n- The same two as tagged corroborative children at 0.9, 0.9: E = 0.24, 0.527.\n- Doc-confirmed padding figures: three children at 0.70 additive 0.516, twelve 0.671, weakest-part 0.502 for any number (weakest-link § 6a).\n- A relevance claim whose only ground is ONE SUPPORTS link from a claim at 0.9 (presumed link relevance 0.5): contribution 0.2, relevance-claim strength 0.519; so the argued relevance of the supported link becomes 0.519, against the presumed 0.5. With two such grounds as SUPPORTS links 0.569. With the same grounds as untagged parts of the relevance claim (weakest-part energy): 0.507. (All derived; no doc gives these.)\n- A refuted supporter (strength < 0.5): 0 contribution regardless of relevance.\n\n### B.8 Not found in the code (checked by ripgrep)\n- Any grouping or instance id for premises of one reason; any hyperedge; any \"joint support\" operator on SUPPORTS links.\n- Any independence/novelty/similarity discount in the corroborative channel (word \"novelty\" in code appears only as a horizon note, horizon.py:70, 155). The \"similarity-adjusted corroboration\" dial (A4) is unbuilt.\n- Any saturation across several supporters other than the QEM impact curve.\n- Any field for the force of a rule (strict/defeasible), a Toulmin qualifier, or the type of a relevance claim (left blank on purpose).\n- Any requirement claim for a SUPPORTS link; the four pieces of Q34 are unbuilt (relevance doc § 7).\n- The Q31 rename (`classifier_confidence`): not present. The badge still fetches `r.strength` and discards it (`_strength`, badge_inputs.py:159), as what-a-link-strength-means.md § 3 says.\n\n---\n\n## C. WHAT THE DOCS ARGUE\n\nShort exact quotes (each under 25 words). \"WL\" = weakest-link-arithmetic-and-the-merge-hunch.md; \"NDC\" = what-the-necessary-default-changes.md; \"R2F\" = relevance-and-the-two-factors.md; \"WCE\" = what-counts-as-evidence.md; \"SV\" = starting-values-and-the-problem-of-the-prior.md; \"SLA\" = strength-layer-audit.md. Items marked [outside list] come from files I was not asked to read in full.\n\n### C.1 Why the weakest part (min), and not the product or the sum, for jointly required parts\n1. The sum is the gamed one. WL § 0: \"Every field that lets contributions add across parts discovered the same attack (more parts = more score)\". WL § 1a quotes CORE: metrics \"can be manipulated by adding obvious or repetitive subclaims to artificially inflate scores\". Measured: SLA § 3 and WL § 6a, three children at 0.70 give 0.516, twelve give 0.671; weakest-part gives 0.502 for any number. NDC § 1: \"The claim looked better-evidenced purely because it had been sliced thinner\".\n2. Min by a theorem. WL § 1b: \"minimum is the only one for which every value is idempotent\". \"cloning a conjunct is a no-op under min and under nothing else\" (idempotence is the anti-padding property).\n3. Product is padding-proof but punishes depth. WL § 1c: product \"punishes honest depth: three parts at 0.70 → 0.343, twelve → 0.014\". Law applies proof \"per element\": \"Element-wise thresholding is min-shaped, not product-shaped\" (Cohen's conjunction paradox; Clermont). Summary line: \"additive is the gameable one we measured; product is padding-proof but depth-punishing; min is padding-proof and depth-neutral\". Product is also called the right conjunction under independence and \"maximally wrong for constitutive parts\" (WL § 1f quoting evidence-division-and-the-foundation.md § 2b, which I only grepped).\n4. Pollock's weakest link. WL § 1b: \"The argument strength of a deductive argument is the minimum of the degrees of justification of its premises\". The same paper \"rejects accrual outright\", so the corroborative channel \"sides against Pollock and with the accrual school\" (Verheij; Prakken 2005): \"a genuine contested choice, held deliberately\".\n5. Bayes, two ways. WL § 1f: \"min is the Fréchet–Hoeffding upper bound\", \"the correlation-agnostic upper bound, which is exactly the right default posture for a system that cannot know the correlations\"; and for the padding attack's own entailment-chained slivers \"min is not a bound — it is Bayes's exact answer\".\n6. Redundancy is priced in. WL § 5c: \"the entailed part can never be the weakest, so it never governs\". So no merge or entailment detector is needed in the necessary channel.\n7. No neutral arithmetic exists. WL § 1e (Amgoud & Ben-Naim): Cardinality Precedence, Quality Precedence and Compensation are \"pairwise incompatible\"; \"There is no neutral arithmetic; every aggregation is a stance.\" The design answer: aggregation \"separately constrainable per relation\" (Munro, Bloch & Lesot).\n8. Code docstring (support_semantics.py:86-89): \"A conjunction is only as good as its weakest conjunct\", and splitting into more necessary parts \"cannot raise its strength, which is the property that stops decomposition from paying\".\n9. SLA § 4 (the motivating diagnosis): \"Conjunction wants something closer to a minimum or a product; corroboration wants a sum.\"\n10. The doc's own objections to min, WL § 4: (1) \"min is count-blind\" (two weak parts score like one); (2) \"min is noncompensatory\" (\"For a genuine conjunction that is correct (logic, not policy)\"); (3) element-wise scoring may be the wrong frame (Allen & Pardo's holism; \"a legitimate future instrument\"). And the Yu & Zenker circularity critique \"attacks the identification of linkage, not the arithmetic once linkage is asserted\".\n11. The older doc, [outside list] support-semantics-and-the-conjunction-problem.md § 3, argued ontology before arithmetic: \"Choosing min instead of sum would approximate the symptom; recording the interpretation addresses the thing.\" (Superseded in effect by the 2026-08-31 default.)\n12. A counter-reading, [outside list] strength-calculus-literature/bayesian-and-informal-logic.md § 2.5: min \"always lies inside the interval\", but where r <= q it \"corresponds to\" Δ = 0, \"the weakest-link rule reports the conclusion's probability as if the premise did not matter\"; and \"There are two products\": Prakken's rq (probability a chain holds) and the ruled Δ·(q - q0) (the change a link transmits). Hahn & Hornikx answer Pollock by saying his objection \"presupposes a conjunction of premises rather than conditional probability\".\n\n### C.2 Conjunction versus corroboration; linked versus convergent\n1. The mapping is explicit. support_semantics.py:24-29: \"These three are the classical linked / convergent distinction, plus a disjunctive case.\" Freeman's linked premises \"work together and fail together\" (necessary); convergent \"support independently\" (corroborative). It adds a separate axis: \"deductive versus inductive is about the INFERENCE and is already absorbed by the scheme on the edge\".\n2. WL § 0 table: min/necessary = linked, Pollock, noisy-AND, min path-trust; add/corroborative = convergent, accrual, \"provably sybil-gameable\" in reputation systems; max/alternative = Pollock's own rule for separate arguments, noisy-MAX.\n3. WL § 2: \"The protection moved from automatic to claimed; the truthful default for a decomposed whole is the linked one.\"\n4. The honest asterisk, WL § 1d: Yu & Zenker argue \"the distinction's standard tests are circular\"; Freeman's reply defends a structural criterion. WL § 8: under the separability floor \"the real classification is parts vs evidence-items\". NDC § 6: \"A part that looks independently-corroborating is usually not a part at all. It is a piece of evidence wearing the wrong label.\" NDC § 6: \"Three studies are not three parts of a claim. They are three witnesses for it.\"\n5. What the pass found (linked-convergent-and-what-we-are-actually-asking.md [outside list], 197 edges, 2026-09-22): extraction-written part edges 20 of 30 miscast as parts; 74 of 197 `does_not_fit`; \"Whether that is a gap is genuinely unclear and should not be asserted either way\" about a possible fourth cell (Freeman: coordinatively compound premises). Accuracy \"is not established, and cannot be from inside\".\n6. Retrieval doc § 4: Yu (2025) decides it by scheme instances: \"A linked argument can instantiate an argument scheme only once\". First check: no instance identifier on 3,515 scheme-bearing edges, so \"not directly computable today\". A proxy (same target claim, same scheme type) is \"enough to propose an interpretation, never enough to assert one\". Second check (is it a settled result) \"stands open\". It \"would not settle alternative\".\n7. a-cut-through-a-concept-is-an-argument.md § 5 [outside list]: \"the criterion is highly controversial with close to a dozen proposals\", one respected paper (Goddu) argues for not making it; \"reviewer disagreement about a re-filing is the expected case rather than a defect\".\n8. WCE § 4b, Schum's five patterns for \"two items pointing at one claim\": corroborative (same event; \"saturating\"), convergent (different events, \"additive, and possibly synergistic\"), cumulative redundancy (\"adds nothing new\"), contradictory (\"resolved on credibility, never on headcount\"), divergent (\"needs a joint explanation, not a tally\"). \"Additive aggregation overcounts the first, third and a collusive variant, and undercounts the synergy.\" And: \"three studies of one effect are corroborative witnesses (saturating), never necessary parts (weakest-link)\". Proposed, OPEN: Q22 (a machine proposes which pattern).\n9. WCE § 8b, the aggregation principle proposed: \"quality precedence within a channel of dependent inputs, and saturating accumulation across independent channels\". OPEN.\n10. WL § 5c on Pollock's two witnesses: \"the pieces do not add because they were never independent\".\n11. The linked question in the unwritten-step docs [outside list]: how-far-a-premise-is-from-its-claim.md § 4: \"Two premises that only work together are linked\" and for the linked structure Freeman's challenger asks \"Why is that relevant to the claim you allege it to support?\"; the doc says \"The bridge is the answer to that question.\"\n\n### C.3 The corroborative channel: weight of evidence, log-odds, likelihood ratios, naive Bayes, correlation, shared sources\n1. WL § 1f: \"The corroborative channel is Bayes's own rule for the case it claims.\" Adding offsets is \"the additive-log-odds shape — Good's 'weight of evidence': for genuinely independent evidence, log likelihood ratios add\". \"Its known failure is naive Bayes's known failure — the independence assumption\", so correlated evidence \"double-counts\" until priced. QEM strengths are \"deliberately not calibrated probabilities\" and no strength \"should be read as P(claim is true)\".\n2. WCE § 2b: the log-likelihood ratio \"is the formal warrant for summing in the corroborative channel and the exact condition under which summing is licit\" (conditional independence). WCE § 0 item 1: counting is \"the one aggregation every tradition surveyed rejects\"; item 4: \"Independence is the variable.\" WCE § 2c: \"Agreement multiplies only across independent errors\"; \"Diverse evidence beats repeated evidence is false in general\" (Bovens & Hartmann; Claveau), so a known shared source \"becomes a node, never a blind discount\".\n3. WL § 9: \"three genuinely distinct studies sharing one dataset add three times in the corroborative channel\"; \"the strength layer's least-defended channel\". Pollock's Fredonia witnesses and Prakken's first accrual principle: \"the strength of an accrual cannot be calculated from the strengths of its elements\" when reasons interact.\n4. WL § 9b, five fields converge on \"a dependence dial, plus a structure that supplies the dial's value\": Amgoud et al. 2018/2021 novelty adjustment; Denœux's cautious rule; Jøsang's cumulative vs averaging fusion; robust variance estimation (default ρ 0.8); variety-of-evidence results (\"replication can trump variety\"); a Choquet integral as the general form. Proposed (not built): corroborative energy Σ (σᵢ − 0.5) × novelty(i | stronger co-contributors) × 0.3. Fair-share discounting is its full-overlap special case.\n5. WL § 9c: double-counting has \"five cases\"; merge solves only \"one proposition, two nodes\"; the pathological criterion is \"more than one path from an evidence node to one aggregation point\". Ledger P16: \"five SUPPORTS edges from shared evidence are a double-count, not five times the weight\".\n6. evidence_routing.py docstring (lines 25-30): \"`subclaim_energy` sums (σ − 0.5) × 0.3 across siblings with no correlation term\"; fair-share \"can only ever lower a mother's energy\", is built, tested, and not adopted.\n7. WCE § 4a(4) (the Curveball case): \"one source's many reports counted as volume\"; Bara 2026: \"another agent is not another observation\". WCE § 8c: \"Channels: inputs sharing an origin form one channel\"; ledger R7 (OPEN): \"agreement is worth something only in proportion to independence\".\n8. WCE § 5: the ACMG/Tavtigian naive-Bayes recast (prior 0.10; \"very strong\" odds 350, each tier down the square root of the one above); STRING treats \"all text-mining evidence as one channel\". WCE § 8b and ledger Q3 propose that each answer carry a direction and a proposed, attackable strength tier on a log-odds scale (the ACMG/Tavtigian shape, points 1 / 2 / 4 / 8); the tiers and the arithmetic are OPEN.\n9. SV § 6.9: \"Potyka's logistic semantics has the log-odds form in which a start and several independent reasons combine exactly as in naive Bayes.\" It is \"a separate calculus choice for later\". SV § 3.5 (Rootclaim): \"independence between stages is assumed where correlation is likely (the multiple-stage fallacy)\". SV § 2.9: Hahn & Oaksford keep the \"force\" of an argument (a likelihood-ratio quantity) apart from the \"conviction\" it produces.\n10. R2F § 7 last line: \"Still open: how several reasons add up (accrual), where the drift toward the side that files more reasons lives until starting values arrive\". R2F § 6 (the first-calculus-question record) also says: \"The one-way bet on supporters that drop-out leaves open belongs to the accrual question, decided separately.\"\n11. Ledger U2 (OPEN): \"On alternative routes to one outcome, argument strength and probability come apart: the alternative channel takes the strongest route, probability adds every independent route\"; a probability-style OR is safe \"only once ... shared premises are their own nodes, since duplicating a route raises a noisy OR\".\n12. [outside list] strength-calculus-literature/bayesian-and-informal-logic.md (decisions D1-D8; D8 is \"accrual (several supporters, independence, double counting, padding)\"): § 2.2 table (independent contributions, independent sufficient reasons = noisy-OR, conditionally independent signs = naive Bayes, jointly necessary parts = \"AND-type | not separable\"); \"A single stored 'relevance' number means Δ in the first structure, causal power in the second and a likelihood ratio in the third\"; § 2.6 \"Double counting: one report with likelihood ratio 3 at prior 0.5 gives 0.75; the same report counted twice as if independent gives 0.90\"; \"Weak reasons accrue\" (Godden & Zenker). Godden & Zenker note 24: individually insufficient reasons accruing to sufficiency \"contradicts the weakest-link principle\", \"the linked/convergent analysis is left to future work\".\n13. Synthetic stress suite (wave two): \"Decomposition-plus-retargeting without supersession inflates whatever it touches\" (edge supersession then shipped); shared evidence reproduces the fair-share case live (the meta-analysis supporting both fasting siblings).\n\n### C.4 What a link's relevance IS, per R2F and what-a-link-strength-means.md, and what each lists as open\nR2F (relevance-and-the-two-factors.md):\n- § 0 item 3: \"'Relevance' means six different things in the corpus.\" \"The two that matter here are bearing (does the premise move the conclusion, and how much) and dependence (how much a whole needs a part). The only machine relevance score built measures dependence; the question asks about bearing.\"\n- § 0 item 4 (Johnson & Blair): \"Acceptability is the supporter's own strength; relevance is the link's bearing; sufficiency is whether the reasons together are enough (the corpus's lift question).\" Sufficiency is \"the whole claim\", \"the open lift question, unchanged by this proposal\" (§ 2 table).\n- § 2 table: relevance = \"if the supporter holds, how much does that bear on the target\"; lives on the link as \"a gate (does it bear at all) and a magnitude\"; \"proposed by a machine of a second model family, with an abstention; argued by people ...; never voted\".\n- relevance.py:14-15: \"a reading in [0, 1] of how much s, granted, bears on t\". relevance_judge.py docstring: \"What it measures is bearing, not truth ... how far the target would move if the supporting claim were established beyond doubt.\"\n- § 7 (Q34, for now): \"relevance means the gain: how much a reason adds if it holds, against having no such reason\". That is the judge's question; \"the objection in § 6 ... applies only to a subtracting rule\".\n- Open, R2F: header (\"how the two factors combine, what an unexamined link presumes, and fixed point versus one pass are still open\"); § 5 table (five named choices as built: weak supporter no; presumption 0.5 / 0; product (\"Pollock's weakest link (minimum) is the main alternative\"); one pass; `CQ_BEARS_ON` hand-sorted); § 6 \"Standing has to originate somewhere\" (a graph whose leaves are all neutral would never move; needs base scores, located encounters, or presumptions); § 6 \"The two channels disagree about unexamined claims\" (a supporter with no standing lends nothing, a decomposition child with no standing enters at a count-based prior, 0.632 for two unscored supports); § 6 question ordering; § 6 \"The judge measures a different number from the one the ruled rule needs\" (Δ versus direct change/sufficiency; \"readings taken with today's prompt should not be written until the founder has chosen what relevance means\"); § 6 the decision model, \"store the two conditionals rather than one relevance number\" (ledger W3 OPEN); § 7 \"Still open: how several reasons add up (accrual) ... and the starting values themselves\"; § 4 listed defects (switch wired to nothing; docs say `support_semantics`, code reads `support_interpretation`; hinge omitted the coverage verdict; requirement endpoint has no screen; requirement claims always typed normative; one example calls the same relation relevant in one doc and similar in another).\n- Also R2F § 5 pointer, dated 2026-10-07, proposed and unruled: the rule, facts and joined names of a written-out step \"would be the grounds of this claim, since a rule drawn as a second premise needs a rule of its own\" (philosophy-of-the-unwritten-step.md § 3; ledger AD22).\n\nwhat-a-link-strength-means.md (about a DIFFERENT number, the stored `r.strength`, ruled Q31 \"Yes.\"):\n- It does not define relevance. It says the stored number \"has no definition anywhere it is written\" (§ 0 item 1) and that none of the writers say whether it is \"the model's certainty that the link exists, how far establishing one claim would advance the other, or something else\" (§ 1). It does four jobs (printed as a percentage; picks map boxes; ranks four feeds; gates the automatic linker) and the badge \"reads it and discards it\" (§ 3).\n- Proposal, ruled: \"A link's strength, as readers see it, is a reading, never a stored value\", computed on read \"from its answered critical questions (already built, and what the badge uses)\", \"not yet examined\" until a question is answered; the machine's own rating renamed (`classifier_confidence` or similar) with a rubric and kept blank where no machine judged the link; ordering computed (§ 5).\n- Open or pending there: build \"pending in TODO.md\" (not built); § 6: most links would read not yet examined; the map's selection needs \"its second signal\" (what hangs on a claim); per-neighbour readings cost queries (cache); bridging/strongest/weakest feeds re-rank; migration; § 7 found: feed.py's docs say badge strength but read the stored number; a person's term clarification stored at fixed 0.65.\n\n---\n\n## D. OPEN QUESTIONS THE DOCS THEMSELVES LIST\n\nEach item: what is open, one or two sentences, and its home. \"Unruled\" is as stated by the file.\n\n1. The up-transmission whisper. The necessary channel passes weakness DOWN at full strength (the cap) but strength UP only faintly: `necessary_energy = (min - 0.5) * 0.3`, so three parts each established at 0.9 lift their parent only to 0.507. Principled reading found afterwards: it prices the unverified coverage gap (nothing checks that the parts exhaust the whole), but \"it is an accident of inherited constants, not a decision\". Home: WL § 7 and § 9d (\"the lift and the cap share one gate\"); TODO.md decision stack item 3 (lines 1818-1820, 1868-1916), restated 2026-09-02 as coverage-checked lifting over the derivable requirement space with a raised-not-total up-weight; \"Founder calls still waiting\" (TODO.md line 1644); a new fork: do unanswered latent requirements enter the cap or only the coverage measure (TODO.md \"A\" band item 2). Unruled, \"awaiting one word\".\n2. O13, the attack-proofness of the requirement cap, and the presumed weights. One irrelevant person-added part caps any claim at 0.75 (0.5 once refuted) until someone argues \"not required\"; three further doors named (propped-up requirements by many accounts; attacking every legitimate requirement; what already blunts both). Proposed, unbuilt: presumed weight on a person-added part from a machine relevance proposal. The weights 0.5 / 0.25 / 0 are \"de-baked constants awaiting a ruling\". Home: ledger O13 (OPEN), WL § 9e, TODO.md stack item 6 (lines 1826-1862) and line 1644.\n3. Q35 and Q36, honest starting values and the source's own \"because\". Whether a claim's start is always a claim taken from its kind; whether a failed reason may subtract (start x relevance) where the conclusion relied on it. SV § 9 lists six founder questions: (1) the principle; (2) the source's own \"because\"; (3) what a badge shows (evidence only, or a labelled best guess); (4) normative claims always neutral; (5) \"prior-dependent\" as a display state; (6) whether crowd estimates may set a start or only raise an alarm. SV § 11: if the root question is \"not yet\", \"every claim keeps 0.5 and Q34's drop-out stands as it is\". Home: ledger Q35, Q36, P7; SV header \"nothing ruled\".\n4. The calculus choices named at the 2026-09-28 ruling and still the founder's: how the two factors combine (\"product, as built, or weakest link\"), what an unexamined link presumes, a fixed point versus one pass, and the hand-sorting of critical questions into premise / connection / rebuttal. Home: relevance.py:30-35; R2F header and § 5 table; strength-calculus-literature D1-D5 [outside list].\n5. Accrual: how several reasons add up, including independence, double counting and the drift toward the side that files more reasons. Home: R2F § 7 (\"Still open\"); strength-calculus-literature D8; WL § 9 (correlated corroboration is \"the strength layer's least-defended channel\"); WL § 9b (similarity-adjusted corroboration, built nowhere); WCE Q4, Q5, Q22, R7; SV § 6.9 (the update shape, log-odds versus QEM, \"a separate calculus choice for later\").\n6. Q3's arithmetic and Q27. Answers are to be weighed by their own standing (ruled in direction); the tiers and arithmetic are open. Under today's counting rule one answer on a lone edge moves a claim by under 0.0005 and a one-question edge answered in full stays UNSETTLED at 0.504. Home: ledger Q3, Q27; WCE § 8b.\n7. Q34's four unbuilt pieces: a refuted reason counts as examined (today it lands exactly on 0.5 and reads as unexamined); the third display state \"nothing stands (N checked)\"; filing a refuted reason's finding as an objection; a requirement claim for reasons (presumed weight 0); and an argument-from-ignorance move. Home: R2F § 7; ledger Q34; TODO.md § Relevance.\n8. What \"relevance\" means as a number. R2F § 6: the ruled rule is Jeffrey conditioning when relevance means Δ = P(C|P) - P(C|not P); the judge asks how far establishing the supporter would move the target, which is the direct change and sufficiency; Q34 makes relevance \"the gain\", which the judge already asks; Q35 would make it Δ. Proposal: store both conditionals (ledger W3, OPEN). Home: R2F § 6-7; ledger W3; jev-and-the-judgement-layer.md § 6 [not read].\n9. \"Standing has to originate somewhere\" and the two channels' disagreement about the unexamined. A graph whose leaves are all neutral would never move; a supporter with no standing lends nothing while a decomposition child with no standing enters at a count-based prior. Home: R2F § 6.\n10. Identification of linked versus convergent. Yu (2025) needs scheme instances, which the graph does not store; second check (is it settled) open; a possible fourth cell; 74 of 197 `does_not_fit` part edges unread; \"accuracy is not established, and cannot be from inside\". Home: retrieval doc § 4; linked-convergent doc §§ 4-5 [outside list]; a-cut-through § 5 [outside list].\n11. Typed combinations and typed attacks. Q22 (a machine proposes Schum's pattern: corroborative / convergent / cumulative / contradictory / divergent), Q9 (rebut / undercut / undermine; assumption / exception questions), Q23-Q24. All OPEN. Home: WCE §§ 4b, 5, 8b, 8m.\n12. Independence as structure (Q4; R7). Sources as nodes, channels combine as independent, items within a channel do not multiply. \"The largest ontology change proposed anywhere in Arc Q or R\"; \"it moves every strength in the graph\". OPEN. Home: WCE § 8c; ledger Q4, R7.\n13. Alternatives. Ledger Y7 (OPEN): the splitter writes every part untagged and untagged counts as required, so alternatives (\"positive or necessary\") are written as required parts; two repairs offered. Ledger U2 (OPEN): alternative-channel max versus probability's noisy OR. Ledger T6 (OPEN): what a claim says \"in passing\" should not cap it by default.\n14. The written-out step (ledger AD13-AD29; all OPEN, all Claude's proposals except where noted as his). The directly relevant open item is TODO.md line 941: \"If AD22 is adopted: a design note before code on how a written-out step fills `ARGUES_RELEVANCE`, and how its three kinds of sentence feed the link's weight without counting twice.\" AD22 \"needs a design note before any code\"; AD28's third standing (\"committed by the step, not asserted\") \"is an ontology call and his\"; AD23: steps from a sign or from a like case have no check yet (\"mark such links by shape and do not force a rule\"); AD17: each sentence of a written-out step \"weighs nothing until a text states it or a person takes it up\".\n15. Q31 build (the stored `r.strength` becomes a reading; rename) pending. Home: what-a-link-strength-means.md § 5-6; TODO.md line 1147.\n16. Holistic comparison of rival decomposition subtrees as \"a legitimate future instrument\" (WL § 4 objection 3); a Shapley/RAE per-edge explainer proposed, unruled (TODO.md line 1959).\n\n---\n\n## E. ABDUCTION, BEST EXPLANATION, SIGN, RIVALS, UNDERCUTTING VS REBUTTING, QUALIFIER / RULE FORCE, PREMISE VS WARRANT\n\nWhere a thing is \"found\" it is in the nine docs and the code unless marked [outside list].\n\n### E.1 Abduction / inference to the best explanation / rival explanations\n- WCE § 2c: \"Inference to the best explanation is comparative: an abductive edge's strength depends on the set of rival explanations present\". Consequence stated: rivals should be sibling claims, and \"no rival proposed\" is a coverage gap rather than strength. Proposal-level only (nothing in WCE is ruled).\n- WCE § 4a move 3: diagnosticity (Heuer's ACH) \"is relative to the rival set, so when the rivals are not exhaustive, 'non-diagnostic' misleads (the zero-sum fallacy)\"; \"The concept is settled; that particular procedure is not.\"\n- SV § 6.4 and § 10.1: \"three rival explanations cannot all be 50%\"; rival claims share one partition, starts \"sum to at most one\"; indifference is legitimate \"across a stated partition, not claim by claim\". Ledger Q35 and R2F § 7 carry the same point. Unruled.\n- Code: abductive cluster with schemes `abductive`, `evidence_to_hypothesis` (also `ignorance`, `lack_of_evidence`); badge terms \"BEST EXPLANATION\" / \"CONTESTED\" (schemes.py:30, 85, 165-176, 434-462, 679); critical questions `best_explanation`, `alternatives_eliminated`, `explanatory_power`, `competing_hypotheses`, `search_thorough`, all sorted as \"connection\" (schemes.py:644-645). So rivals enter only as answered critical questions on the link's relevance; there is no computation that depends on the set of rival explanations present. SLA § 4b lists \"BEST EXPLANATION\" among the displayed terms.\n- [outside list] philosophy-of-the-unwritten-step.md § 5: Peirce's three arrangements; \"From the rule and the result to the case he called hypothesis, later abduction.\" His 2011 squirrel \"is the third\" arrangement.\n\n### E.2 Argument from sign\n- Code: scheme `sign` in the causal cluster with two CQs: `sign_reliable` (\"The correlation between {indicator} and {indicated} is strong enough to be reliable\") and `sign_alternatives` (\"There are no other factors that could explain {indicator} besides {indicated}\"), both \"connection\" (schemes.py:288-294, 615).\n- Docs in the nine: WCE § 2a only: evidence as \"a sign or symptom of how things are\" (Kelly's map of the concept's jobs). No treatment of sign as a link shape in the nine docs.\n- [outside list] bayesian-and-informal-logic.md: \"When C explains P (P is a sign, report or symptom of C): a = P(P|C), b = P(P|¬C)\"; § 2.4 refuting a sign \"counts against C\"; § 0: each link's direction \"cause-like or sign-like ... which a SUPPORTS edge does not record\"; Hahn & Hornikx: for argument from sign \"the critical questions determine the likelihoods\".\n- [outside list] ledger AD23 and philosophy-of-the-unwritten-step.md § 5: his squirrel of 2011 is \"a step from a sign to its cause\" (Aristotle: \"an argument from a sign of the refutable kind\"); the trial's blind reader refused it in all four askings and accepted it with the rule turned round; \"The reader built this evening is a deductive reader.\" The three shapes are: from a rule and a case; from a sign to what it indicates; from a case to a like case.\n\n### E.3 Undercutting versus rebutting (and undermining)\n- Code (schemes.py:567-590, comment): the sort of critical questions \"follows ASPIC+'s three attack types (undermining a premise, undercutting the inference, rebutting the conclusion; Prakken 2010, Modgil & Prakken 2014)\". premise = asks whether the supporting claim itself holds, acts on that claim's acceptability; connection = \"the warrant, the implicit bridging premises ..., exceptions and undercutters. Acts on the link's relevance\"; rebuttal = \"an independent case outweighs or opposes the target itself\", acts on the target directly. R2F § 5 repeats this.\n- In the computation: an undercutter has no separate edge type. It acts as an answered connection question (relevance factor, qbaf.py:207) or as an attack on the link's relevance claim (\"this does not bear on it\", api.py:2933-2935 text). A rebutter is an ATTACKS link or a rebuttal answer (qbaf.py:216).\n- WCE § 5: \"An undercutter should move a claim toward \"uninformed\", not toward \"false\"\" - \"which a model where every attack subtracts strength cannot express\". WCE § 1b lists \"typed rebutting versus undercutting\" as missing; WCE § 4a (fifth move) cites Verheij's four roles of critical questions separating those that \"undercut\" from those that \"rebut\"; WCE § 6f/ledger Q17: \"a debunking argument is an undercutter\". Ledger Q9 (OPEN): rebut / undercut / undermine typed, and critical questions typed assumption (open withholds weight) or exception (open costs nothing until substantiated).\n- Synthetic stress suite, wave two: the calibration attack \"splits into FACT (certificate lapsed) + WARRANT (accuracy unverified, though not necessarily wrong) - the undercut/rebut distinction stated as claims\"; the smuggled standard \"the certified requirement is a sufficient threshold for reopening\" is \"a value premise inside an engineering sign-off, now a fourth necessary part\".\n- Q34's refuted-reason rule (\"a reason that fails drops out\") is the code's stance on a failed supporter: it stops supporting, it does not attack.\n\n### E.4 Qualifier / force of a rule (strict versus defeasible)\n- Not found in the nine docs or the strength code: no Toulmin qualifier, no strict/defeasible rule-force field. \"Defeasible\" occurs only as Pollock's \"defeasible reasoning\" (WL § 1b), as the meta critical-question set \"over the bare defeasible schema\" (schemes.py:196), and as \"A computed reading is defeasible, never final\" (ledger O11, about horizon readings).\n- Nearest things: the requirement weight (how firmly a part caps its whole; 1.0 tagged, 0.5 presumed, 0 for a proposal) is a force-like parameter on PARTS; link relevance is \"a gate and a magnitude\" on LINKS (bearing, not rule force); the QUALIFIES relation type exists but is read as neutral, \"narrow or restate\" (qbaf.py:49-52), which is not Toulmin's sense.\n- [outside list] AD25 (OPEN): \"A link carries rules in the plural ... a rule's breadth is set by asking which changes of the case the step survives\"; AD27: \"a generic allows exceptions, so what counts is how ordinary the counterexample is, a judgment of degree no model here reads steadily\"; philosophy § 5: \"Generics are a poor place to put the weight.\"\n\n### E.5 Premises versus warrant / licence\n- Code: meta critical question `warrant_acceptable`: \"IF {premise} holds, {conclusion} genuinely follows - the connecting assumption survives being stated out loud\" (schemes.py:201), bearing \"connection\" (line 595); `premise_acceptable` bears on \"premise\" (line 595). The two factors map onto them: acceptability = the premise side, relevance = the warrant side (R2F § 5 \"connection (relevance)\").\n- R2F § 5 (2026-10-07 note, proposed and unruled) and ledger AD22 (\"the toll bridge\"): \"The rule is a licence: written in as a premise it needs another rule (Carroll 1895; Ryle's inference ticket; Toulmin's warrant).\" The rule, the facts and the joined names are drawn as the grounds of the link's relevance claim, \"and not as further arrows into the conclusion\"; the philosophy doc § 3 adds \"The link's weight then follows them through the ordinary calculus, and nothing is counted twice.\" (My gloss: the ordinary calculus is B.3/B.4: separate SUPPORTS links add, parts of a claim are weakest-part.)\n- Ledger AD13 (OPEN): a written-out link has the first claim, \"what ties this case to a rule (two wordings for one thing; a further fact no claim states), and one general rule\". AD28 (OPEN, his call): a rule under an author's step is \"committed by the step, not asserted\".\n- [outside list] writing-out-the-unwritten.md, his 2011 words, recorded there: *\"If an argument is valid, it is automatically relevant. Right?\"* (2011-12-18); a friend answered relevance belongs to the arrow. The doc's reconciliation (writing-out-the-unwritten.md, lines 115-117): an arrow needs a reading of how much it bears, while for a step with everything written in, \"whether it bears has become whether its written premises are true\". His 2013 drawings give each premise a second premise beside it \"each with its own truth value\" (0.6 and 0.9) under the badges *valid* and *relevant*. His squirrel quote, 2011-08-29: *\"Just to clarify I mean simply to argue that \"The squirrel is dead.\" from \"The squirrel smells of decomposition.\" along with \"Dead squirrels smell of decomposition.\" [...] I guess what I'm wondering is if they have to be deconstructed/reduced so that what remains is one most proximal set of premises on which the inference is made. Leaning towards no. But I'm sleepy.\"*\n- Nothing in the nine docs or the code says whether the written-out grounds of a relevance claim should combine additively or by weakest part; B.3 shows the code does whichever shape they are given.\n\n---\n\n## F. DISAGREEMENTS (doc vs code, doc vs doc)\n\nOrdered roughly by how much they bear on the new question.\n\nF1. \"Times\" is ruled, and \"how the factors combine\" is open, in the same files.\n- R2F § 0 item 5: \"Ruled: a link's effect is the supporter's own strength times the link's relevance\". R2F § 5 table: \"How do the two factors combine? | Product | The ruling's wording. Pollock's weakest link (minimum) is the main alternative.\" But R2F header and relevance.py:30-35 say \"how the two factors combine ... are still open\" / \"Still the founder's to choose: how the two factors combine (product, as built, or weakest link)\". The files carry both statements and do not reconcile them; the build is the product, as a named default.\n\nF2. The ledger says \"awaiting\" what another file says was given.\n- Ledger B10 still prints \"**Awaiting founder confirm on both consequences**\". what-the-necessary-default-changes.md § 5 and TODO.md stack item 1 (lines 1801-1808) record the 2026-08-31 provisional blessing, verbatim (A3).\n\nF3. The property the strength layer reads has a different name from the one the docs and the proposal pass use.\n- The strength layer reads `d.support_interpretation` (badge_inputs.py:102; hinge.py:74; api.py:2812; the stress-suite seeds write it, scripts/seed_synthetic_stress_suite.py:191, seed_stress_suite_wave2.py:189; scripts/graph_facts.py:27 counts it).\n- decomposition_judgement.py:5-9 and 27-30 say nothing has ever written `support_semantics` and that `support_semantics` \"is what the strength computation reads\"; its edge query filters on `r.support_semantics` (line 226); parts_review.py:6 and linked-convergent doc § 4 report `r.support_semantics IS NOT NULL` returns zero. WL § 9d says the tag was written by nothing (\"rg support_semantics ... finds only qbaf.py and hinge.py, both readers\"). Ledger B10 records 17 stress-suite tags as written. So \"197 of 197 untagged\" measured a property nothing reads. Known: R2F § 4 and relevance-in-the-corpus-sweep.md lines 525-527 name it; TODO.md line 1123 (\"Correct them, and re-run the '197 of 197 untagged' count on the right property\"). Still present in the code docstrings at HEAD.\n- Consequence for adopting a proposal: it \"would have to write `support_interpretation`\" (sweep line 527).\n\nF4. Docs that describe the strength layer as it was before the 2026-09-28 build.\n- R2F § 0 item 1 (\"The supporting claim's own strength never reaches the target\") describes the pre-ruling code; R2F § 5 supersedes it in the same doc.\n- WCE § 1b (2026-09-26): \"Strength moves through two channels only: answers to critical questions on incoming scheme-bearing edges, and decomposition children\" (now a third, the supporter's strength flows).\n- SLA § 1: \"QEM once per edge from that edge's critical-question answers\" (true now only for the question channel).\n- support-semantics-and-the-conjunction-problem.md § 4 [outside list]: \"we feed the energy term with edge strengths where the paper feeds supporters' own acceptability degrees recursively\" (now false for argument links).\n- qbaf.py:10-11 top docstring states \"Energy = sum(supporter_strengths) - sum(attacker_strengths)\", the published form; lines 13-27 of the same docstring and the code (offset x relevance) differ.\n\nF5. Q31 describes a reading that the badge no longer computes that way.\n- Ledger Q31 and what-a-link-strength-means.md § 5: a link's strength is \"computed from the link's answered critical questions (compute_edge_strength, what the badge already uses)\". Q33 (same day, 2026-09-28) changed the badge for argument links: `argument_edge_contribution` (qbaf.py:346-359); `compute_edge_strength` serves only question-channel edges. The two same-day rulings do not refer to each other, and the planned \"reading\" is undefined for the two-factor path (the edge detail now shows `0.5 + contribution` with `acceptability`, `relevance`, `relevance_source`).\n\nF6. The same word, `corroborative`, means two different aggregations.\n- Deliberus's tag (support_semantics.py:289-298): parts that each raise the case, contributions ADD, no saturation. WCE § 4b (Schum): \"corroborative\" = different sources reporting the SAME event, \"saturating\"; \"convergent\" = different events, \"additive, and possibly synergistic\". WCE § 4b says \"three studies of one effect are corroborative witnesses (saturating), never necessary parts (weakest-link)\", and \"Additive aggregation overcounts the first, third and a collusive variant\" - i.e. the additive channel overcounts the case that carries its own name in Schum's sense. WCE § 8e uses \"corroborative children\" for the additive tag. NDC § 2 describes the tag as \"three independent studies pointing the same way\".\n\nF7. Ledger rows AD13 and AD23 disagree about the squirrel. [outside the nine docs, inside the ledger]\n- AD13: \"His 2011 example already has the form (the squirrel smells of decomposition; dead squirrels smell of decomposition; the squirrel is dead)\". AD23 and philosophy-of-the-unwritten-step.md § 5: the squirrel is a step from a sign; \"the trial's reader\" refused it in all four askings and accepted it only with the rule turned round. writing-out-the-unwritten.md carries an in-place correction (lines 105-107) but the AD13 row text does not.\n\nF8. Q34's parenthetical reads as built; the docs say unbuilt.\n- Ledger Q34: \"a need, argued as a requirement claim, which caps the claim (built for parts; extended to reasons with a presumed weight of 0)\". R2F § 7: \"all four pieces unbuilt\". Code: requirement claims exist only on DECOMPOSES_INTO parts (api.py:2791-2876; support_semantics.py); no requirement facility for SUPPORTS links.\n\nF9. Ruled but not reflected in the code (cap logic still depends on it).\n- Ledger Q32 (RULED 2026-09-28, \"Yes.\"): retire the `confirmed` field; who wrote a link lives in `provenance`. The code still reads `confirmed` in `presumed_requirement_weight` (support_semantics.py:218-222), in `REFUSED_EXCLUDED` (badge_inputs.py:32, used in all weighing queries) and in `edge_requirement_weight` calls. WL § 9d still describes \"a confirmed part\" as the presumed-0.5 case. Build items are in TODO.md; I did not check their state.\n\nF10. Two different quantities share the name \"relevance\" and the property stem `relevance_proposal`.\n- On SUPPORTS/ATTACKS edges: bearing of supporter on target (relevance_judge.py:180; read by badge_inputs.py:82-83, 236-237). On DECOMPOSES_INTO edges: how much the whole depends on the part (decomposition_judgement.py:66, 247-258; mean 0.33 per R2F § 1; not read by the badge; the switch that could use it is off and wired to nothing). R2F § 0 item 3 documents this as \"six different things\" and warns \"Do not reuse the dependence score as bearing\" (§ 3). A doc/code consistency risk only; the strength path does not mix them.\n\nF11. The parts channel and the links channel treat the unexamined differently (the docs say so).\n- relevance.py:11-13 / R2F § 6: an unexamined supporter lends nothing \"so structure alone never manufactures strength\"; a decomposition child with no standing still enters at the count-based prior (two unscored supports give 0.632), so structure alone can still manufacture strength through parts. R2F § 6: \"The same treatment for both is the consistent choice; changing the parts channel moves every decomposed claim, so it is not taken here.\"\n\nF12. Inside the weakest-link doc, the lift is stated two ways.\n- WL § 7: coverage-gated lifting, \"the parent may inherit min(parts) upward\" (TODO.md line 1873-1874 in the same words). WL § 9d and TODO.md line 1887-1895 (2026-08-31 refinement): \"a RAISED UP-WEIGHT ... never hard parent = min(parts)\" (Popper's asymmetry). § 9d is the later and controlling statement. Unruled either way.\n\nF13. The similarity-adjusted corroboration dial: \"proposed, unruled\" versus \"ENDORSED build-soon\".\n- WL § 9b: \"filed as design, founder-paced\"; \"today, nowhere ... the dial is proposed, unruled\". TODO.md line 1917: \"ENDORSED build-soon (founder 2026-08-31: \"Understood about the novelty dial, sounds good. We should build that soon\")\". The code has neither the dial nor any discount in `corroborative_energy`; fair-share exists but is wired only into slicing_stability.py.\n\nF14. Minor, numerical and probably explainable by re-runs (derived by me, flagged as such).\n- R2F § 1 reports the machine dependence score \"run on all 197 part links (mean 0.33)\"; the per-provenance means in linked-convergent doc § 2 (n = 84, 44, 39, 30) weight to about 0.30. R2F § 5 reports \"509 argument links\" on 2026-09-28; what-a-link-strength-means.md § 2 reports \"4,639 live argument links\" the same day, counting 3,118 question-scaffolding links; the two use \"argument link\" for different sets.\n\n---\n\n## G. POINTERS TO FILES OUTSIDE YOUR LIST THAT THE LISTED FILES NAME AS THE HOME OF RELATED REASONING\n(I read parts of some, searched the rest; none summarised here beyond what is quoted above.)\n- docs/research/strength-calculus-literature/bayesian-and-informal-logic.md: decisions D1 (how the two factors combine) to D8 (accrual); the table of how a target's reasons combine (linear / noisy-OR / naive Bayes / \"jointly necessary parts: not separable\"); the symmetric-versus-one-sided sign analysis; Jeffrey conditioning as the ruled rule's exact reading. Read lines 1-335 and 341-525.\n- docs/research/strength-calculus-literature/computational-argumentation.md (searched only): the sibling report; R2F cites it for the correction that QEM itself has no link weights.\n- docs/research/philosophy-of-the-unwritten-step.md §§ 3, 5, 7 and writing-out-the-unwritten.md (his 2011 and 2013 words); what-a-link-rests-on.md; how-far-a-premise-is-from-its-claim.md § 4 (Freeman's linked question); TODO.md lines 932-941 (the AD22-AD29 block and the design-note item).\n- docs/research/linked-convergent-and-what-we-are-actually-asking.md and a-cut-through-a-concept-is-an-argument.md § 5 (the dozen criteria; reviewer disagreement is the expected case).\n- docs/research/derivability-of-missing-considerations.md §§ 4-5 and evidence-division-and-the-foundation.md § 2b (cited by WL for the cap's design and for min as the Fréchet bound): not read.\n- docs/research/relevance-in-the-corpus-sweep.md (the verbatim sweep behind R2F; lines 525-527 on the property-name defect): searched only.\n- jev-and-the-judgement-layer.md § 6 (the decision model and the two conditionals, ledger W2/W3): not read.\n"}