{"path":"research/weighing-scheme-and-terminus-classifier-design.md","content":"# The Weighing Scheme and the Terminus Classifier: Design Reasoning and Root Questions\n\n**Date**: 2026-07-06\n**Status**: RESOLVED AND SHIPPED (July 6, 2026). Both root questions were put to the founder after the first dogfood run; he ratified the predicted answers verbatim — **provenance split + sacredness brake** for the weighing trigger, **the hybrid** (metadata cache + challengeable verdict-claim ground) for terminus verdicts — and both instruments are live on deliberus.com. The decision-space mapping below is preserved as the reasoning record; resolution notes sit under each root question. Implementation: `deliberus/weighing.py`, `deliberus/terminus_llm.py`, `set_terminus_with_ground` in `deliberus/terminus.py`.\n**Companions**: [value-weighting-decomposition.md](value-weighting-decomposition.md) (§d holds the scheme sketch this doc builds on), [convergence-wager-typed-residues-synthesis.md](convergence-wager-typed-residues-synthesis.md) (artifacts #1 and #3), [convergence-wager-red-team.md](convergence-wager-red-team.md) (the convergence-illusion hole that shapes the classifier's constraints).\n\n---\n\n## Why these two, and why attended-only\n\nThe July 2026 build wave shipped the measurement layer for the convergence wager: a derivational-completeness oracle, deterministic residue typing, a disagreement-preservation check, a discursive-dilemma flag, an agent-readable graph surface, and the corpus residue map (the falsification metric). Two instruments were deliberately held back for attended work:\n\n1. **The Argument-from-Weighing scheme** — because it modifies the live extraction prompts and response models, the exact stack whose silent failure caused the April 2026 outage (a one-field validation regression that returned zero claims to every new user for fifteen days). Changes here get eyes and end-to-end verification on real extractions, never unattended merges.\n2. **The terminus LLM auto-classifier** — because residue-subtyping is subtle philosophical judgment, and because a careless classifier would corrupt the falsification metric itself, silently, in the flattering direction. The instrument that measures the wager must not be built casually.\n\nBoth also sit downstream of a sequencing decision, recorded in §4.\n\n## 1. The Argument-from-Weighing scheme, from scratch\n\nThe extraction pipeline classifies arguments into *schemes* — recurring reasoning shapes, from Walton's catalogue, like \"argument from expert opinion\" or \"argument from consequences.\" Each scheme carries *critical questions* (CQs): the standard ways that shape of reasoning fails. For expert opinion: is the expert in the right field? Do other experts disagree? When the pipeline detects a scheme, it generates that scheme's CQs as attached claims — sorry-markers inviting answers. This is what makes decomposition systematic rather than ad hoc.\n\nThe gap: **there is no scheme for weighing arguments** — \"liberty outweighs safety here,\" \"the benefits justify the costs,\" \"my child's needs come first.\" Today those get filed under generic schemes, and the questions that actually open a weighing never get asked. Which means the central move validated by the July 2026 research — ask *\"what exactly is being weighed against what?\"* and watch the scalar weight split into compressed empirical beliefs, a risk posture, a scope choice, an aggregation rule, and (sometimes) a typed residue — never happens automatically. The graph cannot reach typed residues on its own, because the road to the bottom is not paved.\n\nThe scheme is that paving. As sketched in [value-weighting-decomposition.md §d](value-weighting-decomposition.md): premises *Option A promotes value V1; option B promotes value V2; V1 outweighs V2 in context C*; conclusion *prefer A*. The weighting premise is auto-flagged as a candidate mother claim and receives eight CQs — covering value (outweighs *with respect to what*?), compression check (is this weight a compressed empirical belief?), elicitation stability (does it survive re-description?), risk posture, scope, re-typing (is this a side-constraint wearing a weight's clothes?), specification (can where/when/unless clauses dissolve the conflict?), and residue typing (if something remains, classify it: fittingness / structural / axiom-choice / permissive-zone). In QBAF terms, residue nodes become a distinguished species of sorry marker whose strength propagates transitively to the mother claim.\n\n### Root question 1 (founder's): when the system spots a weighing, does it decompose by default, or invite decomposition?\n\nThe decision space:\n\n| Option | What it gives | What it costs |\n|---|---|---|\n| **Auto-decompose at extraction** | Maximal acid; the graph reaches toward residues without waiting for a human; atomicity improves systematically | Eight more CQs per weighing on pages where CQ scaffolding already visually dominates; and the taboo-tradeoff research warns that uninvited decomposition of sacred values is *experienced as desecration* |\n| **Invite only** (\"this looks like a weighing — want to open it?\") | Cleaner graph; honors capture-immediately-publish-deliberately; matches the research's own design consequence — *\"make weighting-decomposition an invitation, not an ambush\"* | The acid waits for a human; on a sparse graph, residues may never be reached |\n| **Split by provenance** (predicted) | Auto-decompose weighings in *source* texts — analyzing an article is analysis, nobody's own sacred value is personally on the table; *invite* on user-authored input, where the weigher is present and the desecration risk is real | Two code paths; the provenance inference must be right (the authored-vs-source distinction already exists in the pipeline) |\n| **Auto with a sacredness brake** (refinement) | Auto by default, but protected-value markers (quantity insensitivity, outrage language, tradeoff denial — the CQ6 triggers) downgrade that weighing to invitation-only | The brake is itself a classifier that can err in both directions |\n\nThe prediction, held lightly: the provenance split, possibly with the sacredness brake layered on. Whatever the choice, three constraints from the research are treated as settled design inputs rather than open questions: never present scalar-pricing prompts (\"how many X is one Y worth?\"); frame decomposition in specification language (\"what does honoring this value require here?\"); keep \"analyzing this argument\" visibly distinct from \"endorsing this tradeoff.\"\n\n**RESOLVED (July 6, 2026)**: the founder ratified exactly this — provenance split WITH the sacredness brake. Shipped in `deliberus/weighing.py`: deterministic lexical detection (no extraction-prompt changes — the Apr-1 outage class stays untouched; a miss costs only an un-flagged invitation since any claim can be opened explicitly), CQ1–8 instantiated claim-level via the existing `store_questions_and_cqs` machinery, `weighing_state` ∈ {opened, invited, invited_sacred} on the claim. Source-provenance weighings auto-open; authored input and sacred-marker weighings get invitations (`POST /claims/{id}/weighing/open` accepts them). The three settled constraints above are enforced by a test (`test_no_scalar_pricing_language`). First corpus backfill found 4 weighings across the vdH/ACLU extractions — all plain, all opened, including the justice-vs-equality claim whose hand-walked descent motivated the scheme.\n\n## 2. The terminus LLM classifier, from scratch\n\nWhen a decomposition branch stops — a leaf claim with no children — the honest question is: *why did it stop?* Because the disagreement dissolved (semantic)? Because it reduces to a checkable factual question (empirical)? Because nobody has decomposed further yet (open sorry)? Or because it hit one of the four typed residues the research identified — a fittingness posit, a structural question, an axiom choice under proven impossibility, a permissive-zone commitment?\n\nThe deterministic suggester that shipped in July makes only the easy calls: a leaf typed `empirical` suggests \"resolves to a factual question\" (confidence 0.8); a claim with children is not a terminus at all; and — deliberately — **a leaf value premise gets routed to review rather than guessed at**, because telling a fittingness claim from a permissive-zone commitment requires reading the claim and understanding what *kind* of bottom it is. That is judgment work: an LLM pass (or a human) reads the flagged leaf in its subgraph context and proposes one of the four residue types with visible reasoning.\n\nWhy this matters more than it looks: those verdicts feed the **residue map** — the corpus-wide falsification metric for the convergence wager (\"is the typed residue a small minority of classified termini?\"). And that is exactly the danger. The red team's most underappreciated hole is convergence-illusion via LLM mediation: a sycophantic or blandness-biased classifier that over-types leaves as \"dissolved\" or \"empirical\" would quietly fake a low residue fraction — corrupting the instrument in precisely the direction the platform hopes to see. The classifier must be built under the standing rule that counter-instruments retain the power to falsify the wager; a classifier that can only confirm is decoration.\n\n### Root question 2 (founder's): is a terminus verdict *metadata* on a claim, or itself a *claim in the graph*?\n\nThis is upstream of every authority question about the classifier:\n\n| Option | What it gives | What it costs |\n|---|---|---|\n| **Verdict as metadata** (current implementation: `terminus_type` property, set via endpoint) | Cheap, clean, queryable; the residue map reads it directly | Someone must be trusted to set it; the LLM's philosophical judgment becomes an unchallengeable stamp unless a separate confirmation flow is built |\n| **Verdict as claim** | No-Copout-Axioms applied to the system's own judgments: \"this branch bottoms out in a fittingness posit\" becomes an attackable, decomposable, vote-able node; the LLM classifier becomes just another contributor whose verdicts get scrutinized by the graph's normal machinery; the authority question dissolves | More machinery: verdict-claims need rendering, aggregation into the residue map, and guardrails against verdict-claims about verdict-claims regressing absurdly |\n| **Hybrid** | Metadata as the *cache* of the currently-standing verdict; a linked verdict-claim as its *challengeable ground*; the residue map reads the cache, the cache follows the claim | Both machineries, but each doing what it is good at |\n\nThe prediction, held lightly: verdict-as-claim in some form (likely the hybrid), because it is the self-similar-decomposition principle made literal — the system's own judgments are \"currently undecomposed,\" not permanently authoritative — and because the graph-native answer to the epistemic-circularity problem (\"put the scoring norms in the graph as challengeable claims\") points the same direction. Until decided, the classifier ships propose-only: suggestions marked unconfirmed, never auto-committed.\n\n**RESOLVED (July 6, 2026)**: the founder ratified the hybrid. Shipped: `set_terminus_with_ground` mints a verdict-claim (`claim_kind='human'`, `argument_label='terminus_verdict'`, attributed to the confirming user) linked to its subject via a `CLASSIFIES_TERMINUS` edge, then updates the metadata cache *including a pointer to its ground* (`terminus_verdict_claim`). Re-classification mints a NEW verdict claim — deprecation over deletion. The residue map reads the cache; anyone who disputes a verdict attacks the verdict-claim like any other claim (the agent surface says so explicitly: \"attack it if you think this branch decomposes further\"). The LLM classifier shipped propose-only exactly as specified in §3: `POST /claims/{id}/terminus/classify` stores `terminus_llm_*` proposal fields that never touch the cache, with first-class `undecided`. First live run: the classifier read the graph's first hand-typed terminus (culpability-makes-punishment-fitting) blind and proposed `fittingness` at confidence 1.00 — one calibration point, not validation, but the right first data point. Verdict ground for that leaf: `claim_d0834380b7c3`.\n\n## 3. What the classifier must look like regardless of root question 2\n\nConstraints that hold under every answer, recorded so they are not re-derived: frontier-grade model, never a cheap one (verdicts drive the falsification metric — quality dominates token cost); visible reasoning attached to every proposal; explicit *undecided* as a first-class output (forcing a type is exactly the failure mode); calibration audited against the hand-typed cases as they accumulate; and the classifier's own prompt treated as an arguable artifact, versioned and inspectable.\n\n## 4. Sequencing: dogfood first, build second\n\n**Status update (July 6, same day): the baseline ran, and the prediction held.** Dogfood run 1 extracted the van den Haag / Bedau opposing pair, hand-walked the weighing decomposition to a fittingness residue (the graph's first classified terminus), and confirmed that the decomposition road does not exist at extraction time — see [dogfood-run-1-friction-log.md](dogfood-run-1-friction-log.md) for the full findings. Both instruments below are now justified by observed friction rather than spec; both root questions remain open.\n\nThe decided order (July 6): run the first real dogfood — filling the graph with substantive topics, per the substance-over-meta testing philosophy — **before** building either instrument. Rationale: the standing prediction is that decomposition on real material stalls at `open_sorry`, well short of typed residues, precisely because the weighing scheme does not exist yet. Running the baseline first (a) tests that prediction instead of assuming it, (b) produces the friction log that lets the scheme be built from observed pain rather than spec, per the project's pain-point-driven iteration principle, and (c) gives the terminus classifier its first hand-typed calibration cases. Instruments built after contact with reality; both root questions above are answerable in parallel with the dogfood, and neither blocks it.\n\n---\n\n**Post-ship field data (Jul 7–8, dogfood run 2)**: the deterministic detector's register ceiling is now empirically mapped — it catches moral-philosophy dialect (\"outweigh\"), learned the policy dialect mid-run (\"net benefits\", G1 fix), and cannot catch rights-advocacy dialect by construction (its value conflicts are carried implicitly; ground-truthed against both assisted-dying sources). The semantic detection tier this doc anticipated is therefore the documented next step, with a concrete trigger heuristic: a text yielding value premises but zero lexical weighings should get an LLM pass asking whether an implicit weighing structures the argument. The classifier is 2-for-2 on blind reads in opposite directions (fittingness; an empirical demotion). Details: [dogfood-run-2-orthogonal-experiments.md](dogfood-run-2-orthogonal-experiments.md).\n\n*Design reasoning recorded 2026-07-06, ahead of the first residue-experiment dogfood run; both root questions resolved by the founder and shipped the same day. The predictions in this doc were ratified verbatim — a calibration data point for the predict-from-priors practice as much as for the platform.*\n\n---\n\n**Founder questioning opened (Jul 10, 2026; recorded as deliberation, NOT a decision).** After the second-wave red team converged on the sacredness brake from three independent directions (a self-declared immunity gradient; UX politeness without taxonomy representation; a code-verified contradiction where the completeness oracle publicly flags braked value premises as unsupported \"copout axioms\" while blind to `weighing_state`), the founder opened the brake's ratified standing, stating the psychological case directly: people often regard something as sacred because of the safety obtained by *halting further thought*, so sacredness-language frequently marks arrested inquiry rather than genuine bedrock, and a religiously-adhered brake would make the platform inherit humanity's premature stopping. The measurement consequence is real: if decomposition effort is systematically withheld exactly where discomfort peaks, the residue map overestimates irreducibility in sacred territory. The empirical literature leans the founder's way (Tetlock's own sacred-vs-PSEUDO-sacred distinction; Baron's protected-values quantity-insensitivity; Lifton's thought-terminating cliche).\n\nThe candidate re-scope on the table, awaiting ratification: (1) the brake is **consent-and-timing, never epistemic exemption** — it defers WHO opens a descent and WHEN, never WHETHER (this also resolves the depth.md \"never accept unexamined premises\" contradiction on the acid's side); (2) the completeness oracle **keeps flagging braked nodes with a differentiated voice** — \"undecomposed by choice, examination declined, N invitations outstanding\" — so the stop stays legible as a stop instead of disguised as a bottom (this FLIPS the fix direction the red-team synthesis initially assumed, which was to silence the flag); (3) **declined-descent is a lifecycle state, never a terminus or residue type**; (4) any future hinge/bedrock residue type requires an **effort certificate** (the moves-tried metadata), so hinge-typing cannot launder dogma; (5) the brake becomes a data-generating instrument: the **pseudo-sacred fraction** (flagged nodes later opened by their holders, and what the descents found) is measurable, turning \"sacredness is overrated\" into a falsifiable platform prediction alongside the convergence wager.\n\nThe counterweight, also recorded: Tetlock's taboo-tradeoff research shows uninvited dissection produces entrenchment and moral cleansing, not decomposition, so the brake-as-sequencing may maximize *eventual* decomposition better than acid-now — the attunement pole applied at the descent moment. And the current lexical detector (absolutes, tradeoff-denial) is, on the founder's psychology, a *dogma detector* being used as a *protection trigger*: the same marker could route to gentle-attention-plus-high-decomposition-priority instead of protection. Cross-agent context: [red-team-synthesis-2026-07.md](red-team-synthesis-2026-07.md).*\n\n**Worked answer to the brake question (Jul 10, from the deep-descent experiment).** The bedrock-versus-arrested-inquiry question got a concrete specimen. Hand-descending \"physical pain is bad\" reaches the extracted claim \"the badness is not a further fact beyond how it feels,\" which can be read two ways: said early it is a thought-terminating cliche (the exact failure the founder worries a religiously-adhered brake would inherit), said after the functional, representational, and physicalist decompositions have each been tried and found wanting it is a hard-won terminus. **The only thing distinguishing the two is the record of moves tried.** This is the concrete case for the effort-certificate proposal: a bedrock or hinge verdict is honest only if it carries the record of the decompositions attempted and found wanting, or it is indistinguishable from a refusal to think. Moves-tried metadata is therefore not optional bookkeeping; it is the mechanism that lets the platform tell genuine bedrock from premature stopping, which is the whole point of the brake re-scope. Full descent: [deep-descent-experiment.md](deep-descent-experiment.md).*\n\n\n## Addendum 2026-08-20 — the contextual exit, ruled, and the push for contextual structure\n\nPrompted by Heylighen's vicarious-selector argument ([heylighen-value-complexity-and-deliberus.md](heylighen-value-complexity-and-deliberus.md) §3.1): for many real weighings no stable general weights exist, so the CQ1–8 descent needs \"this weighing is contextual\" as an honest first-class exit (= the fittingness residue), not a failure to answer. Founder ruling, three parts:\n\n1. **Priors may propose the contextual exit.** The earned-by-exhaustion guard (moves-tried record, as for sacredness) is the *certification* path, but it is not the only entry: when priors say a weighing is probably contextual, marking it so is legitimate practical wisdom — propose-only, like every machine judgment on contested ground. Verbatim: *\"Not that I'm against letting it be marked contextual … when our priors tell us something probably is.\"*\n2. **The wisdom lives in the prompts.** This judgment — when to press for a general rule, when to propose the contextual exit — must be woven into the prompting of LLM calls at their different levels and situations (extraction passes, the terminus classifier, decomposition guidance, synthesis). The prompt layer is a carrier of the project's practical wisdom, not just format instructions. Verbatim: *\"This needs to be a part of the practical wisdom of Deliberus, woven into its prompting for LLM calls at different levels and in different situations.\"*\n3. **The exit is an entrance: push for the contextual weighing structure.** \"It's contextual\" is not where the descent stops — it is where it changes object. When a weighing cannot be reduced to a general rule, the next move is articulating the *situated structure*: which factors dominate in which situations, what shifts the ranking, where the boundaries run. The representation goal shifts from a scalar weight to a mapping from situations to rankings — allowing complexity to be represented, which Deliberus should be (or get) good at. Verbatim: *\"to allow complexity to be represented, which Deliberus SHOULD be good at - or get good at.\"* This is the weighing-layer instance of the general principle: decompose along an axis when someone contests along it — here the contested axis is the *context-dependence itself*.\n\n**Terminology note**: \"fittingness\" stays as the internal residue-type name (it carries the philosophical lineage — Chang, particularism — and names *why* the weighing resists generalization); \"contextual\" is the candidate beginner-readable display word (per the beginner-readable-first-layer directive: internal vocabulary never leads on user surfaces). Same object, two registers.\n"}